Technotes Summary Index

Mac OS Technotes 1001-1171

LaserWriter 8.6: How to Write a Converter Plug-in for the Download Manager (Technote 1171)

By David Gelphman and Ingrid Kelly
Revised by Dave Polaschek

This document describes in detail how to write a plug-in converter module for use with the Download Manager under PrintingLib version 8.6 (included with LaserWriter 8 version 8.6) and later. It contains information about the pieces a plug-in must have, discussion of a sample plug-in and tips for plug-in developers. This Technote is directed at application developers who wish to write plug-in converters.

The Printing Plug-ins Manager (Technote 1170)

By David Gelphman
Revised by Dave Polaschek

The “Printing Plug-ins Manager” is intended to make it straightforward for software clients to create, load, and use shared libraries which can be treated as printing plug-ins. The Download Manager has been implemented using the Printing Plug-ins Manager to manage its plug-ins. Future printing software will use the Printing Plug-ins Manager to manage other plug-ins. This Technote is directed at application developers who wish to write plug-in modules.

The Download Manager (Technote 1169)

By David Gelphman
Revised by David Gelphman & Dave Polaschek

This Technote discusses the Download Manager API that Download Manager clients would use to call the Download Manager to cause a file, or other data, to be downloaded to a PostScript printer. (The Desktop Printing software is an example of a Download Manager client that uses this API.) Furthermore, this Technote examines the APIs that the Download Manager uses to call the low-level converters. This material is intended for the writers of the low-level converters which are called by the Download Manager.

The Care And Feeding of Runtime.exec (Technote 1168)

By Jens Alfke
Sample code by Levi Brown

Runtime.exec is probably the single least cross-platform-compatible part of the Java API set. It assumes the existence of a command-line interface to the OS and the ability to launch arbitrary apps that can accept arbitrary parameters. Nevertheless, there are times when you need to use it—for instance, to open a URL in a Web browser or to spawn a new Java process. This Technote describes MRJ 2.1's implementation of Runtime.exec and how it differs from that of the JDK.

The Mac ROM Enters a New World (Technote 1167)

By Paul Resch
Revised by Wayne Flansburg

This technote describes the changes to the new Apple ROM called NewWorld, which was introduced with the iMac. NewWorld will be the ROM used on all future Macintoshes. This Note is directed at device developers who have devices such as PCI, USB, and FireWire (especially device types that could participate in the boot sequence).

LaserWriter 8.6.5 Job Log Format (Technote 1166)

By Ingrid Kelly

LaserWriter 8.6.5 provides the option of creating a job log that contains a description of the job's settings, including a summary of the fonts used in the job. This Technote describes the job log format for individuals who wish to use the job log to solve various prepress printing issues.

Introducing the LaserWriter 8 Driver version 8.6.5 (Technote 1165)

By Ingrid Kelly

This Technote outlines some of the new features and changes that Apple has made in the LaserWriter 8 version 8.6.5 driver and Desktop Printer Utility 1.2 (both released as part of Mac OS 8.6). It describes expanded technology and user interface support and what these mean to the developer community. LaserWriter 8.6.5 is only supported on Mac OS 8.6 running on PowerPC machines.

Native Scripting Additions (Technote 1164)

By Andy Bachorski

This Technote describes the native scripting additions mechanism for AppleScript introduced in Mac OS 8.6. The native scripting additions mechanism described here addresses limitations in the classic code-resource-based mechanism, and provides a way to package the handlers in a scripting addition as a single shared library. This packaging allows the sharing of code and the ability to maintain a persistent state between calls. This Technote is directed at application developers who create scripting additions.

Mac OS 8.6 (Technote 1163)

By John Montbriand

This Technote discusses changes in and corrections to the next generation of Mac OS: Mac OS 8.6. This system follows Mac OS 8.5.1 (the majority of whose features are found in Mac OS 8.5) and contains several new and revised features, including improved multiprocessor support, support for new Apple CPUs, improved QuickDraw Text performance, better MRJ performance, and bug fixes.

Introduction to MRJ Scripting with AppleScript for Java (Technote 1162)

Compiled by Michael Hopkins

With the release of MRJ 2.1, AppleScript support in Java applets and applications is now a reality. This Technote covers the technical information you will need to take full advantage of AppleScript in your Java application.

Extending the Print Record for LaserWriter 8 (Technote 1161)

By Richard Blanchard
Revised by Dave Polaschek
Sample code by Dave Polaschek

This Technote describes what changes need to be made in your application to support drivers that use extended print records in LaserWriter 8.

What's New With ColorSync 2.6 (Technote 1160)

By Scott Kuechle

ColorSync 2.6 is the latest version of Apple Computer's color management architecture for Mac OS, Windows 95/98, and Windows NT 4.0. This Technote describes in detail the changes in this new version of ColorSync. This note is primarily intended for developers who are using the ColorSync APIs.

Data Fork Font Support in Mac OS 8.5 (Technote 1159)

By Alex Beaman and Ingrid Kelly

Traditionally, TrueType fonts have existed on the Mac as 'sfnt' resources in suitcase files. With the release of Mac OS 8.5, this has changed. This Technote describes the new support that Apple has added to Mac OS 8.5 for data fork-housed TrueType and OpenType fonts. This note also details the possible compatibility issues and what you can do about them.

Levatatus Interruptus (Technote 1158)

By George Warner

The use of floating point instructions is usually handled by a development system's libraries. One special case not properly handled by these libraries is the saving and restoring of the volatile floating point registers for interrupt routines. Floating-point assembly code will need to be written for this case. This Technote is of interest to any developers writing PowerPC interrupt routines that use floating point registers.

Don't println to a Socket (Technote 1157)

By Jens Alfke

A common cause of deadlocks in client-server Java applications when running on Mac OS stems from improper use of the println method when writing to an OutputStream connected to a Socket. Here's why, and what you can do about it.

Scribbling Into AWT Components (Technote 1156)

By Jens Alfke

This Technote describes how to draw into an AWT Component by means other than the Java AWT Graphics API. In particular, by discovering the QuickDraw GrafPort, origin, and clipping Region corresponding to the Component’s visible area, you can use any means at your disposal (most likely QuickDraw) to draw things inside the Component.

JNI Tips: Building Your Native-Method Libraries For MacOS (Technote 1155)

By Jens Alfke

JNI (Java Native Interface) is a cross-platform standard for implementing Java methods in native code. MRJ 2.0 and 2.1 support JNI; however, some developers run into trouble getting their JNI libraries to work correctly on Mac OS. For the most part these are build- and installation-related issues. This Technote is designed to put you at ease.

Debugging Java Code With MacsBug (Technote 1154)

By Jens Alfke

MacsBug, the low-level debugger for the Mac OS, seems unlikely to be useful for debugging a very high-level language like Java. Au contraire! The MRJ plug-in 'dcmd' for MacsBug adds a number of commands that can help you debug everything from deadlocks to memory leaks. This Technote introduces MacsBug for those not familiar with it, and shows how to use the MRJ commands to debug your Java code.

Thread-Safe Toolbox Access From MRJ (Technote 1153)

By Jens Alfke

Java is pervasively multi-threaded. The Mac OS isn’t. Most of it isn’t re-entrant, and parts of it are very dependent on global state that needs to remain consistent from one call to the next. This can cause big problems when trying to call the Mac OS directly from Java. This technote describes synchronization techniques that will allow your native or JDirect code to play safely when making OS or Toolbox calls, especially as we move forward to Mac OS X.

JIS Keyboard Support in Mac OS 8 (Technote 1152)

By Stephen Chick

Based on a DTS-J Technote by Takayuki Mizuno and Masato Nagamatsu

This Technote describes the mechanism introduced in Mac OS 8 to support JIS (Japanese Industrial Standards) keyboards. Developers designing input methods or applications that rely on keyboard layout information should read this technote.

Creating NetBoot Server-Friendly Applications (Technote 1151)

By John Signa

This Technote describes some guidelines that application developers should follow to ensure that their applications are able to work correctly in a NetBoot environment.

HFS Plus Volume Format (Technote 1150)

By Apple Worldwide Developer Technical Support
Updated by Quinn "The Eskimo!"

This Technote describes the on-disk format for an HFS Plus volume. It does not describe any programming interfaces for HFS Plus volumes. It is directed at developers who need to work with HFS Plus at a very low level, below the abstraction provided by the File Manager programming interface. This includes developers of disk recovery utilities and programmers implementing HFS Plus support on other platforms.

Smoothing Fonts (Technote 1149)

By Joseph Maurer

This Technote explains the current implementation of the "Smooth all fonts on screen" checkbox in the Appearance control panel of Mac OS 8.5, and discusses its limitations and the possible compatibility problems with existing applications. It then documents the new APIs that allow applications to take control over anti-aliased text rendering. Finally, it explains why anti-aliased text looks so bad when highlighted (in particular with dark highlight colors), and what you can do to solve the problem.

Dialog Manager Helper Functions (Technote 1148)

By C.K. Haun
Revised by Mark Cookson

This Technote discusses Dialog Manager calls available since System 7.0 which can ease the work of managing dialogs. They allow you to call on the services of the System to track the mouse cursor (i.e., change to and from the I-beam cursor) and handle the standard keystrokes for accept and cancel in your dialog.

Pending Update Perils (Technote 1147)

By C.K. Haun
Revised by Mark Cookson

This Technote discusses potential problems when pending update events for windows behind modal dialogs are not serviced.

LaserWriter 8.6 and Fonts (Technote 1146)

By David Gelphman and Ingrid Kelly

Updated by David Gelphman

Many developers and prepress houses have contacted Apple for detailed information on how LaserWriter 8 works with fonts. They request this information so that they can better optimize their applications and workflows. This Technote gives a brief overview of font and printer driver interactions for LaserWriter 8.6.

Living in a Dynamic TCP Environment (Technote 1145)

By Quinn "The Eskimo!"

This Technote describes some of the intricacies of dealing with TCP/IP in a dynamic environment, such as that provided by Open Transport. Specifically, it describes how to write Open Transport code which correctly handles multiple IP addresses, dial-up links, sleep and wakeup on PowerBooks, modem disconnection, and user reconfiguration. This Technote is directed at all developers using Open Transport TCP/IP services.

Writing Custom Hoses For LaserWriter 8.6 (Technote 1144)

By Richard Blanchard and Ingrid Kelly

LaserWriter 8.6 supports printing to a variety of desktop printer types, including PAP, LPR, and IrDA. Each desktop printer can have its own method of communicating with its associated physical printer, RIP, or other post-printing processor. LaserWriter 8.6, through the invention of custom "hoses", adds the ability for shared libraries to implement various communication methods and for these libraries to be loaded dynamically based upon a DTP's type. This Technote gives an overview of the custom hose specification for developers.

Introducing the LaserWriter 8 Driver Version 8.6 (Technote 1143)

By Ingrid Kelly

This Technote outlines some of the new features and changes that Apple has made with the LaserWriter 8 version 8.6 release. It describes new utilities, expanded technology support, and what this means to you, the developer. LaserWriter 8.6 is supported on Mac OS 7.6.1 and above, and on 68040 and PowerPC machines only.

Mac OS 8.5 (Technote 1142)

by John Montbriand

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:

Extending and Controlling Sherlock (Technote 1141)

by John Montbriand
updated by Wayne Loofbourrow

This Technote describes several enhanced searching capabilities in Mac OS 8.5, known collectively as Sherlock. Previously, the Mac OS Find application allowed users to search mounted disk volumes for files based on information such as name, modification date, and file type. Sherlock retains this functionality, but also extends the user's search options to include both the content of files and the Internet.

The Euro Currency Symbol (Technote 1140)

by Ingrid Kelly

This Technote describes Apple's support for the Euro Currency Symbol.

QuickTime 3.0.2 (Technote 1139)

by the QuickTime Team

This Technote describes the changes between the final release of QuickTime 3.0 and the update release of QuickTime 3.0.2.

High-Speed SDRAM Design Considerations (Technote 1138)

by Gary Phillips

This Technote is directed at memory developers who are involved in the design and manufacture of high-speed RAM memory modules for Macintosh computers.

Disabling Interrupts on the Traditional Mac OS (Technote 1137)

by Quinn "The Eskimo!"

This Technote is directed at developers who are building kernel-level software, such as device drivers, or application software that makes heavy use of Mac OS "interrupt time." In general, application developers should not need to disable interrupts.

MicroBug: The ROM Debugger (Technote 1136)

by Louella Pizzuti
Revised by Quinn "The Eskimo!"

This Technote describes the features of MicroBug, the ROM debugger present in all Macintoshes from the Mac Plus onward. Revised to explain why "G FINDER" works.

Dealing with PCI Expansion Chassis Problems (Technote 1135)

by Gary Phillips

This Technote is directed at developers of PCI cards so that they will understand the compatibility issues that might arise if their product is used in a PCI expansion chassis. There are both hardware and software issues that need to be considered.

The Preferences Problem (Technote 1134)

by Mark Cookson
updated by Mark Cookson

This Technote will attempt to outline the problems with preferences files and the solutions to those problems so that you can code a robust solution.

The New PrGeneral Version Opcode (Technote 1133)

by Ingrid Kelly

This Technote is directed at both printer driver and application developers who need to work around the 256-number device ID limitation of the Printing Manager.

Version Territory (Technote 1132)

by Darin Adler
Revised by Andy Bachorski and Rich Collyer

This Technote clarifies the format of data in the NumVersion structure used in a version resource, and provides guidelines for the use of version resources based on the version numbering scheme used at Apple.

Creating Desktop Printers on the Fly (Technote 1131)

by Ingrid Kelly, Apple Computer, Inc. and C.S. Lin, RBI Software Systems, Inc.

This Technote documents the method that Apple uses to create desktop printers on the fly, without having the user go through Chooser.

(Technote 1130)

This Technote has been withdrawn.

LaserWriter 8.5.1: The Settings Library (Technote 1129)

by Ingrid Kelly, Apple Computer, Inc. and Richard Blanchard, RBI Software Systems, Inc.

This Technote overviews the Settings Library, which was introduced in LaserWriter 8.5.1.

Understanding Open Transport Memory Management (Technote 1128)

by Quinn "The Eskimo!"

This Technote describes how Open Transport's interrupt-safe memory management system works, and how you can use it for best effect in your software.

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.

Mac OS 8.1 (Technote 1121)

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.

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:

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.

Mac OS 8 (Technote 1102)

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.

Extensions Manager 4.0 (Technote 1091)

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.

Maximizing Your Media: A Brief Guide To the Latest and Greatest QuickTime Media Types (Technote 1087)

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.

Understanding the Differences Between Apple and Windows IMA-ADPCM Compressed Sound Files (Technote 1081)

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 <>.

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.

System 7.5.5 (Technote 1069)

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.

Using QuickDraw GX Functionality from Pascal or Modula-2 -- Without Writing Any C Code (Technote 1065)

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.

Inside Macintosh: Operating System Utilities: Addendum to Chapter 4 -- Determining If Daylight Savings Time is in Effect (Technote 1064)

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.

Further Reference:

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.

Further Reference:

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.

QuickDraw GX ConicLibrary.c in Detail: Description and Derivations (Technote 1052)

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.

Understanding Conic Splines (Technote 1051)

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.

System 7.5.3 Revision 2 (Technote 1050) - Release 1.1

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.

Approaching the Millennium: The Mac and the Year 2000 (Technote 1049)

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.

Some Sound Advice: Getting the Most Out of the Sound Manager (Technote 1048)

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.

On Creating Web-Friendly Documentation: A Few Techniques (Technote 1047)

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.

Inside Macintosh: Devices, Power Manager Addenda (Technote 1046)

by Vinnie Moscaritolo

This Technote discusses addenda to the Inside Macintosh: Devices, Power Manager Chapter.

On Changes to QuickTime Conferencing Components: New Error Codes, Behavior & Methods of Retrieving Errors (Technote 1045)

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

Fundamentals of Open Firmware, Part III: PCI Expansion ROM Contents for Mac OS 8 (Technote 1044)

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.

Further Reference:

On Drag Manager Additions (Technote 1043 - Release 1.1)

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.

Strategies for Dealing with Low-Memory Conditions (Technote 1042)

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.

Inside Macintosh: Files Errata (Technote 1041)

by Jim Luther
Updated by Jim Luther & Pete Gontier

This Technote discusses known errors and omissions in Inside Macintosh: Files.

Write Cache Flushing: Techniques for Properly Handling System Shutdown (Technote 1040)

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.

Access & the Power Manager:Headaches & Cures (Technote 1039)

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.

QuickDraw GX OffscreenLibrary.c in Detail: Description, Uses & Limitations (Technote 1038)

by Cary Clark

This Technote discusses OffscreenLibrary.c from the QuickDraw GX Libraries.

QuickDraw GX MappingLibrary.c: Its Uses and Limitations (Technote 1037)

by Cary Clark

This Technote discusses MappingLibrary.c from the QuickDraw GX Libraries.

QuickTime VR 1.0 Object Movie File Format (Technote 1036)

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.

QuickTime VR 1.0 Panorama Movie File Format (Technote 1035)

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.

Inside Macintosh: QuickDraw GX Graphics Errata (Technote 1034)

by Ingrid Kelly

This Technical Note discusses known errors and omissions in Inside Macintosh: QuickDraw GX Graphics.

Interrupts in Need of (a Good) Time (Technote 1033) - Release 1.1

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.

Mixing QuickDraw & PostScript Printing from Your App: Some Gotchas (Technote 1032)- Release 1.1

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.

History & Peregrinations: The Dogcow Goes QuickTime VR (Technote 1031)

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.

A Technique for Estimating the Total RAM You Need for a QuickTime VR Project (Technote 1030)

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.

Getting Up to Speed with QuickTime VR: Notes from the Field (Technote 1029)

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.

Inside Macintosh: GX Series Addenda (Technote 1028)

by Ingrid Kelly

This Technote discusses addenda to the Inside Macintosh: QuickDraw GX Series.

On the Importance of Print Testing: A Brief Checklist (Technote 1027)

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.

The Notification Manager: Problems & Fixes (Technote 1026) - Release 1.1

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.

Driver Loader Library Call GetDriverInformation: A Bug & Workaround (Technote 1025)

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.

Palette Manager Tidbits (Technote 1024)

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.

Understanding PackBits (Technote 1023)

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.

Inside Macintosh: QuickDraw GX Environment and Utilities Errata (Technote 1022) - Release 1.1

by Ingrid Kelly

This Technical Note discusses known errors and omissions in Inside Macintosh: QuickDraw GX Environment and Utilities.

Creating Off-Screen Bitmaps When Speed is Critical (Technote 1021)

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.

Color Cursing: Two Major Causes (Technote 1020)

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.

Plotting Small Icons: The 'SICN' Resource (Technote 1019)

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.

Understanding the Serial DMA Driver (Technote 1018)

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.

System 7.5 Update 2.0; System 7.5.3 (Technote 1017)

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.

Where Has My qd Gone? And How Do I Use qd and QDGlobals Correctly? (Technote 1016)

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.

Inside Macintosh: QuickDraw GX Objects Errata
(Technote 1015) - Release 2.0

by Ingrid Kelly

This Technote discusses known errors and omissions in Inside Macintosh: QuickDraw GX Objects.

Inside Macintosh: QuickDraw GX Printing Extensions and Drivers Errata
(Technote 1014) - Release 2.1

by Ingrid Kelly

This Technical Note discusses known errors and omissions in Inside Macintosh: QuickDraw GX Printing Extensions and Drivers.

Printer Mode APIs for Macintosh Printer Drivers (Technote 1013)

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.

QuickTime TV Tuner APIs (Technote 1012)

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.

Understanding Type 11 & No FPU Installed Errors on the Power Macintosh (Technote 1011)

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.

QuickTime Teletext Component API's (Technote 1010)

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.

On Multiple Inheritance & HandleObjects (Technote 1009)

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++.

Understanding PCI Bus Performance (Technote 1008)

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.

On the Elements of a Technote (Technote 1007)

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.

A Technique for Figuring Out a Resource's Base Value (Technote 1006)

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.

The Compleat Guide to SimpleText (Technote 1005)

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.

On QT Component Manager 3.0 & PowerPC Native Components (Technote 1004)

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.

On the Deferred Task Manager (Technote 1003)

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.

On Launching an App with a Document (Technote 1002)

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.

On Power Macintosh Interrupt Management (Technote 1001)

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.

Inside Macintosh--Memory Errata (Technote IM02)

by Tim Monroe
updated by Quinn "The Eskimo!"
updated by Mark Cookson

This Note discusses known errors and omissions in Inside Macintosh: Memory.

You Want Permission to do What?!! (Technote FL37)

By Jim Luther
Updated by Jim Luther

This note gives an in-depth explanation of the File Manager and AFP permission models used by the File Manager to open files. It also tells how a File Sharing or AppleShare file server implements the AFP permission model on the server Macintosh.

CD-ROM Driver Calls (Technote DV22)

by Chris Brown, Neil Day, and Brian Bechtel
revised by Sérgio J. Henriques
updated (again) by Vinnie Moscaritolo

This Note is directed at developers who are writing special purpose application software that needs to access the audio or data portions of a CD-ROM directly.

Our Checksum Bounced (Technote DV12)

by Jim Reekes
revised by Quinn "The Eskimo!"

This Technical Note discusses a fix to a SCSI Manager bug which concerns all developers working with SCSI and NuBus™ device drivers. The Note now includes the driver checksum algorithm, otherwise only documented in Inside Macintosh, Volume V.

ADB-The Untold Story : Space Aliens Ate My Mouse (Technote HW01)

by Cameron Birse and Rich Kubota
revised by Tim Dierks and Jim Mensch
revised (again) by George Warner

This Note explains a number of esoteric and unknown issues concerning the Apple Desktop Bus (ADB). It is intended to detail information concerning all levels of the ADB, from the hardware to the application usage level.

Author's Guidelines

by Tom Maremaa

This is an Author's Guide to the new structure that Apple has evolved for Macintosh Technotes.