This Technote discusses changes and corrections in the next generation of Mac OS: Mac OS 8.5.
This system follows Mac OS 8.1 and contains several new and revised features including:
In Search of Missing Links (Technote 1127)
by George Warner
This Technote is of interest to developers attempting to use the classic 68K API's currently missing from InterfaceLib.
Checklist for Building Applications and Extensions (Technote 1126)
by Brian Bechtel
updated by Pete Gontier and Tim Carroll
This Technote tries to summarize all of the different items which you need to ensure you have included to build a good, well-behaved Macintosh product.
Building a 3D application that calls RAVE (Technote 1125)
by Timothy Carroll
This Technote describes how to build a 3D application using RAVE to perform rasterization and hidden surface removal. Texture management, clipping, notification methods and other common RAVE issues are addressed, including integration with DrawSprocket. Overall, performance is discussed as a primary goal. This technote is useful both to application programmers and RAVE engine designers.
New Sound Input Driver Features (Technote 1124)
by Mark Cookson
This Technote describes the features and changes in the new PCI sound input drivers, which were introduced with Mac OS 8.1. Many of the changes these drivers implement are not visible to the user or the developer at this point. This Technote addresses the changes that are.
Start Manager Extension Table Mechanism (Technote 1123)
by Andy Bachorski, Douglas Clarke & Jim Luther
The Start Manager was revised in Mac OS 8.1 to add a mechanism for monitoring and controlling the loading of system extensions during system startup. This Technote describes how the Start Manager was changed, and shows how a program can monitor or take control of the system extension loading process.
Locking and Unlocking Handles (Technote 1122)
By Pete Gontier
This Technote is addressed to developers who manipulate Memory Manager handles, and in particular those who lock and unlock them. It explains why and when handles need to be locked and how and when to preserve the state of a handle to avoid erroneously unlocking it.
By Andy Bachorski
Mac OS 8.1 introduces a number of new and/or updated technologies. This Technote documents the changes that most likely will affect developers.
Opening Resource Files Twice Considered Hard? (Technote 1120)
By Quinn "The Eskimo!"
This Note describes the exact behavior of FSpOpenResFile when the resource file is already open, and describes some cookbook solutions to avoid problems in this case.
All Mac OS programmers who use the Resource Manager should read the Summary section of this Note, just to familiarize themselves with the problem. In addition, programmers who are writing non-application code should carefully read the entire Note to ensure maximum compatibility for their code.
Serial Port Apocrypha (Technote 1119)
By Quinn "The Eskimo!"
This Technote describes a number of problems often encountered by developers when dealing with serial ports under Mac OS. Most of this information is available from other sources, but those sources are obscure and commonly overlooked.
Specifically, this Note describes the correct techniques for finding, opening, closing, and yielding serial ports under the classic serial API and the Open Transport serial API. In addition, this Note describes the theory and practice of the original and Open Transport serial port arbitrators.
This Technote is directed at all Mac OS developers who use serial ports.
Unlocking GDHandles Considered Harmful (Technote 1118)
By Pete Gontier
Revised by Pete Gontier (June 1998)
Recently, Apple became aware of problems in Mac OS and in third-party code which can cause a crash.
The problem occurs when a program inadvertently unlocks one or more QuickDraw data structures. The crash typically occurs elsewhere, when the system accesses one of these data structures under the assumption that it is locked.
This Technote is addressed to two audiences: developers whose products make any use of the GDHandle
data structure, and users who seek more information on certain intermittent crashes reported in other media.
Open Transport STREAMS FAQ (Technote 1117)
By Quinn "The Eskimo!"
This Technote contains collected lore on writing STREAMS modules and drivers for use with Open Transport.
It is structured as a series of question and answer pairs, that answer Frequently Asked Questions about Open Transport STREAMS. However, this isn't just a collection of Q&As; a lot of the material is tutorial in nature.
This Technote is directed at developers who are writing OT kernel level plug-ins, such as protocol stacks, networking device drivers, and filtering and encryption software.
PowerBook HD Upgrades and SCSI disk mode Compatibility (Technote 1116)
By Brian Bechtel
This Technote describes two potential problems with substituting hard drives on some PowerBook models and SCSI disk mode. Both problems occur only with ATA hard drives and SCSI disk mode.
This Technote is directed at hard disk drive resellers and driver developers.
LaserWriter 8.5.1: The Extended 'PAPA' Resource (Technote 1115)
By Richard Blanchard, RBI Software Systems Inc.
Ingrid Kelly, Apple Computer Inc.
and Chorng-Shyan Lin, RBI Software Systems Inc.
Starting with LaserWriter 8.5.1, in order to support different types of desktop printers, the 'PAPA
' -8192 resource has been extended from 103 to 1024 bytes long. This Technote discusses the additional bytes and in what way the LaserWriter 8.5.1 driver uses them.
LW 8.5.1 CopyBits Support: Transparent and Clipped Images (Technote 1114)
By David Gelphman, RBI Software Systems Inc.
and Ingrid Kelly, Apple Computer Inc.
QuickDraw provides several APIs for copying bitmaps from one graphics port into another, the most flexible of which is CopyBits()
. Most developers use CopyBits()
because it can move offscreen images into an onscreen window, change colors in the pixmap, and resize images. This is a useful API, however, unfortunately, LaserWriter 8.4.x and earlier PostScript printer drivers from Apple have not supported all of the capabilities of the CopyBits()
call to draw images. This Technote describes where Apple has enhanced its handling of the CopyBits()
call in LaserWriter 8.5.1 so that developers and users may take advantage of the improvements.
Customizing Desktop Printer Utility (Technote 1113)
By Brendan Galten and Ingrid Kelly
LaserWriter 8.5.1 and Desktop Printer Utility (together) support the creation and use of desktop printers known as Custom DTPs. When printed to, Custom DTPs cause the LaserWriter 8.5.1 driver to create a PostScript file and to launch an application that can post-process the PostScript. This post-processing application can do anything it likes with the PostScript file, such as converting the PostScript into another file format, transferring the file to another location using a modem or a network connection, or displaying the PostScript file to the user. This Technote describes how a developer might customize Desktop Printer Utility for use with an application.
Introducing the LaserWriter Driver Version 8.5.1 (Technote 1112)
By Ingrid Kelly
This Technote outlines some of the changes and new features that Apple has made with the LaserWriter version 8.5.1 release. It describes new utilities, expanded technology support, and what this means to you, the developer.
Note:
This Technote is a generic overview of the changes in the LaserWriter version 8.5.1 release. There are several more Technotes on Apple's Technote web site that provide more detail on how to implement and support some of the new features with your driver or application.
Programmatic Mounting of AppleShare Volumes (Technote 1111)
By Leland Wallace
This Technote shows how to mount an AppleShare volume using the PBVolumeMount
call.
Supporting Plug-in Renderers in QD3D 1.5.3 Applications (Technote 1110)
By Nick Thompson, Scott Kuechle
Support for third-party plug-in renderers is new in QuickDraw3D 1.5. This Technote describes how to properly provide support for plug-ins in a QuickDraw3D 1.5.3 application. Adding support for plug-ins is fairly easy, and it allows an application to take advantage of any existing and future third-party plug-ins.
Developers who are interested in providing support for plug-in renderers in their applications should read this Technote. This Technote assumes you are familiar with QD3D programming in general, as described in the book 3D Graphics Programming With QuickDraw 3D by Addison-Wesley.
Optimizing QD3D 1.5.3 Apps For Maximum Performance (Technote 1109)
By Scott Kuechle
There are a number of techniques not discussed in the QuickDraw3D (QD3D) documentation which a developer can use to boost performance in a typical QD3D application. This Technote presents these techniques. This Technote assumes you are familiar with 3D graphics fundamentals and QD3D programming as described in the book 3D Graphics Programming With QuickDraw 3D by Addison-Wesley.
Unknown Sound Features (Technote 1108)
By Mark Cookson
Many developers have complained about features they felt were lacking in the Sound Manager. However, many features which were believed to be lacking were actually available, just under documented. This Technote is meant to document the more obscure features of the Sound Manager.
This Technote is directed at application and hardware developers who work with the Sound Manager and want to be sure that they are getting the most out of the Sound Manager and their products.
Extensible Folder Manager (Technote 1107)
By Greg Robbins and John Montbriand
Mac OS 8 includes a new Extensible Folder Manager for use by system software and by applications. The Extensible Folder Manager supports FindFolder as well as additional functionality:
This document describes the Extensible Folder Manager that ships with Mac OS 8 and with future system releases.
Update: Borrowed AFP Sessions (Technote 1106)
By Jim Luther (September 1992),
Edited by Leland Wallace (March 1997)
This Technote shows how to borrow the session reference number of an AFP volume mounted by the Macintosh File System. It also shows how to retrieve other information from the file system for a mounted AFP volume. This revision of the Borrowed AFP Sessions Technote applies to systems that are using AppleShare Client 3.7 and later. Previous versions of the AppleShare client should use the information contained in
Technote NW 16.
AppleVision Technote (Technote 1105)
By John Montbriand
This Technote provides information of interest to developers creating cards and drivers for use with AppleVision displays.
Interrupt-Safe Routines (Technote 1104)
By Brian Bechtel and Quinn "The Eskimo"
Revised by Quinn "The Eskimo" (July 1998)
System 7 has a badly defined set of extremely heterogeneous programming environments. In some of these environments, your code can access some system services but not others. Futhermore, the names given to these environments are often overloaded and confusing. This results in a lot of programmer confusion.
This technote attempts to clear up this confusion by assigning each of the execution levels a unique name, describing how and why your code might find itself running at a particular execution level, and outlining the restrictions your code might face when running at that level.
Uniquely Identifying a Mac OS Computer (Technote 1103)
By Brian Bechtel
There is no single unique serial number available across the entire range of Mac OS based computers. There are some techniques which can be used to help differentiate between two Mac OS computers. These techniques are described in this technote.
By John Montbriand
Updated by Andy Bachorski
This Technote discusses changes and corrections in the next generation of the Mac OS Operating System, Mac OS 8. This system follows Mac OS 7.6.1 and contains several new and revised features.
Using The GXGraphics Extension (Technote 1101)
By Ingrid Kelly and Robin Mikawa
Starting with Mac OS 8.0, the QuickDraw GX environment will no longer support the GX Printing Manager API. Although this decision will require significant changes to existing system software and applications, it will allow us to transition to a unified printing architecture that will improve the compatibility of QuickDraw GX software in the classic QuickDraw environment. This Technote gives an overview of what a GX application needs to do to support the classic printing architecture.
Color Picker 2.1 (Technote 1100)
By John Calhoun and Ingrid Kelly
With the release of Mac OS 8.0, Apple has redesigned and expanded the Color Picker. In doing so, we have changed the Color Picker APIs for developers and expanded on the number and kind of pickers that are available to the end user. This Technote outlines these changes in detail.
Power Management & PC Card Manager 3.0 (Technote 1099)
By Dave Tarabar
This Technote describes the relationship between the Power Manager on PowerBook computers and the PC Card Manager 3.0.
ATA Device Software Guide Additions and Corrections (Technote 1098)
By Brian Bechtel (July 1997)
Revised by Brian Bechtel (May 1998)
This technote is directed at developers who wish to call the ATA Manager directly. This revision includes both corrections to the original ATA Manager guide, as well as some minor additions for ATA Manager 4.0. ATA Manager 4.0 was introduced with the PowerBook 3400.
Desktop Printing Revealed (Technote 1097)
By Dave Polaschek (February 1997)
Revised by Ingrid Kelly (August 1998)
This Technote describes how a printer vendor might add desktop printing support in their printer driver. Support for third-party desktop printing has been added to Mac OS 8.5 with specification changes, so we encourage you to read the changes in this revision.
Mac OS 7.6.1 (Technote 1096)by Lenae Rowland
Mac OS 7.6.1 introduces a number of enhancements and bug fixes to Mac OS 7.6 and supports all the new PowerMac models, as well as the PowerBook 3400. If you are considering the use of this system update (and you should be), this Technote will give you the information you need.
Object Support Library Version History (Technote 1095)
By Andy Bachorski
The Object Support Library has been the source of a great deal of confusion in recent years. This Technote is the definitive account of how this situation developed and how it has been rectified. It gives a detailed roster of OSL versions and tells you exactly which ones to use and why. It is a 'must read' for anyone who uses the OSL.
Virtual Memory Application Compatibility (Technote 1094)
By Quinn "The Eskimo!"
This important new Technote presents an exhaustive, fascinating look at one of the key features of the Mac OS. It provides an extensive overview of VM, explains which applications may be affected by it, and shows you how to avoid common problems and optimize your code for maximum performance. It is worthwhile reading for all Mac OS developers.
QuickDraw GX 'rdip' Resources: The Number of the Beast (Technote 1093)
By Don Swatman
QuickDraw GX's raster preferences ('rdip
') resource gives raster printer driver developers a great deal of control over how an image is rendered for a printer -- without having to write the renderer themselves. However, due to sparse documentation, many developers have become confused as how to make best use of its features.
This Note is primarily intended for QuickDraw GX raster printer driver developers who wish to use the 'rdip
' resource in their printer drivers. It uses examples geared for CMYK printers.
A Printing Loop That Cares -- The Sequel (Technote 1092)
Revised by Ingrid Kelly
Originally written by Ginger Jernigan, Pete "Luke" Alexander and Matt Deatherage
Originally PR 10 - A Printing Loop That Cares, this Technote discusses how and why your application should add a generic printing loop in order to be compatible with today's printer drivers.
The Note reflects the current Macintosh Printing Manager and discusses proper opening and closing of the Macintosh Printing Manager with calls to PrOpen
and PrClose
. It also shows how your application should handle errors at print time and lists the latest error codes.
By Mark Cookson
This Technote is intended as a brief overview of Extensions Manager 4.0, which is included in Mac 0S 7.6. There are a number of new and enhanced features in the Extensions Manager which will be of interest to anyone who develops control panels, extensions or applications which might be controlled by it.
Mac OS 7.6 (Technote 1090)by John Montbriand
This Technote discusses changes to and corrections in the next generation of the Macintosh Operating System, Mac OS 7.6. This new release of system builds on and enhances the functionality found in the previous release of Mac OS 7.5.5, which was documented in Technote 1069: System 7.5.5.
HFS Elucidations Revisited (Technote 1089)
Revised by Laura Rawson
Originally written by Bo3b Johnson
This Technote, originally FL 6 - HFS Elucidations, describes a few problems that may occur while using Hierarchical File System (HFS). It also describes ways to avoid these problems.
This Note is important for developers who need to address debugging issues involving HFS. This is as important now as it was when the Note was originally published.
Strategies for Producing Browser-Based Technical Documentation (Technote 1088)
By Tom Maremaa
For better or worse, Web browsers have become one of the preferred ways of viewing technical documentation. Yet browsers and technical documents make strange bedfellows indeed. Viewing documents in a browser (especially if those documents contain complex technical data, extensive illustrations, block diagrams, tables and cross-references) may be less than satisfactory -- the equivalent of reading programmer manuals in a fishbowl.
This Note attempts to provide a few good strategies for resolving some of the issues around producing and viewing Web-based technical documentation.
By Drew Colace
Today, QuickTime delivers the most dynamic media available -- professional quality video and sound, MPEG, 3D objects, sprites, text and MIDI, and its capabilities are continuing to grow. With QuickTime 2.5, it is easier now for movie tracks to act on one another, as is the case with our Tween track, which sends its information to another track to change it dynamically over time. The possibilities for truly explosive media content are there.
This Technote explains how you can make sure your QuickTime application isn't blind to any media types available to it and some simple things you can do with that media to add value to your application.
Power Management & The Energy Saver API (Technote 1086)
By Vinnie Moscaritolo
In an effort to provide a consistent method of controlling the various power conservation hardware and software features implemented on the Macintosh platform, Apple has introduced the Energy Saver system.
This Note discusses how to communicate with the Macintosh Energy Saver Extension through the Energy Services API and is important for developers who wish to access Mac OS power management features from their applications.
Using the Drag Manager to Interact with and Manipulate File System Entities (Technote 1085)
By Pete Gontier
The Drag Manager defines two data flavors for interacting with and manipulating file system entities. While The Drag Manager Programmer's Guide explains these flavors, it does not provide sufficient detail for a complete understanding of how to use them.
Developers who are interested in "teaching" (or even those who have already taught) their applications to interact with and manipulate file system entities via the Drag Manager should read this Technote.
Running CFM-68K Code at Interrupt Time: Is Your Code at Risk? (Technote 1084)
By Karen Wenzel
This Technote has been completely rewritten to reflect the enhancements and limitations of the newest version of the CFM-68K Runtime Enabler, which fixes many earlier problems with Code Fragment Manager code running at interrupt time. Pre-emptively threaded applications are still at risk, however, so anyone writing CFM-68K code should read this Technote.
Weak-Linking to a Code Fragment Manager-based Shared Library (Technote 1083)
By Tim Carroll
This Note describes how to weak-link to a CFM-based shared library, and how to check to make sure that the library is successfully loaded. It is aimed at all Macintosh developer who are using shared libraries.
The Problem with & (Simple) Fix to Purgeable WDEFs (Technote 1082)
By Matthew Xavier Mora and Troy Gaul
This Note describes a problem with purgeable WDEFs and explains how to fix it simply by marking WDEF resources as non-purgeable.
By Mark Cookson
If you attempt to play a sound compressed with Apple's IMA compressor on a computer running Windows' IMA decompressor, the sound either does not play or plays incorrectly. Developers who want to edit or play back Macintosh IMA-ADPCM files on computers not running the Mac OS or QuickTime for Windows should read this Note.
Adding Items to the Printing Manager's Dialogs (Technote 1080)
Revised by Ingrid Kelly & Dave Polaschek
Originally Technote PR 09 - Print Dialogs: Adding Items, this Note discusses how to add items to the Printing Manager's dialogs. It reflects the current Macintosh Printing Manager and uses C code instead of the original Pascal.
Power Management & Servers: Auto Restart From Power Failure (Technote 1079)
By Vinnie Moscaritolo
Automatically restarting from a power failure is an important feature for any server. This Note discusses how to communicate with the Macintosh's internal power management microcontroller. Developers who design software that must run in an environment where little or no human intervention is available should read this Note.
Solutions for Finding Missing MPW Libraries and Tools (Technote 1078)
By Merwyn Welcome
The Macintosh programming landscape is sometimes subject to change without notice. This Note, of general interest to all developers involved in Macintosh programming using C or C++, addresses how, using MPW, you can go about resolving undefined symbols found while linking. It also demonstrates the use of several MPW Shell scripts working together to automate this process.
Calling CFM Code From Classic 68K Code (Technote 1077)
By George Warner
There are specific instances when you must call Code Fragment Manager (CFM) code from classic 68K code -- for example, if your application cannot be converted to CFM but you want to be able to use CFM libraries. Another instance would be developing for OpenDoc, which requires shared library support. Prior to this Note, only CFM applications could take advantage of OpenDoc. This Note explains how to add library support to classic code.
Cross-Platform Communication Using the PC Compatibility Messaging System (Technote 1076)
By Ben Manuto
This Technote describes the Messaging System Architecture used in Apple's PC Compatibility and DOS Compatibility products. Specifically, the messaging system allows communication of data between the PC-based machine running on a NuBus or PCI card and the Macintosh OS. This inter-machine communication is facilitated through a driver on the Macintosh which controls the PC card and allows it to run within the Macintosh hardware and software space.
The Note is directed toward third-party developers who are interested in developing software for the Mac and the PC which needs to communicate instructions or data between platforms. The applications developed to use the messaging system would be intended to run specifically with Apple's PC Compatibility products.
Some Techniques for Handling Variables in Apple Guide (Technote 1075)
By Don Swatman
Apple Guide has many advantages over other help systems but also has several drawbacks. One is that it is not easy to keep track of what the user has already done. This becomes a particular problem if you are writing a tutorial. For example, your tutorial might have 10 different lessons which the user may need to complete over several days. How can the user be sure that he or she has gone back to the point they left the tutorial and not skipped stages? One way to do this is to store variables within an application.
QuickTime For Windows: Resolving Common Installation Issues (Technote 1074)
By Laura Rawson
This Note discusses some of the most common installation issues that you or your developer technical support team may encounter and how to resolve them. It focuses on QuickTime for Windows v 2.1.2. If you are using an earlier version, it is recommended that you upgrade to 2.1.2, since this will resolve many installation problems that may occur with earlier versions. You can download the latest version, which is available at <http://quicktime.apple.com/sw/sw.html>.
Customizing Apple Media Tool 2.0 & 2.1 Scroll Bars and Movie Controllers (Technote 1073)
By Scott Kuechle
Apple Media Tool (AMT) versions 2.0 and 2.1 come with three styles of scroll bars and three styles of movie controllers built-in. This Technote describes how to customize and add new scroll bars or movie controllers to AMT 2.0, and to titles created with AMT 2.0, as well as titles created with Apple Media Tool Programming Environment (AMTPE) 2.0.
Porting WinHelp to Apple Guide with Guide Maker (Technote 1072)
By Don Johnson
If you are planning to port WinHelp source files to Apple Guide using the Apple Guide Maker development environment, there are some important issues that you need to address. This Technote discusses what you need to know in order to port your WinHelp files successfully. It is addressed to developers, technical writers, and instructional help designers who need to convert WinHelp files to Apple Guide source files.
Working with Apple's Multiprocessing API (Technote 1071)
By Chris Cooksey
This Technote describes the basic steps required to use the Apple Multiprocessing API and attempts to clarify the things that can and cannot be done from tasks created using that API. It is directed primarily at developers working with, or preparing to work with the Multiprocessing API. Although the examples given are aimed at application writers, it contains information useful for system level engineers also.
Background-Only Applications (Technote 1070)
Revised by Brian Bechtel
Background-only applications (BOAs) are, as the name implies, Macintosh applications that run only in the background. BOAs are the preferred alternative to INITs, drivers, and stand-alone code for most startup-time and background "daemon" services. This Note discusses various issues that affect development of BOAs, as well as useful implementation strategies for BOAs. Originally PS 02, it has been revised to include information about the appl code resource used in controlling application extensions, details about SetApplLimit, and a bug workaround for application extensions with INITs under system software prior to System 7.5.5.
by Brian Bechtel
System 7.5.5 includes changes to the Virtual Memory Manager, some substantial Code Fragment Manager improvements, and a variety of enhancements and improvements. We recommend this update for all Macintosh computers running System 7.5.3. System 7.5.5 will only install on a Macintosh or Mac OS compatible-computer running some version of System 7.5.3. If you are running an earlier version of System Software, you need to upgrade to System 7.5.3 before you can install System 7.5.5.
Writing PPD Files for Use With LaserWriter 8, version 8.4.1 (Technote 1068)
by Dave Polaschek
LaserWriter 8.4 offers a new graphical way to customize the interface presented to the user for selecting printer-specific options that are defined in PostScript Printer Description (PPD) files. This Technote describes how to access those features.
This Technote assumes you are already familiar with the PPD specification. If you are not familiar with how to make PPD files, you should first consult the PostScript Printer Description File Format Specification Version 4.3, which is available from Adobe Systems, Inc.
Traditional Device Drivers: Sync or Swim (Technote 1067)
by Quinn "The Eskimo!"
As with any software system, the Mac OS works fine just as long as everybody plays by the rules. For general Toolbox operations, these rules are fairly easy to understand. However, traditional Mac OS device drivers (DRVRs), by their very nature, are complicated programs, and the rules that govern their behavior are harder to understand.
This Technote discusses one of the dangers of writing a traditional Mac OS device driver, namely, the possibility of deadlock when calling another device driver synchronously from a device driver. It demonstrates several ways this deadlock can occur, and then goes on to describe how to avoid the possibility of deadlock.
E.T.O: The Right Tools for the Right Job (Technote 1066)
by Jason Yeo
The motivation behind this Technote was brought about by frequent inquiries from developers about what Apple development tools are available for their specific programming tasks. This Technote showcases the major components of Apple's E.T.O. (Essentials - Tools - Objects).
This Technote serves as a reference for any Macintosh developer who wants to know what Apple development tools and utilities they have at their disposal. It does not, however, cover the multitude of third-party development tools that are also available. For a vendor list of third-party products, please refer to the Third party links page.
by Lawrence D'Oliveiro
QuickDraw GX was designed entirely with the C programmer in mind. As a consequence, the user of a high-level language, such as Pascal or Modula-2, is left unable to take advantage of all the capabilities of GX. This Technote outlines how you can get around this hurdle.
This Technote is aimed at programmers with some 68K assembly-language experience, who have an aversion to the C programming language. You will need to be familiar with the Macintosh Programmer's Workshop (MPW) environment, if only because that hosts the only 68K assembler on the Macintosh worth using. I will discuss how to make use of all the functionality of GX from a language like Pascal or Modula-2, without writing any C code.
The discussion breaks the problem down into all the important cases, and gives an example of how to deal with each. Based on this, you can construct your own adaptation of Apple's GX interfaces, or you can make use of the adaptation in Modula-2 that I have already done. The examples use Modula-2 rather than Pascal, mainly because Modula-2 allows the definition of routine types, which Pascal does not.
by Albert Hui
While you can set the Daylight Savings Time state from the Date & Time Control Panel and determine what the state is by checking the checkbox in the Control Panel, you can also figure out the state from within your program. This Technote shows you how.
Inside Macintosh: Operating System Utilities, Chapter 4, does not directly explain how you can find out if daylight savings time is in effect. With the MachineLocation data structure dlsDelta field, you can find out how the time would have changed, but the field does not tell you whether daylight savings time is in effect.
This Technote is at aimed at Macintosh developers who must deal with date and time programming issues.
Inside Macintosh: Processes: Time Manager Addenda (Technote 1063)
by Eric Simenel
This Note highlights the usage of two fields -- tmReserved and tmWakeUp -- that might be unclear after reading the chapter "Time Manager" in Inside Macintosh: Processes.
This Note is intended for all developers who want to do time measurement using the Time Manager routines.
A Technote Series on Open Firmware
Fundamentals of Open Firmware, Part II: The Device Tree (Technote 1062)
by Wayne Flansburg
This Technote, the second in a series, describes the Open Firmware device tree. It briefly explains how the device tree is built and then describes some of its contents.
This Technote is targeted at the expansion device designer and the driver writer for that device.
A Technote Series on Open Firmware
Fundamentals of Open Firmware, Part I: The User Interface (Technote 1061)
by Wayne Flansburg
This Technote, the first in a series, describes the Open Firmware User Interface and Forth, the Open Firmware language. This Note addresses how to connect the target machine to a host machine for two machine mode. It explains how to use the interface to go between two and one machine mode. It also provides an explanation of the basics of Forth, an introduction to the device tree, and some debugging techniques.
This Technote is targeted at the expansion device designer and the driver writer for that device.
Controlling Apps with Synthesized Events, or jGNEFilter, the Untold Story (Technote 1060)
by Pete Gontier and Mark Cookson
Until now, jGNEFilter has been "under documented," with only vague mentions appearing in Technote TB 11. jGNEFilter is the name of a mechanism by which programs can obtain access to each EventRecord just before the event is sent to the caller of GetNextEvent or WaitNextEvent.
Developers who would like to make use of jGNEFilter, or developers who are already bravely making use of it even in the face of inadequate documentation, should read this Technote.
On Improving Open Transport Network Server Performance (Technote 1059)
By Vinnie Moscaritolo
As higher network datalink speeds become more commonplace, Mac OS server performance has come under closer scrutiny. Developers who write network server applications on the Mac continue to be concerned about performance issues. In many cases, server throughput and connection latency problems may stem from poor application design rather than any deficiencies in Open Transport or the Mac OS.
This Technote is intended for Macintosh developers writing network server applications that use the Open Transport API, and discusses some techniques you can employ in your network server application design to achieve higher performance.
QuickDraw GX 'ptyp' Resource: Calculations, Uses & Limitations (Technote 1058)
By Ingrid Kelly
For some time now, Apple developers have been confused by the 'ptyp' (paper type) resource in QuickDraw GX. This is a result of sparse documentation and problems with QuickDraw GX's use of this resource.
Querying PostScript Printers at dtp Creation Time the QuickDraw GX Way (Technote 1057)
By Ingrid Kelly
For some time now, Apple developers have asked how they can query their PostScript printers at dtp creation time using the same methods as the LaserWriter GX printer driver. This Technote discusses how the LaserWriter GX driver does it at query time and provides you with the printing messages you need to override in order to achieve the same functionality.
You may need to change or add to the code in this Note. For example, if you want to query for the number of paper trays or query for an envelope tray, you will need to modify this code, as explained later in this Note.
Apple Media Tool's "Not Enough External Memory (3)"Error Explained (Technote 1056)
by Scott Kuechle
This Note explains what is meant by the Apple Media Tool (AMT) "Not Enough External Memory (3)" error, and provides several techniques for preventing its occurrence. It is targeted at both Macintosh and Windows developers who are creating multimedia titles with AMT and the Apple Media Tool Programming Environment (AMTPE), versions 1.2 and 2.0.
SIMMs to DIMMs: Making Sense Out of Memory Expansion for the Power Macintosh (Technote 1055)
By Paul Freeburn
From the first to second generation Power Macintosh computers, Apple has increased the total amount of expandable memory, and has transitioned memory expansion from 72-pin SIMMs to 168-pin DIMMs. Unfortunately, as with earlier Macintosh computers, the transition to 168-pin DIMMs for memory expansion has not dampened the endless flow of memory questions from developers, system integrators, and end users.
What tends to drive the confusion is the fact there are dozens of companies that supply memory modules which, in turn, use DRAM devices manufactured by a number of different semiconductor vendors. As a consequence, you end up with multiple combinations of all sizes and configurations of SIMMs and DIMMs.
Decomposing a QuickDraw GX Mapping (Technote 1054)
by Lawrence D'Oliveiro
A QuickDraw GX mapping, being a 3-by-3 matrix, can specify any 2D linear transformation. It is easy enough to build up such a transformation from a sequence of primitive transformations, namely translations, scalings, rotations, skews and perspective distortions -- GX provides calls to construct nearly all of these components (the exception is perspective, for which there is library code in the GX SDK). Sometimes there is a need to go the other way: given an arbitrary linear transformation, can you break it into a sequence of pure translations, scalings, skews and perspective distortions? This Technote will show you how.
QuickDraw GX GraphicsBug:Description, Uses & Limitations (Technote 1053)
By Cary Clark
This Technote discusses GraphicsBug, the GX debugger application. It provides a description of the history of GraphicsBug, as well as an explanation of how GraphicsBug can best be used by GX developers. This Note also includes a list of all the currently known bugs in GraphicsBug.
This Note is intended for Macintosh QuickDraw GX developers who are developing applications with QuickDraw GX version 1.1.3 or earlier.
by Cary Clark
This Technote discusses ConicLibrary.c from the QuickDraw GX Libraries.
This Note is intended for Macintosh QuickDraw GX developers who want to approximate ellipses and hyperbolas with paths. These, with parabolas (gxCurves), form the family of curves called conics.
by Rob Johnson
Conic splines are a useful graphic primitive. They exactly represent any conic section: line, circle, ellipse, parabola, or hyperbola. Lines and circles are of obvious importance, and parabolic splines are a primitive building block for shapes in QuickDraw GX. This Technote gives a derivation of some of the mathematical formulas associated with conic splines.
by Brian Bechtel
This Technote describes the various changes offered by System 7.5.3 Revision 2 and provides information for Apple developers regarding these changes. This Note also includes references to other sources of information that further discuss these changes.
By Brian Bechtel
There has been much concern recently about various operating systems and computers and their handling of the year 2000. Many operating systems and computers use two digits to represent and store the year, and this can cause problems in the year 2000.
The Mac OS and Apple Macintosh computers do not have problems with the year 2000. The following Q & A's address this, and direct the reader to further sources of information related to this topic.
By Mark Cookson & Ray Chiang
This Technote discusses issues that you need to be aware of if you are developing apps that use more than basic Sound Manager calls. The information in this Technote has been gleaned from a number of developer questions fielded by DTS, and focuses on issues that arise when dealing with sound input and sound output.
by Tom Maremaa
This Technote introduces a series of techniques designed to improve the quality of technical writing for a developer or programmer audience. It is aimed at content producers who must produce Release Notes, Read me files, and other forms of technical writing.
by Vinnie Moscaritolo
This Technote discusses addenda to the Inside Macintosh: Devices, Power Manager Chapter.
by Scott Kuechle
This Technote describes new error codes, documents new behavior, and provides information on retrieving errors involved in the various components of QuickTime Conferencing (QTC).
A Technote Series on Open Firmware
by Wayne Flansburg
This Technote, the third in a series, addresses PCI expansion ROM contents for Mac OS 8. The information here also applies to all Macintosh computers with PCI expansion capability, such as the Power Macintosh 9500, 8500, and 7500. The Note looks at the basic device types as defined in the IEEE 1275-1994 Open Firmware standard. It defines the recommended contents common for all ROMs, as well as the specific recommended contents for the various standard device types, excluding bridge devices.
by Greg Robbins & Pete Gontier
Since Drag Manager 1.0, two new calls have been added and three new Gestalt response bits have been defined.
This Technote is intended for Macintosh developers who need to take advantage of these new features.
by Andrew Wulf
This Technote describes various strategies your application might take in dealing with low-memory conditions. It is also useful as a memory-management primer for those developers starting out on the Macintosh, or porting applications from other platforms.
by Jim Luther
Updated by Jim Luther & Pete Gontier
This Technote discusses known errors and omissions in Inside Macintosh: Files.
by Vinnie Moscaritolo
Many high-performance disk drives available for Macintosh computers utilize an on-board hardware write cache mechanism. Although these devices can enhance disk performance, they also require special software consideration to avoid the loss of data on shutdown.
This Technote addresses ways to flush the disk's write cache during the shutdown process.
by Vinnie Moscaritolo
If you are building an application that communicates with storage devices by bypassing the Macintosh file system, you may encounter some unexpected problems related to interaction with the Power Manager. This Note discusses some elementary but often overlooked ways to prevent these problems from occurring.
by Cary Clark
This Technote discusses OffscreenLibrary.c from the QuickDraw GX Libraries.
by Cary Clark
This Technote discusses MappingLibrary.c from the QuickDraw GX Libraries.
by Michael Chen & Joel Cannon
This Technote is intended to provide multimedia developers with the knowledge necessary to create QuickTime VR 1.0 object movie files from their own applications.
by Ken Doyle & Joel Cannon
This Technote is intended to provide multimedia developers with the knowledge necessary to create QuickTime VR 1.0 panorama movie files from their own applications.
by Ingrid Kelly
This Technical Note discusses known errors and omissions in Inside Macintosh: QuickDraw GX Graphics.
by Quinn "The Eskimo!" Developer Support Droid
One of the classic problems of Macintosh programming is that your code is executing at interrupt time and you wish to execute a Mac OS routine that cannot be called at interrupt time. This Technote presents a number of techniques you can use for communicating between interrupt time code and task level code, along with an analysis of each method. It concludes with a recommendation for the best general-purpose method for solving the problem.
by Dave Polaschek
If your application generates PostScript directly, or you're considering writing an app that does, there are some techniques that will help your development efforts. This Technote explains these techniques, as well as gotchas that are either inadequately documented, or scattered across multiple documentation sources.
by Tom Maremaa
This Technote looks at some of the Dogcow's history and peregrinations and then explains the technique for creating a QuickTime VR object movie with the Dogcow as star.
by Joel Cannon & Tom Maremaa
This Technote, which is aimed at QTVR producers, will help you assess how much RAM you'll need and provide you with tips on how to recognize and avoid common memory-related problems.
by Joel Cannon & Tom Maremaa
Like many developers, I'm new to QuickTime VR. I started working with VR back in November, 1995, and over a period of three intensive months, immersed myself fully in this new Apple technology. Most of my learning was through trial and error, investigating a whole range of common problems encountered by Apple developers. This Technote is an attempt to share some of the highlights of my experience.
by Ingrid Kelly
This Technote discusses addenda to the Inside Macintosh: QuickDraw GX Series.
by Dave Polaschek
Although the Macintosh printing architecture has only two major flavors -- QuickDraw GX and traditional, Print Manager printing -- many applications just can't seem to get printing right.
This Technote provides you with a few, important guidelines to alert you to problem printing areas, and to help you test your application. If your application is guilty of breaking the rules, you should at least think about fixing the incompatibilities, since there will only be more change in the future.
by Pete Gontier
This Technote describes two serious problems in the Notification Manager (NM), one having to do with activate events and the other with update events. These problems can cause windows in your application to be drawn redundantly or not at all. This Technote provides a workaround for the active event problem and some sample code, with explanations, for fixing the update event problem.
by John Miller
This Technote describes a workaround to a bug in the first version of the Driver Loader Library in System 7.5.2 and System Update 7.5.3. There is a bug in the routine GetDriverInformation that can possibly cause an overwriting past the end of the name string that it is passed in.
by Guillermo Ortiz
revised by Michael Marinkovich
This Technote describes the changes and enhancements, over time, to the Palette Manager.
Although the Palette Manager is documented in the Palette Manager chapter of Inside Macintosh: Advanced Color Imaging, this Technote sheds light on issues that may remain unclear after reading that chapter.
by Cameron Birse
revised by Michael Marinkovich
This Technote describes the format of data packed by the Toolbox utility PackBits and documents a change to the srcBytes limit and to the possible worst case.
by Ingrid Kelly
This Technical Note discusses known errors and omissions in Inside Macintosh: QuickDraw GX Environment and Utilities.
by Jim Friedlander & Ginger Jernigan
revised by Michael Marinkovich
This Technote provides an example of creating an off-screen bitmap by hand, drawing to it, and then copying from it to the screen. Apple encourages the use of GWorlds for your off-screen needs. In some cases, however, creating your own off-screens can be beneficial.
by Alan Mimms
revised by Michael Marinkovich
If you're building an application that uses color cursors, you may encounter some quirks present in Color QuickDraw. This Technote provides solutions to two common problems.
by James Benninghaus & Dennis Hescox
revised by Michael Marinkovich
This Technote addresses the 'SICN' resource format and how to handle 'SICN' Resources with more than one indexed icon. With minor modifications, the techniques in this Technote can be used to plot a bitmap of any dimension.
by Craig Prouse & Godfrey DiGiorgi
This Technote describes the Macintosh DMA Serial Driver, also known as SerialDMA 2.0. The SerialDMA driver is a replacement for the standard set of Macintosh serial device drivers often referred to by their driver names: .AIn, .AOut, .BIn, and .BOut. SerialDMA is applicable only to those Macintosh models which incorporate DMA channels servicing the standard Z8530 Serial Communications Controller.
by John Montbriand
This Technote discusses the various changes offered by
System 7.5 Update 2.0/System 7.5.3 and provides information regarding these changes and reference to information sources further discussing these changes.
by Merwyn Welcome
This Note addresses the genesis of and changes to the qd variable and the QDGlobals data type. The qd variable contains all QuickDraw global variables. This Note also demonstrates the correct usage of the qd variable and the QDGlobals data type.
by Ingrid Kelly
This Technote discusses known errors and omissions in Inside Macintosh: QuickDraw GX Objects.
by Ingrid Kelly
This Technical Note discusses known errors and omissions in Inside Macintosh: QuickDraw GX Printing Extensions and Drivers.
by Mike Blackstock & Ben Manuto
This Technote describes the APIs for implementing a printer-direct (or pass-thru) mode for Macintosh printer drivers. Implementing this feature will allow applications to identify and send printer data that is unique to the printer connected to the Macintosh without having to generate QuickDraw codes, understand how to connect to and maintain a connection with a particular printer, or handle communications errors with the printer.
by Paul Wenker & Kent Sandvik (DTS Emeritus)
The TV Tuner component is included in the Video Startup extension which is part of the Apple Video Player software. The component provides a standard API for accessing the TV tuner hardware available for the various Macintosh systems that have the TV tuner circuit or card available. This Technote describes the TV Tuner APIs.
by Brian Bechtel
This Technote explains some of the causes of "Type 11" and "No FPU Installed" errors, along with debugging hints to help you find and fix them. It also focuses on what you as a programmer can do to prevent such errors.
by Paul Wenker & Kent Sandvik (DTS Emeritus)
The Teletext component is included in the Video Startup extension which is part of the Apple Video Player software. The component provides a standard API for accessing the Teletext hardware available on the international and UK tuner cards. This Technote describes the Teletext component APIs.
by Larry Rosenstein (DTS Emeritus)
revised by Peter Gontier & Chris Forden
This Technote answers a common question about MPW C++: Why doesn't HandleObject support multiple inheritance? To answer that question, this Note provides a brief overview of how multiple inheritance is implemented in MPW C++.
by Paul Freeburn
With the second generation of Power Macintosh computers, Apple has transitioned the Macintosh I/O expansion bus from NuBus to PCI. This Technote examines the PCI bus commands, the operation of the IB chip (the PowerPC processor to PCI interface bridge chip), achievable PCI bandwidth on PCI Power Macintosh computers, and, finally, Mac OS services available to maximize PCI bandwidth.
by Tom Maremaa
Each Technote, when it works, has a particular set of elements that, if you step back and put them in perspective, contribute to the Note's effectiveness. This Technote outlines some of those elements.
by Bryan Stearns (DTS Emeritus)
revised by Matt Mora
In the chapter on the Resource Manager in Inside Macintosh: More Macintosh Toolbox, owned resources are explained, but the chapter does not include a sample of how to actually figure out the resource's base value. This Technnote includes a shortcut in C, Pascal and ASM to accomplish this task.
by Bryan Stearns (DTS Emeritus)
revised by Mark Cookson
This Technote explains how to use SimpleText to create Release notes and ReadMe files, complete with pictures and sound, even QuickTime movies. This Note also showcases some of the new features that have been added to SimpleText 1.3.
by Jim Reekes & Dave Radcliffe
This Note contains information about the version of the Component Manager that shipped with QuickTime 1.6 and the changes necessary to support native PowerPC components.
by Jim Luther (DTS Emeritus)
revised by Matthew Xavier Mora
This Note highlights two points - interrupt latency, and task record ownership - that might be unclear after reading the chapter "Deferred Task Manager" in Inside Macintosh:Processes.
by John Montbriand
Launching an application with a document under System 7 requires the use of the AppleEvent Manager to either directly send an open document event to an existing application or indirectly send an open document event to an application as part of its launch sequence. This Technote describes how you can do this in your applications and provides a simple example of how you can use the technique.
by Wayne Flansburg
This Note briefly addresses porting existing 68K interrupt code to the NuBus PowerPC. It then discusses the new interrupt management scheme developed for PCI PowerPC.
by Tom Maremaa
This is an Author's Guide to the new structure that Apple has evolved for Macintosh Technotes.