Apple System Software (C-D)
This chapter lists selector codes of which the meaning is documented and
the first character of the selector code is in the C-D range.
cash (System [???]) &S03
gestaltRAMCacheSize
Returns byte-size of physical RAM allocated to Disk Cache.
0 = Disk Cache Off
#define gestaltRAMCacheSize 'cash' /* RAM cache size */
NOTE:
This selector is listed in THINK Reference 1.0 but it is unknown which
System Software version should install it.
cfrg (System [7.1.2? on PowerMac])
(CFM68K ext [1.0a1], part of OpenDoc)
gestaltCFMAttr
Returns information about the Code Fragment Manager.
enum {
#define gestaltCFMAttr 'cfrg' /* Code Fragment Mgr attributes */
gestaltCFMPresent = 0, /* Code Fragment Manager present */
gestaltCFMPresentMask = 0x0001,
gestaltCFM99Present = 2, /* The CFM-99 features are */
gestaltCFM99PresentMask = 0x0004}; /* present. */
cmnu (Contextual Menu Extension? ext [1.0?] part of Mac OS 8.0)
gestaltContextualMenuAttr
Returns information about the Contextual Menu capabilities?
enum {
#define gestaltContextualMenuAttr 'cmnu'
gestaltContextualMenuPresent = 0, /* also seen next constant: */
gestaltContextualMenuUnusedBit = 0,
gestaltContextualMenuTrapAvailable = 1};
cmta (ColorSync ext [1.0.4?]
gestaltColorMatchingAttr &AD09
Returns information about the ColorSync Utilities?
enum {
#define gestaltColorMatchingAttr 'cmta' /* Color Matching Attr. */
gestaltHighLevelMatching = 0, /* BeginMatching &
DrawMatchedPicture present */
gestaltColorMatchingLibLoaded = 1}; /* Native PowerPC shared library
is loaded. a.k.a.
gestaltSharedLibLoaded? */
cmtc (ColorSync ext [1.0?])
gestaltColorMatchingVersion
Returns the version of the Color Matching software as BCD.
enum {
#define gestaltColorMatchingVersion 'cmtc' /* Color Matching
version */
gestaltColorSync10 = 0x0100, /* &AD09 */
gestaltColorSync11 = 0x0110, /* &AD09 */
gestaltColorSync104 = 0x0104, /* &AD09 */
gestaltColorSync105 = 0x0105, /* &AD09 */
gestaltColorSync20 = 0x0200, /* &AD17/AD21 */
gestaltColorSync21 = 0x0210,
gestaltColorSync211 = 0x0211,
gestaltColorSync212 = 0x0212,
gestaltColorSync213 = 0x0213,
gestaltColorSync25 = 0x0250,
gestaltColorSync251 = 0x0251, /* observed */
gestaltColorSync26 = 0x0260,
gestaltColorSync261 = 0x0261,
gestaltColorSync30 = 0x0300};
NOTE:
ColorSync 1.0 returns gestaltColorSync10 for the version of the
utilities that work with System 6.0.7. And gestaltColorSync11 is
returned by the version that works with System 7.0 and later.
From version 1.0.4 up the correct version is returned. &AD17
cntl (System? [8.5?])
gestaltControlMgrAttr
Returns information about the Allegro Control Manager 2.0.
enum {
#define gestaltControlMgrAttr 'cntl'
gestaltControlMgrPresent = (1L << 0)}; /* version 2.0 present */
conn (System [7.0])
gestaltConnMgrAttr
Returns information about the Connection Manager.
enum {
#define gestaltConnMgrAttr 'conn' /* Conn. Mgr attributes */
gestaltConnMgrPresent = 0, /* Connection Mgr is present */
gestaltConnMgrCMSearchFix = 1, /* fix for CMAddSearch present */
gestaltConnMgrErrorString = 2, /* has CMGetErrorString &AS02 */
gestaltConnMgrMultiAsyncIO = 3}; /* CMNewsIOPB,CMDisposeIOPB,
CMPBRead,CMPBWrite,CMPBIOKill
&AS02 */
NOTE:
Not installed by Communications Toolbox for System 6.
cpkr (Color Picker ext [2.0?])
gestaltColorPicker
gestaltColorPickerVersion
Returns Color Picker version as BCD.
/* ColorPicker Mgr version */
#define gestaltColorPicker 'cpkr'
#define gestaltColorPickerVersion 'cpkr'
NOTE:
Version 2.0a4 returns as response 0x0001, but version 2.0a5 and
later (including 2.0f) return 0x0100. (Rene Ros)
cpnt (System [7.1])
(Color Picker Extension ext [2.0])
(Color Sync ext [1.0.4?])
(Macintosh Easy Open cp [1.0?-1.1.2?])
(Mac OS Easy Open cp [1.1.3])
(QuickTime ext [1.0])
(Speech Manager ext [1.1.1, not 1.2?])
gestaltComponentMgr
Returns Component Manager version as INTEGER.
#define gestaltComponentMgr 'cpnt' /* Component Mgr version &AS01 */
cpuf (System [8.0])
gestaltNativeCPUfamily &AD35
Return a value that indicates the CPU family of the current PowerPC
processor.
This selector returns the same values as the gestaltNativeCPUtype
('cput'), but it does not distinguish between variants within the same
processor family. It allows developers to test for the presence of
particular family-specific PowerPC processor features without having
to know all of the members of a CPU family.
#define gestaltNativeCPUfamily 'cpuf' /* Native CPU family */
======================================================================
Returned values for the CPU type and family for the PowerPC CPUs
======================================================================
PowerPC gestaltNativeCPUfamily gestaltNativeCPUtype
Processor (since Mac OS 8) (since System 7.5)
----------------------------------------------------------------------
601 gestaltCPU601 gestaltCPU601
603 gestaltCPU603 gestaltCPU603
603e gestaltCPU603 gestaltCPU603e
603ev gestaltCPU603 gestaltCPU603ev
604 gestaltCPU604 gestaltCPU604
604e gestaltCPU604 gestaltCPU604e
750 gestaltCPU750? gestaltCPU750?
----------------------------------------------------------------------
cput (System [7.1.2?]) &AS04/AS05
gestaltNativeCPUtype
Returns a value that indicates the type of native processor that is
currently running.
enum {
#define gestaltNativeCPUtype 'cput' /* Native CPU type */
/* Motorola Architecture */
gestaltCPU68000 = 0,
gestaltCPU68010 = 1,
gestaltCPU68020 = 2,
gestaltCPU68030 = 3,
gestaltCPU68040 = 4,
/* PowerPC Architecture */
gestaltCPU601 = 0x101,
gestaltCPU603 = 0x103,
gestaltCPU604 = 0x104,
gestaltCPU603e = 0x106, /* 3.3 Volt 603 with 16K caches &AS22 */
gestaltCPU603ev = 0x107, /* 2.5 Volt 603e, good to 300 Mhz. See
also note below */
gestaltCPU750 = 0x108, /* G3, codename Arthur, also 740 */
gestaltCPU604e = 0x109, /* 2.5 Volt 604 with 32K caches */
gestaltCPU604ev = 0x10A, /* codename Mach5, 250 Mhz and up */
gestaltCPUMax = 0x10C, /* Max , MPC7400/ Altivec;
observed G4 in G3 Mac */
gestaltX704? = 0x154, /* X704 from Exponential Technology
Inc. */
gestaltX704_2? = 0x160, /* ??? */
/* PowerPC Architecture (Unreleased & Rumoured) */
gestaltHelmwind? = ???, /* 200, 250, 300 MHz */
gestaltCPU614? = ???,
gestaltCPU615? = ???,
gestaltCPU620? = ???,
gestaltCPU630? = ???,
gestaltCPU603q? = ???, /* Quantum Effect Design Inc. */
/* Intel Architecture */
/* x86 CPUs all start with 'i' in the high nybble */
gestaltCPU486 = FOURCHARCODE('i486'),
gestaltCPUPentium = FOURCHARCODE('i586'),
gestaltCPUPentiumPro = FOURCHARCODE('i5pr'),
gestaltCPUPentiumII = FOURCHARCODE('i5ii'),
gestaltCPUX86 = FOURCHARCODE('ixxx')
};
NOTE:
The 'cput' selector is available on all Macs running System 7.5 or
later and sometimes with System 7.1. If not available, use 'proc'
selector. &AS22
According to Universal Interfaces 3.0d3 Gestalt.h header file the
Quadra 660AV and Quadra 840AV with System 7.1 always return 5 because
of a ROM bug. But since they have a M68040, 5 is the correct value?
Or after an PPC upgrade these two machines still return 5?
System 7.5 fixes this problem. &AS22
The GestaltEqu.h file published with E.T.O. #12 was replaced by the
one on E.T.O. #13. However there was made a mistake, it lists the 68K
values in the range 0-4 while it should be 1-5 as listed above.
This problem is acknowledged by Apple.
You can fix this problem by using the declarations listed above or by
using the GestaltEqu.h file from E.T.O. #13 but then test first the
gestaltSysArchitecture ('sysa') selector and when it reports a 68K
machine use gestaltProcessorType.
However, System 7.5 and later were apperantly created using the
incorrect header file and return the incorrect values.
Example: 'cput' returns 3 and 'proc' returns 4.
(Anonymous, Dave Radcliffe, Roland Mansson, Rene Ros)
Now it seems a bug is made into a feature. The latest Gestalt
header files explicity states the range 0-4 is the correct one. And
the value returned on a Quadra 660AV and Quadra 840AV is indeed
incorrect. I'am confused by all this, are you? (Rene Ros)
Although the 166 MHz [and up] PowerPC 603ev is pin compatible with the
original 603e, it has physical differences such as die size and power
consumption. And in little-endian addressing, performance is improved.
(David Cook)
To check whether the native system architecture is a MC680x0 or a
PowerPC use the gestaltSysArchitecture ('sysa') selector. See for
more information on the 68K processors the gestaltProcessorType
('proc') selector.
There are also some problems with this selector on 68k Macintosh
computers equipped with an accelerator board. See for more info the
section 'Accelerated 68K Macintosh Computers' in the Reports chapter.
crm (System [7.0])
gestaltCRMAttr
Returns information about the Communications Resource Manager.
enum {
#define gestaltCRMAttr 'crm ' /* Comm. Resource Mgr attributes */
gestaltCRMPresent = 0, /* Comm. Resource Mgr present */
gestaltCRMPersistentFix = 1, /* fix for persistent tools &AS02 */
gestaltCRMToolRsrcCalls = 2}; /* has CRMGetToolResource/
ReleaseToolResource &AS02 */
NOTE:
Not installed by Communications Toolbox for System 6.
csvr (Control Strip cp [1.0])
gestaltControlStripVersion
Returns the version of Control Strip software that is installed as
NumVersion.
#define gestaltControlStripVersion 'csvr'
WARNING:
Control Strip 1.0 used to install the 'sdvr' selector (which is used
by PowerTalk) instead of this selector to return the version. This is
corrected when the gestaltControlStripAttr ('sdev') selector has bit
gestaltControlStripVersionFixed set (Control Strip 1.1 and later).
&AS11/AT08 (Rene Ros)
ctbm (System [???])
gestaltCTBManagersAttr &S02
Returns information about the Communications Toolbox Managers, it is a
bitmask of which managers are present.
#define gestaltCTBManagersAttr 'ctbm' /* Comm. Mgrs attributes */
NOTE:
Never installed by any known system version. Never planned for any
previous or future system version. (Alex Rosenberg)
ctbu (System [7.0])
gestaltCTBUtilsAttr &S02
Returns information about the Communications Toolbox Utilities.
enum {
#define gestaltCTBUtilsAttr 'ctbu' /* Comm. TB Utils attr. */
gestaltCTBUtilsPresent = 0};
NOTE:
Not installed by Communications Toolbox for System 6 and not observed
with any other system software version.
ctbv (System [7.0])
gestaltCTBVersion
Returns the version number of the Communications Toolbox as BCD.
#define gestaltCTBVersion 'ctbv' /* Comm. Toolbox version */
NOTE:
Not installed by Communications Toolbox for System 6.
With the Power Macintosh the Communication Toolbox returned a Gestalt
value indicating version 1.1 while the ROM actually had version 1.0.
This is fixed by the PowerPC Enabler 1.0.1. and the PowerPC Upgrade
Card Enabler 1.0.1. because they install CTB 1.1. &AT06
As of System 7.1, the version of the CTB should track the System
version. The PowerMac ROMs handled this incorrectly and System 7.5
rectifies this by reporting 7.5.0. (Alex Rosenberg)
cuda (System? [7.1.2?], on Performa 630TV)
gestaltCudaDispatchMgrVersion?
Returns the version of the Cuda Manager as BCD?
#define gestaltCudaDispatchMgrVersion? 'cuda'
Values found: 0x0002 0025, 0x0002 0028 and 0x0004 0000 (latter on
Motorola Starmax)
danm (System [Copland?])
gestaltDesktopAnimationMgr &AD21
Returns information about the Desktop Animation Manager (DAM).
enum {
#define gestaltDesktopAnimationMgr 'danm'
gestaltDesktopAnimationMgrPresent = 0}; /* if set, DAM is present */
WARNING:
From the Preliminary Copland Headers. Copland is replaced by Rhapsody.
dbac (System [7.0])
gestaltDBAccessMgrAttr
Returns information about the Data Access Manager.
enum {
#define gestaltDBAccessMgrAttr 'dbac' /* Data Access Mgr attributes */
gestaltDBAccessMgrPresent = 0}; /* TRUE if Data Access Mgr present */
dfnd (PowerTalk ext [1.0?], part of PowerTalk)
gestaltSDPFindVersion
Returns the SDP Find version as INTEGER. Returns zero if not present
and available.
#define gestaltSDPFindVersion 'dfnd' /* SDP Find version */
dict (System [7.1])
gestaltDictionaryMgrAttr
Returns information about the Dictionary Manager.
enum {
#define gestaltDictionaryMgrAttr 'dict' /* Dictionary Mgr attributes */
gestaltDictionaryMgrPresent = 0};
ditl (System [7.0])
gestaltDITLExtAttr
Returns information about the Dialog Manager.
enum {
gestaltDITLExtAttr 'ditl' /* Dialog Mgr attributes */
gestaltDITLExtPresent = 0, /* Dialog Mgr extensions present */
gestaltDITLExtSupportsIctb = 1}; /* True if AppendDITL, ShortenDITL
support 'ictb's &AS28 */
dlog (System? [8.5?])
gestaltDialogMgrAttr
Returns information about the (PowerPC-native?) Dialog Manager.
enum {
#define gestaltDialogMgrAttr 'dlog'
gestaltDialogMgrPresent = (1L << 0),
gestalt??? = 1}; /* unknown, Mac OS 9.0 */
doub (WorldScript II ext [7.2?], part of KanjiTalk7 and
several language kits)
gestaltWorldScriptIIVersion
Returns the version of WorldScript II as BCD?
#define gestaltWorldScriptIIVersion 'doub'
NOTE:
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). Known returned value is 0x0710.
(Marco Piovanelli)
dplv (Display Enabler [1.0?])
(System [7.1.1])
gestaltDisplayMgrVers &AS05
Returns Display Manager version as Double BCD.
#define gestaltDisplayMgrVers 'dplv' /* Display Mgr version */
NOTE:
Version 1 returned the version as INTEGER, version 2 returns it as
Double BCD. (Jean-Pierre Curcio)
dply (Display Enabler [1.0?])
(System [7.1.1])
gestaltDisplayMgrAttr &AS05
Returns information about the Display Manager.
enum {
#define gestaltDisplayMgrAttr 'dply' /* Display Mgr attr. */
gestaltDisplayMgrPresent = 0, /* True if Display Mgr is
present */
gestalt??? = 1, /* seen with System 7.5.2 */
gestaltDisplayMgrCanSwitchMirrored = 2, /* True if Display Mgr can
switch modes on mirrored
displays &AD21 */
gestaltDisplayMgrSetDepthNotifies = 3, /* True, SetDepth generates
Display Mgr
notification &AD21 */
gestaltDisplayMgrCanConfirm = 4, /* True if Display Manager
supports
DMConfirmConfiguration */
gestaltDisplayMgrColorSyncAware = 5, /* True if Display Manager
supports profiles for
displays */
gestaltDisplayMgrGeneratesProfiles = 6}; /* True if Display Manager
will automatically
generate profiles for
displays */
drag (Macintosh Drag and Drop ext [1.0])
(System? [7.5?])
gestaltDragMgrAttr &AD05
Returns information about the Drag Manager.
enum {
#define gestaltDragMgrAttr 'drag' /* Drag Manager attributes */
gestaltDragMgrPresent = 0, /* Drag Manager is present */
gestaltDragMgrFloatingWind = 1, /* &AS09 */
gestaltPPCDragLibPresent = 2, /* &AS09 */
gestaltDragMgrHasImageSupport = 3, /* SetDragImage function
present to drag semi-
transparant images instead
of outlines
(Anonymous) &AT14 */
gestaltCanStartDragInFloatWindow = 4, /* Drag Manager supports
starting a drag in a
floating window */
gestaltDragMgr??? = 31}; /* set with System 7.5 */
NOTE:
With System 7.5.3 on a Quadra 700 the gestaltDragMgrHasImageSupport
is set! So the preparation code works until one calls SetDragImage(),
that fails with error code -1858 ("this call is implemented on PPC
only"). (Fabrizio Oddone)
dsig (PowerTalk ext [1.0?], part of PowerTalk)
gestaltDigitalSignatureVersion
Returns version of the Digital Signature toolbox as BCD.
#define gestaltDigitalSignatureVersion 'dsig' /* Digitial Signature
version */
dkpx (Desktop Pictures cp [1.0?])
gestaltDesktopPicturesAttr
Returns information about the Desktop Pictures control panel.
enum {
#define gestaltDesktopPicturesAttr 'dkpx'
gestaltDesktopPicturesInstalled = 0,
gestaltDesktopPicturesDisplayed = 1};
NOTE:
Installed by Mac OS 8.0 (codename Tempo).
dtpf (System? [8.1?])
gestaltDTPFeatures
Returns information about the Desktop Printing features.
enum {
#define gestaltDTPFeatures 'dtpf'
gestalt??? = 0x00000001,
gestalt??? = 0x00000002,
kDTPThirdPartySupported = 0x00000004}; /* supports third party
drivers, since Mac OS 8.5 */
dtpx (Desktop Printer Extension ext [2.0],
part of Desktop Printing 2.0 and LaserWriter 8, Version 8.4 or later)
gestaltDTPInfo &AT24
Returns a handle to a GestaltDTPInfo structure (listed below). The
handle theDTPList points to a list of DTPInfo structures.
#define gestaltDTPInfo 'dtpx' /* gestalt selector for the PFE DTP */
#define kGestaltPFEInfo gestaltDTPInfo
enum {
kDTPGestaltStructVersion2 = 0x02008000,
// version 2.0f0 (for Mac OS 8.0, 8.1 and 7.x)
kDTPGestaltStructVersion3 = 0x03000000
// version 3.0 (for Mac OS 8.5)
};
// DTPInfo
typedef struct {
short vRefNum; // vRefNum of the DTP folder
long dirID; // directory ID of the DTP folder
Str31 dtpName; // name of the DTP folder
OSType driverType; // creator type of the print driver
for this DTP
Boolean current; // is this DTP currently the default printer?
Str32 printerName; // name of the actual printer on the net
// (only for LaserWriter 8 dtps)
Str32 zoneName; // zone where this printer resides
// (only for LaserWriter 8 dtps)
} DTPInfo;
// data associated with the desktop printer info gestalt
typedef struct {
long version; // kDTPGestaltStructVersion3 or
// kDTPGestaltStructVersion2
short numDTPs; // number of the active dtps
Handle theDTPList; // handle to a list of DTPInfo for the
// active dtps
Handle theDTPDriverList; // handle to a list of print drive
// file specs for each of the active
// dtp in theDTPList
long reserved;
} GestaltDTPInfo, **GestaltDTPInfoHdle;
// BELOW ARE OLD STRUCTURES
typedef struct
{
long version; /* version of the Nessie that is running */
short numDTPs; /* number of desktop printer in the list */
Handle theDTPList;
} GestaltPFEInfo, **GestaltPFEInfoHdle;
typedef struct
{
short vRefNum; /* vRefNum of the DTP folder */
long dirID; /* directory ID of the DTP folder */
Str31 dtpName; /* name of the DTP folder */
OSType driverType; /* creator type of the print driver for this
DTP */
Boolean current; /* is this DTP currently the default printer */
Str32 printerName;/* name of the actual printer on the net
(only for LW8.4 dtps) */
Str32 zoneName; /* zone where this printer resides (only for
LW8.4 dtps) */
} DTPInfo, *DTPInfoPtr;
NOTE:
See the source tech note (1079) for more detailed information.