Gestalt Selectors List

Apple System Software (S)

This chapter lists selector codes of which the meaning is documented and the first character of the selector code is a S.

safe (System? [>9.0?])
     gestaltSafeOFAttr
     Returns information of ???.

     enum {
     #define gestaltSafeOFAttr 'safe'
     gestaltVMZerosPagesBit                 = 0,
     gestaltInitHeapZerosOutHeapsBit        = 1,
     gestaltNewHandleReturnsZeroedMemoryBit = 2,
     gestaltNewPtrReturnsZeroedMemoryBit    = 3,
     gestaltFileAllocationZeroedBlocksBit   = 4};

sccr (System [6.0.4, discontinued]) &AS04
     gestaltSCCReadAddr
     Returns the address of SCC read ports.

     #define gestaltSCCReadAddr 'sccr' /* SCC read ports address */

sccw (System [6.0.4, discontinued]) &AS04
     gestaltSCCWriteAddr
     Returns the address of SCC write ports.

     #define gestaltSCCWriteAddr 'sccw' /* SCC write ports address */

scr# (System [6.0.4])
     gestaltScriptCount
     Returns the number of script systems currently active.

     #define gestaltScriptCount 'scr#' /* number of active scripts */

scra (Macintosh Easy Open cp [1.0]) &AD03
     gestaltScrapMgrAttr
     Returns information about the Scrap Manager.

     enum {
     #define gestaltScrapMgrAttr 'scra'; /* Scrap Mgr attributes */
     gestaltScrapMgrTranslationAware = 0};

scri (System [6.0.4])
     gestaltScriptMgrVersion
     Returns the version number of the Script Manager as BCD.

     #define gestaltScriptMgrVersion 'scri' /* Script Mgr version */

     ======================================================================
     Version numbers for the Script Manager
     ======================================================================
     System Version       Script Mgr           Script Mgr          Version
                          (older ROMs)+        (newer ROMs)        format
     ----------------------------------------------------------------------
     6.0.3 and earlier    <= 0x20F             N.A.                binary
     6.0.4 Roman          0x211                0x215                  "
     6.0.4 non-Roman      0x212                0x216                  "
     6.0.5                0x213                0x217 (=2.23)          "

     6.0.7                0x230                0x231                BCD
     J-6.0.7.1            0x230                0x231                 "
     6.0.8                0x230                0x231                 "
     6.1 non-Roman        0x240                0x241                 "
     7.0                  0x700                0x700                 "
     7.0.1 Roman          0x701                0x701                 "
     7.0.1 non-Roman      0x701                0x701                 "
     7.1                  0x710                0x710                 "
     7.5                  0x720                0x720                 "
     7.5.1...7.5.3        0x750                0x750                 "

     8.0                  -                    0x750                 "
     8.1                  -                    0x810                 "
     8.2                  -                    0x820                 "
     8.5...8.5.1          -                    0x850                 "
     8.6                  -                    0x860                 "

     + Plus,SE,II,IIx,IIcx,SE/30,Classic
     ----------------------------------------------------------------------
     (Original source: Inside Macintosh Text, p. 6-9;
      Info on System 7.5 and later based on observations.)

scsi (System [7.1.2?])
     (SCSI Manager ext [4.3])
     gestaltSCSI &AT07
     Returns information about the SCSI Manager.

     enum {
     #define gestaltSCSI 'scsi' /* SCSI Manager attributes */
     gestaltAsyncSCSI      = 0,  /* Supports asynchronous SCSI */
     gestaltAsyncSCSIINROM = 1,  /* Async SCSI is in ROM (available for
                                    booting) */
     gestaltSCSISlotBoot   = 2,  /* ROM supports Slot-style PRAM for
                                    SCSI boots */
     gestaltSCSIPollSIH    = 3}; /* SCSI Manager will poll for interrupts
                                    if Secondary Interrupts are busy.
                                    &AS29 */

sdev (Control Strip cp [1.0])
     gestaltControlStripAttr
     Returns information about the Control Strip software.

     enum {
     #define gestaltControlStripAttr 'sdev'
     gestaltControlStripExists       = 0, /* TRUE = control strip is
                                               installed */
     gestaltControlStripVersionFixed = 1, /* version of Control Strip
                                              installs 'csvr' selector
                                              instead of 'sdvr' &AS11 */
     gestaltControlStripUserFont     = 2, /* supports user-selectable
                                              font/size &AS20 */
     gestaltControlStripUserHotKey   = 3, /* support user-selectable hot
                                              key to show/hide the
                                              window &AS20 */
     gestalt???                      = 4, /* unknown, CS 2.0 Mac OS 8.5 */
     gestalt???                      = 5, /* unknown, CS 2.0 Mac OS 8.5 */
     gestalt???                      = 6};/* unknown, CS 2.0 Mac OS 8.5 */

     NOTE:
     A file 'IsControlStrip.c' included with the Apple Guide Authoring Kit
     defines this selector as:
       #define gestaltStatusBarAttr 'sdev'
       #define gestaltStatusBarExists 0
     (Rene Ros)

sdvr (PowerTalk ext [1.0?], part of PowerTalk)
     gestaltSDPStandardDirectoryVersion
     Returns the SDP Standard Directory version as INTEGER. Returns zero if
     not present and available.

     #define gestaltSDPStandardDirectoryVersion 'sdvr'
                                       /* SDP Standard Directory version */

     WARNING:
     The same selector code is used by the Control Strip 1.0 control panel.
     See the gestaltControlStripVersion ('csvr') selector entry above.

ser  (System [6.0.8?])
     gestaltSerialAttr
     Returns information about the serial hardware of the machine.

     enum {
     #define gestaltSerialAttr 'ser ' /* serial hardware attributes */
     gestaltGPIaToDCDa  = 0,
     gestaltGPIaToRTxCa = 1,
     gestaltGPIaToDCDb  = 2,
     gestaltHidePortA   = 3,  /* Modem port (A) should be hidden
                                 from users */
     gestaltHidePortB   = 4}; /* Printer port (B) should be hidden
                                 from users */

shut (System? [7.6?])
     gestaltShutdownAttributes
     Returns information about the ShutDown Manager.

     enum {
     #define gestaltShutdownAttributes 'shut'
                                          /* ShutDown Manager Attributes */
     gestaltShutdownHassdOnBootVolUnmount = 0,  /* True if ShutDown Manager
                                                   unmounts boot & VM
                                                   volume at shutdown
                                                   time. &AS28 */
     gestalt???                           = 1}; /* unknown, Mac OS 8 */

slmp (Shared Library Manager? ext [2.0])
     (System? [7.5.2?)
     gestaltASLMPPC &AS17

     NOTE:
     See the gestaltASLM68K ('aslm') entry for more information.

slot (System [6.0.4, 6.0.5, discontinued])
     gestaltSlotAttr
     Returns information about the Slot Manager.

     enum {
     #define gestaltSlotAttr 'slot' /* Slot Mgr attributes */
     gestaltSlotMgrExists       = 0,
     gestaltNuBusPresent        = 1,
     gestaltSESlotPresent       = 2,
     gestaltSE30SlotPresent     = 3,
     gestaltPortableSlotPresent = 4};

slt1 (System [6.0.4, 6.0.5, discontinued])
     gestaltFirstSlotNumber
     Returns first slot number.

     #define gestaltFirstSlotNumber 'slt1' /* First Slot number */

sltc (System [6.0.8?])
     gestaltNuBusConnectors
     Returns information about the NuBus slot connector locations. The
     value returned is a bitmap. If bits 9 to E are set, there are six
     slots present with locations 9 to E.

     #define gestaltNuBusConnectors 'sltc' /* NuBus connector bitmap */

     NOTE:
     This selector does not return information about the PDS slot (with
     or without NuBus adapter). Also, it is unknown if this selector also
     includes slot 0x8 which was added with the Power Macintosh 8100/110.
     (John Mancino)

     On Motorola Starmax it returns 0x0000FFFF. Does it have NuBus slots???

snd  (System [6.0.4])
     gestaltSoundAttr
     Returns information about the sound capabilities of the machine.

     enum {
     #define gestaltSoundAttr 'snd '   /* sound attributes */
     gestaltStereoCapability    =  0,  /* can play stereo sounds */
     gestaltStereoMixing        =  1,  /* mixes channels into single
                                           signal */
     gestaltSoundReserved       =  2,  /* Sound Manager 3.1? QT uses new
                                           Sound Mgr calls? */
     gestaltSoundIOMgrPresent   =  3,  /* new sound input routines avail.*/
     gestaltBuiltInSoundInput   =  4,  /* built-in sound input device
                                           available */
     gestaltHasSoundInputDevice =  5,  /* some sound input device avail. */
     gestaltPlayAndRecord       =  6,  /* built-in hardware can play and
                                           record simultaneously
                                           &AS03/AS04 */
     gestalt16BitSoundIO        =  7,  /* sound hardware can play and
                                           record 16-bit samples &AS04 */
     gestaltStereoInput         =  8,  /* sound hardware can record
                                           stereo &AS04 */
     gestaltLineLevelInput      =  9,  /* sound input port requires line
                                           level &AS04 */
     /* the following bits are not defined prior to Sound Mgr 3.0 */
     gestaltSndPlayDoubleBuffer = 10,  /* play from disk available &AS04 */
     gestaltMultiChannels       = 11,  /* multiple channel support
                                           &AS03/AS04 */
     gestalt16BitAudioSupport   = 12}; /* 16 bit audio data supported
                                           &AS04 */

     NOTES:
     Bit 7 through 12 are not defined for versions of the Sound Manager
     prior to version 3.0.

     With the Enhanced Sound Manager (version 2) you have both multi-
     channel and play-from-disk capability if the Apple Sound Chip is
     available. But the gestaltSndPlayDoubleBuffer and gestaltMultiChannels
     bits are not set. Test for the gestaltHasASC bit of the
     gestaltHardwareAttr selector. &AD06/AD20
     A later Technical Note retracts this info, and says it is not safe to
     assume both functions if the gestaltHasASC bit is set with the
     gestaltHardwareAttr selector! &AT01

     There are sound hardware differences among these four classes of
     machines: the Power Macintosh 5200/5300/6200/6300 computers. Just
     because these are Power Mac machines, you should not assume that all
     contain 16-bit input and output hardware. For example, the Macintosh
     Performa 5215CD contains both 16-bit input and output hardware.
     However, if you [use this selector] on that particular machine, it
     returns gestalt16BitSoundIO not set (i.e. false), this is incorrect.
     You should instead check [with the Sound Manager] the available sample
     sizes by using the siSampleSizeAvailable selector. &AT16

snhw (System [7.5])
     (Sound Manager ext [3.0])
     gestaltSoundHardware
     Returns type of hardware used for sound?

     #define gestaltSoundHardware 'snhw' /* Sound Hardware */
     #define gestaltASC           'asc ' /* ASC */
     #define gestaltAwacs?        'awac' /* returned on PowerMac */
     #define gestaltGCAwacs?      'awgc' /* returned on PM 7200, PM 8500
                                             and PM 9500 with System
                                             7.5.2 */
     #define gestaltBlueSound?    'bsnd' /* Mac OS 8.0 in Blue Box */
     #define gestaltClassicSound  'clas' /* Classic Mac? */
     #define gestaltDSP           'dsp ' /* DSP */
     #define gestaltCHRPSound?    'sbls' /* Mac OS 7.6 on CHRP */
     #define gestaltSinger?       'sing' /* returned on PB 540c */
     #define gestaltSinger2?      'sng2' /* returned on PB 190cs and
                                             PB 5300 */
     #define gestaltWhitney?      'whit' /* returned on Performa 5300 */

     NOTE:
     The SoundComponents.h header file from ETO #18 lists the following
     values, possibly also return values for this selector? (Anonymous)

     kClassicSubType  'clas' /* classic hardware, i.e. Mac Plus */
     kASCSubType      'asc ' /* Apple Sound Chip device */
     kDSPSubType      'dsp ' /* DSP device */
     kAwacsSubType    'awac' /* Another of Will's Audio Chips device*/
     kGCAwacsSubType  'awgc' /* Awacs audio with Grand Central DMA */
     kSingerSubType   'sing' /* Singer (via Whitney) based sound */
     kSinger2SubType  'sng2' /* Singer 2 (via Whitney) for Acme */

spos (System? [8.5])
     gestaltSplitOSAttr &AS29
     Returns information about a Split OS situation.

     enum {
     #define gestaltSplitOSAttr 'spos'
     gestaltSplitOSBootDriveIsNetworkVolume = 0,
          /* the boot disk is a network 'disk', from the .LANDisk drive. */
     gestaltSplitOSAware = 1, /* the system includes the code to deal with
                                 a split OS situation. */
     gestaltSplitOSEnablerVolumeIsDifferentFromBootVolume = 2};
       /* the active enabler is on different volume than the system file.*/
     gestaltSplitOSMachineNameSetToNetworkNameTemp = 3
              /* Machine name was set to the value from the BootP server */

spsl (PowerTalk ext [1.0?], part of PowerTalk)
     gestaltSMPSPSendLetterVersion
     Returns the SMP SendLetter version as INTEGER. Returns zero if not
     present and available.

     #define gestaltSMPSPSendLetterVersion 'spsl' /* SMP Sendletter
                                                      version */

stdf (System [7.0])
     (Macintosh Easy Open cp [1.0?-1.1.2?])
     (Mac OS Easy Open cp [1.1.3])
     gestaltStandardFileAttr
     Returns information about the Standard File Package.

     enum {
     #define gestaltStandardFileAttr 'stdf' /* Standard File attr. */
     gestaltStandardFile58               = 0, /* StandardPutFile,
                                                  StandardGetFile,
                                                  CustomPutFile and
                                                  CustomGetFile are
                                                  available. */
     gestaltStandardFileTranslationAware = 1, /* &AD03/AS04 */
     gestaltStandardFileHasColorIcons    = 2, /* &AD03/AS04/AS05 */
     gestaltStandardFileUseGenericIcons  = 3, /* force the LDEF to use
                                                  only the system
                                                  generic icons &AT06 */
     gestaltStandardFileHasDynamicVolumeAllocation = 4};
                                              /* supports more than 20
                                                  volumes &AT06 */

sysa (System [7.1.2?]) &AS04
     gestaltSysArchitecture
     Returns one of the following values, indicating the type of
     architecture on which the application is currently running.

     enum {
     #define gestaltSysArchitecture 'sysa' /* System Architecture type */
     gestalt68k     = 1,
     gestaltPowerPC = 2};

sysu (System Update enbl [7.5 upd 2.0s3]) INF?
     (System [7.5.5])
     gestaltSystemUpdateVersion? &AS22
     Returns the System Update version as NumVersion.

     #define gestaltSystemUpdateVersion? 'sysu'

     ======================================================================
     Version numbers for the different updates and updated Mac OS versions
     ======================================================================
     System Version       Full     Updater From    Remark
     ----------------------------------------------------------------------
     System 7.5.3 Rev. 2  N/A      2.0.3
     System 7.5.4         N/A      2.0.5           beta 'Son of Buster'
     System 7.5.5         0        2.0.6   7.5.x   &AT16
     Mac OS 7.6           0        N/A
     Mac OS 7.6           ???      2.0     7.6     on PB3400c/180
     Mac OS 7.6.1         ???      1.0             alpha 'Ides Of Buster'
     Mac OS 7.7           0        N/A             beta 'Tempo' -> 8.0
     Mac OS 8.0           0?
     Mac OS 9.0           1.0
     ----------------------------------------------------------------------

sysv (System [6.0.4]) INF
     gestaltSystemVersion
     Returns the version number of the currently active System file as BCD.

     #define gestaltSystemVersion 'sysv'  /* System file version */

     NOTES:
     In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
     versions return 0x0606. See the 'osyv' selector.
     System J-6.0.7.1 returns 0x0609

     System 6.0.8 returns 0x0607 because only the printer drivers were
     added. You can't determine if it is actually 6.0.8 in another way.

     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.

     System 7.1.2 (for Power Macintosh) apparently returns an incorrect
     version number (0x0710) when in 68K mode with a PPC Upgrade card.
     (Rick Gansler)

     System 7.5 Update 1.0 makes this selector return 0x751. (Anonymous)

     To determine the system update version, use the 'sysu' selector.