Mailing List
List Archive
Quesa Forum


Bug List
CVS Server
API Reference


Building Quesa
LGPL License
Carbon Dating


Quesa Logo

Carbon Dating

At their 1999 WWDC conference, Apple removed the QD3D API from the list of technologies they planned to support under Carbon (the subset of the Mac OS Toolbox available to native Mac OS X applications).

One of the main goals of Quesa was therefore to produce a Carbon-compatible implementation of the QD3D API. This was achieved shortly before WWDC 2000, and the week after the conference Quesa was successfully built as a Carbon library on Mac OS X DP4.

For historical interest, a report from Apple's Carbon Dater tool on the Quesa library is shown below (this reported was generated with a build of Quesa after around 3 months of development, when all the Mac OS specific code that would require carbonisation had been implemented).

Note that the DMRegisterNotifyProc and DMRemoveNotifyProc are the only calls which were actually present in the Quesa source (so the true "Supported" figure was actually 95.6%). The remaining items were generated by the Metrowerks MSL library, and disappear in more recent versions of CodeWarrior.

Carbon CompatibilityReport

Report for: Quesa

Report date: 7/23/99

File Creator: ????

Data gathered by analyzer version: 1.2

File Type: shlb

Data gathered on: 7/23/99




Analysis of Imports

Supported API


Supported with Modifications


Unsupported API


Analysis of Access to Low Memory Addresses

Analysis of Resources Loaded into System Heap

Analysis of Imports

Supported with Modifications

Common OS Services
Display Manager
With the exception of certain obsolete or 68K-specific functions, Carbon will support the Display Manager. Functions that take a univeral procedure pointer may need to be modified however.



Hardware Interfaces
Device Manager
Carbon does not support the Device Manager as an interface for installing or interacting with device drivers. However, you can continue to use the PBRead and PBWrite functions (and their variants) for reading and writing to open files.

In Mac OS X, code that communicates directly with hardware devices must use the IOKit API. Other types of code that have relied on the Device Manager interface in the past (such as desk accessories) should be converted into applications.

Note: The Serial Driver will be supported through a new set of functions similar to PBOpen, PBControl, PBStatus, etc., but specific to serial communication.


This function is only supported for reading from open files.


This function is only supported for reading from open files.


This function is only supported for writing to open files.


This function is only supported for writing to open files.

Unsupported API

Carbon Core
Mixed Mode Manager
Mac OS X will not run 68K code. However, Carbon will support universal procedure pointers (UPPs) transparently, so you do not have to change them or remove them from your code. You may want to keep Mixed Mode Manager calls in your application to maintain compatibility with the current version of the Mac OS. Mixed Mode Manager calls from Carbon applications running on Mac OS 8 will function normally.


Use a specific UPP disposal routine; e.g., use Dispose ControlDefinitionProc instead of the more general function DisposeRoutineDescriptor.


Applications should use ProcPtrs for their own code and plug-ins, and use the system-supplied UPP creation functions (such as NewModalFilterProc) for Toolbox callback UPPs. You still need to dispose of those UPPs using DisposeRoutineDescriptor, so that any allocated memory can be cleaned up when your application is running on Mac OS 8.


Analysis of Access to Low Memory Addresses

Access Type
Located in Function

No Invalid Access Detected


Analysis of Resources Loaded into System Heap

No resources loaded into system heap.

Quesa Web Site hosted by DesignCommunity.com