
Dear Readers,

I just got back from sabbatical and it was great: I left and could hardly remember that I had ever worked for Apple, and now that I'm back I can hardly remember that I ever left.  It's good, I think, to be fully where you are as you linger.  

Upon my return, I wasn't quite sure how, in my advanced state of equilibrium, I was going to find a way for drivers and clock parts to live together in a logical editorial. So I decided to throw logic out the window and to stick with what I know: taking an analogy and stretching it.  Here goes.

Clock parts are carefully crafted according to well-defined rules.  Along with following the rules, creativity and craftsmanship are brought to bear, so some clocks are more pleasing, better functioning, and longer lasting than others.  This is how it is with drivers, too.  Respect for the rules, creativity, and craftsmanship combine to make a driver tick.

Clock parts as a group (or a watch) keep track of the moment-by-moment passage of time, freeing us to focus our attention on things more riveting.  Similarly, a system-level driver lets your application focus on things more interesting (and useful) than hardware-specific details.  

So much for the analogy.  In this issue, Matt provides thorough coverage of the printer driver:  what it does, how it does it, and how to write one for the Apple IIgs  Zz tells even more about what your application can do with PostScript code to avoid perils posed by the LaserWriter driver.  And if you decide to write your own driver, you can follow the legions before you and launch into assembly language, or you can follow Tim's lead and try C++. 

On another topic, Scott A. Williams writes:

"On page 126, I believe that the AllocHeap method call to InitZone should have calls to GetZone and SetZone around it, like this:

THz  savedZone = GetZone ();
InitZone(nil, kNumDfltMasters, limitPtr, zonePtr);
SetZone(savedZone);

"Inside Macintosh, volume II, page 29, says, 'InitZone creates a new heap zone, initializes its header and trailer, and makes it the current zone.'  It's the 'makes it the current zone' part that's the problem.  Without the calls to GetZone and SetZone, any handles or pointers created after a call to the AllocHeap method would be allocated in the new heap created expressly for holding PtrObjects and not in the application heap where they belong."

Well, when Scott wrote he was right, and now he's sporting a fine new develop shirt.  When you write, you will too.

Louella Pizzuti
Editor

SUBSCRIPTION INFORMATION
Use the order form on the last page of the journal to subscribe to develop. Please address all subscription (and subscription-related) inquiries to develop, Apple Computer, Inc.,P.O. Box 531, Mt. Morris, IL 61054, (AppleLink Dev.Subs). ¥


BACK ISSUES
Back issues of develop are available through APDA (see inside back cover for APDA information), and are, of course, there for the browsing on each CD. ¥

COMMENTS
We welcome timely letters to the editor, especially from readers wishing to react to articles that we publish in develop. Letters should be addressed to Louella Pizzuti, 20525 Mariani Ave., M/S 75-3B, Cupertino, CA 95014 (AppleLink Pizzuti1). 
All letters should include name and company 


