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.