October 90 - Editor's Note
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 II GS 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
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 (AppleLinkPizzuti1). All letters should include name and company name as well as address and phone number. Letters may be
excerpted or edited for clarity (or to make them look like they say what we wish they did). *
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. *