Apr 90 Letters
Great Books for Developers
By David E. Smith, Editor & Publisher, MacTutor
Bring out the books
As assistant editor, I am constantly asked, what product could help me ? Now MacTutors library of books is fairly extensive. The trouble with technical computer books is that they get out of date rather quickly. This problem has lessened some as the Mac becomes more standard in its routines. Coming out on the market (which youll find right about now in bookstores when you read this) are a number of books that will no doubt find themselves in every developers library.
Addison-Wesley has a number of books released or soon to be released. Macintosh® Inside Out is a new series of books covering the evolving Macintosh technology. The first two deal with object oriented programming (does anyone not know of OOPs importance?). The first book by David A. Wilson, Larry S. Rosenstein, and Dan Shafer (very well known and well respected individuals) is called Programming with MacApp®. This book covers OOP using MPW, Object Pascal, and the MacApp class library. The book will also be available in a book/disk package.
The second book, due out in August, is by an equally known author, Dan Weston. The book is entitled Elements of C++ Macintosh Programming. This book will cover the C side of MacApp.
If this were not enough, there are two books already out by Addison-Wesley that I highly recommend. The first is called On Macintosh Programming: Advanced Techniques. This book written by Daniel K. Allen. In it, Mr. Allen gives example after example of useful tools and applications. Another book out is Macintosh Programming Primer by Dave Mark and Cartwright Reed. This book covers THINK C as a way to the toolbox. Anyone wishing to work in this fine environment has found accessing the toolbox a little tricky. This book should bring you up to speed.
It is quite evident as to the commitment of Addison-Wesley in providing high quality, technical books for the Macintosh developer.
File Manager never passes back ioNamePtr
S.C. Kim Hunter
Laguna Hills, CA
Steve Brecher (Letters, MacTutor, Jan 90, INITs in Pascal or C) made a point that is worth re-emphasizing. The File Manager NEVER passes a pointer back in ioNamePtr for any of the File Manager calls. Inside Macintosh is a bit misleading so that someone not quite up to speed can get faked out, as I was when I first attacked the File Manager, and as was the writer of the C Workshop INITs article in the Oct 89 MacTutor on which Steve was commenting.
In the description of the function PBGetVol, Inside Macintosh, page II-104, says: PBGetVol returns the name of the default volume in ioNamePtr.... Inside Macintosh, page IV-131, attempted to clarify that with: PBGetVol returns a pointer to the name of the default volume in ioNamePtr.... Both are misleading. Also the parameter block arrows drawn for PBGetVol and PBHGetVol show ioNamePtrs arrow pointing to the left, suggesting a pointer is returned. (Other calls with left arrows are PBGetWDInfo and PBGetFCBInfo, and some show both directions). Until I figured out that this is misleading, I thought that the File Manager was allocating memory and passing the POINTER back. Many erratic crashes ensued using calls when I didnt care about the name.
PBGetVol doesnt return anything in ioNamePtr. Both volumes should state: PBGetVol returns the name of the default volume in the address pointed to by ioNamePtr (unless ioNamePtr is NIL)... Before using ANY File Manager low level calls, you must either set ioNamePtr to NIL or allocate memory for a Str255 and put the pointer into ioNamePtr. This is clearly stated on Inside Macintosh pages II-88 and IV-104.
I enjoyed both INITs articles and Steve Brechers comments.
In Search Of Macintalk
Steve Halls, M.D.
#303, 3837 Luther Place
Canada, S7H 4B1
Can your readers help me locate and contact Joseph Katz and Mark Barton, the programmers who created Macintalk? I would like to hear the story behind its development, and how it ended up unsupported by Apple. (I understand that Apple does not have the source code.)
Secondly, have any of your readers had experience on other computer systems where there is a significant component of speech in the user interface? I would like to know what kinds of spoken interaction are friendly and helpful, and what is redundant.
I am the creator of Talking Moose (currently at v2.3), and for the upcoming System 7, I plan to modify that technology into a background application, providing a general speech and face animation facility. (Applications could request speech by sending messages using the Inter-Application-Communication.) And I want to include some plug-in modules for new abilities such as: talking to the user by name, saying Thank-you where appropriate, and calendar/time reminders. What other uses for speech have your readers thought of?
First of all I want to thank you and the MacTutor team for the best Macintosh Magazine available all around the world (I subscribed via Pandasoft, Berlin); every article contains valuable information and is interesting and entertaining to read. But now I have a question and I hope anybody at MacTutor may give me a hint.
First of all I programmed a few years ago in good old Turbo Pascal before I switched to THINK C about a year ago. Im completely satisfied using C but when Ill start computer sciences in October, Ill need a Modula-2 compiler. Well, I couldnt find a contributing editor specialized in Modula-2. So I hope you can recommend one Modula-2 compiler for the Macintosh; Im using a Macintosh SE/30 4/40. I read about three current available compilers. Apple Germany also distributes a Modula-2 Compiler with its MPW, but its quite expensive because I dont own the MPW Shell at the moment (about 1100,00 marks - about 500-550 dollars I would guess). Is it worth the money? Please give me a hint to get the right Modula2 Compiler, thank you very much.
[Unfortunately, I do not have much experience with all the different compilers on the market. Maybe some of our readers can be a help with their suggestions.
Might I suggest you contact MetroWerks at Mail Stop #95, Hudson Heights, Quebec, Canada J0P 1J0. Their standalone compiler is only $179. They have a version for MPW ($150 alone and $275 with the MPW) They also have a Start Pack for $39 which would give you a flavor of their compiler. Their phone number in Canada is 514-458-2018. -ed]
True Basic Contest Winners
In West Lebanon, New Hampshire, True Basic just finished their 1st Annual Best-of-Basic Contest. Almost fifty entries using Macintosh, IBM, Amiga, and other platforms competed for $1500 in prizes.
The winner was Eugene Zaustinsky, a professor of mathematics at SUNY/Stone Brook. His entry was called Plotsurf and was under the Educational Applications category. His application plots graphs of the function z=f(x,y) and shows level curves, gradient vector fields, partial and directional derivatives.
Mouser for THINK C
There is a SmallTalk-like browsing tool out there called Mouser which makes learning the THINK C Class library much easier to learn and deal with. The most recent incarnation of Mouser is 1.2d5, and it is available on AppleLink in the MacApp discussion folder; it may also be available on CompuServe, but I am not sure about this. Mouser is written by Mary Boetcher of Apple Computer using MacApp and is primarily used for browsing (or Mousing) Apples MacApp and C++ files, but it can be fooled into parsing THINK C 4.0 code with the following changes to your files.
Here is the latest on how to get Mouser 1.2d5 to work with THINK C 4.0.
1. Add the following macro just before the definition of CObject in CObject.h:
/* 1 */
#define class struct/* macro for Mouser */
struct CObject:indirect /* Class Declaration */
Since CObject.h eventually gets included in all compilations, the macro will be globally available.
2. Change all header files in THINK C folder Core Headers and More Headers by replacing struct with class:
/* 2 */
class CObject:indirect /*Class Declaration */
Since all members of THINK C classes are public, there is no need to add the public: qualifier before the instance variables and methods.)
3. From now on, use class instead of struct when creating new classes /subclasses.
4. Recompile your project to verify that the macro definition has not goofed anything up. Now its time to Parse! Start up Mouser, Cancel the opening dialog box, then choose C++ from the Parse menu. Next choose New Parse from the File menu. Parse all the files in the Core Classes, Core Headers, More Classes, More Headers, and of course the headers and C files of the application you are currently working on.
5. To keep your Mouser browse file up to date, just Reparse your application header and C source from time to time. Once youre hooked on browsing, youll never want to program in the dark again.
Thanks again to Mary Boetcher for making Mouser available.
[This points out the lack of modifiable environment that THINK has. The tools in MPW help make it rich. And there are scores of tools for MacApp. Yet THINKs superb environment lacks a simple tool interface. Anyone? Anyone at all? -ed]
P.O. Box 14687
Spokane, WA 99214
A new keyboard has just entered the race against third party product Mac-101 by DataDesk. The MacPro by key tronic offers a 105 key board with adjustable legs. It sports a large "L" return key ending the fumble time. It is also packaged with Tempo II, a macro driver. This keyboard has dual IBM and Mac legends and an LED "power on" indicator. The keyboard retails for $197.