TweetFollow Us on Twitter

May 86 Letters
Volume Number:2
Issue Number:5
Column Tag:Letters & Opinion

Labels, Corrections, Book Reviews & Update List

Hot Air: The Editor's ViewPoint

Why Macintosh is Not a Business Computer

The Macintosh is a manager's computer. It was designed by middle managers, for other middle managers. It functions best in an environment where a large amount of numbers must be tracked and sorted in a spreadsheet with Excel or, for more technical needs, TK! Solver, plotted with Chart, pasted into reports with Word or MacWrite, and typeset for presentation with Pagemaker, MacPublisher or Ready-Set-Go. Where the data comes from is not the concern of the middle manager. He is only interested in making sense of the information, and in that, the Macintosh, with it's user interface and What-You-See-Is-What-You-Get graphics is unsurpassed. I myself have used the Mac this way while working for Hughes Aircraft. I took transistor test data from the integrated circuit production line and extracted modeling parameters with TK! Solver, plotted trend lines with Chart, and reported on production control versus IC performance with MacWrite and Pagemaker. A typical middle manager's job. But this has nothing to do with running a small business.

To run a small business, you need to be concerned with more mundane things in life. Like entering a customer order, printing an invoice and packing slip, notifying the customer that the red widget will ship this week, the blue widget is backordered until next month, and the yellow widget will ship a week from Tuesday. Then you have to make sure the shipping department gets all that straight! There is no Mac software presently on the market that can adequately keep track of the three widgets from the order entry clerk to the shipping clerk, invoice, packing slip, and all! That application needs the now infamous file server product that Apple never figured out how to make.

One of the things you need to keep track of widget shipping and customer orders is plenty of disk storage with daily back-up. Presently there are few hard disks on the market that meet this need. First of all, you need a SCSI drive that is reliable. And all the SCSI drive manufacturers are too busy debugging Apple's software drivers, and issuing weekly file system software upgrades to take time out to sell their products. However, two drives which may be worth while when the software settles (I advise waiting at least three months), are the AST drive on the high end and the LoDown drive on the bottom end. Both are SCSI drives, with tape back-up capability. The LoDown drive comes in 20, 40 and 80 megabytes with tape units in 20 or 60 megabyte units and the prices are very reasonable. Contact them at (415) 426-1747. The AST drive is a cadallac unit of 75 megabytes and a built-in tape unit. But it's not cheap! Contact them at (714) 863-1333.The Apple drive, and other internal drives like the Micah and Hyperdrive are great for those middle managers we talked about, but no businessman is going to be fool enough to put his customer base, the lifeblood of his business, on an internal drive without back-up and throw the Mac into the car! No, a hard disk needs to be gently laid to rest in a quiet corner of the office, protected from earthquake, flood, fire and small children. And backed up daily. Apple's hard disk product doesn't cut it for this type of use.

But does it do labels?

But enough of all this. Let's take an even more mundane and simple example. The most basic need of any business is to print out a mailing label. This the Macintosh cannot do. The Mac can print in any font, style, size. It can include graphics, produce typeset quality output, you name it. This entire issue of MacTutor was printed on the Mac! But it can't print four lines of simple text, hour after hour. And who can run a small business without mailing labels? Let's look at this example in depth. First you need a printer. Apple doesn't have one. The Imagewriter printer had no tractors to handle the labels correctly without jamming. Every month, we had to dig at least one label out of the inner workings of the thing. They didn't even have the decency to design the roller so that it could be removed for gummed up label removal! The best tool for the job turns out to be one of those flexible nail files your secretary probably has in her purse.

The Imagewriter II has made a small attempt to improve the situation. It has what might be described as micky-mouse tractors. They are at least better than nothing! But the labels still must pass around the roller, which causes them to peel. And worse of all, the metal band that holds the paper against the roller is so tight that it is impossible for the labels to back up out of the printer. Thus the only way to remove the labels when your done is to do it surgically by cutting the labels below the print head, and moving the labels forward.

That leaves the Laserwriter, which isn't worth mentioning because it can't do labels without manual feed. And even if you could find labels that would feed from the tray, you would waste half the labels since all the Mac software available only prints labels one up if they print labels at all. But even in manual feed, the labels sometimes jam up under the rollers that heat-set the toner to the paper. And a gummed up LaserWriter is of much more concern than an imagewriter! I've had it happen just enough to know never to try to do labels on the one piece of equipment that MacTutor cannot do without.

So let's ignore the hardware problem for the moment. What application do you use? The first program was Mail Manager, written by some guy in Germany and distributed by SofTech. The problem is, the guy wrote software for the Mac like it was an Apple II. He ignored the toolbox guidelines, coded specific machine dependent routines so that the program needed an update to run on the 512K Macs, and then another update to run on the Mac Plus. Well, SofTech managed to get the 512K Mac upgrade out as version 1.1, but by the time of the Mac Plus, SofTech had gone out of business, so goodby future upgrades! The product won't work on HFS systems, and is frustrating in its design anyway.

The other mail list program is Bulk Mailer. While this seems at least workable, it too suffers from a frustrating lack of flexibility that makes it a poor choice. No, the only real solution is a data base program. But none of them do labels correctly. And none of them do anything other than one up labels. Still, FileMaker is without question the best data base program on the market, so we went with that one. It is easy to use, works reliably with the LaserWriter and Mac Plus and doesn't require you to learn reformed Egytptian! FileMaker follows the Apple guidelines to the letter, which when it comes to labels, brings us to the print driver problem.

My Kingdom for a Printer Driver!

It is obvious the Mac was designed to print term papers, not mailing labels. When a print file is opened, quickdraw commands entered, and the file then closed, the Mac supposedly composes and prints the desired page. In other words, printing on the Mac is page oriented. Someone along the way decided that after a page is printed, the next page should be brought up ready to print, so someone in the bowls of the ROM issues a page break. On the imagewriter, this advances the paper to the top of the next page. But when you do labels, you don't want a page advance. So, in the new imagewriter drivers, someone put a check box to turn off the page break. Ever watch the imagewriter print? It goes ahead and does the page break anyway and then finds the no page break box checked, so it backs up to the top of the page. But you can't back up mailing labels in the imagewriter without inviting a jam eventually. Catch-22!

Of course the answer is that Apple simply does not make a business printer. The imagewriter is only good for a base for the thunderscan device and the LaserWriter is a superb but expensive typesetter. Apple has no mundane business printer. So the solution is to buy another printer, like a NEC 8810 or some other letter quality printer with large, reliable tractors, and bottom feed that moves the labels in a straight line past the print head. But how do you get it to talk to the Macintosh? Assimilation Process produces a printer driver modification called the Daisy Wheel Connection that patches the Imagewriter file to work with various business printers. But what do you suppose happens when the Imagewriter driver front end does it's silly page break, back-up routine? Of course the command to back-up the imagewriter is not the same command to back-up anybody else's printer, and the result is the page break is inserted into the middle of your label printing causing the label alignment to get off. I have found that when using Filemaker, the only solution is to not check the no page break box at all. Then, if you use 1.5 inch labels, and select international fanfold, behold, like magic, you get a page break exactly equal to the width of a single label, allowing you to print labels correctly, as long as you don't mind getting seven labels and one blank label per page. A mere waste of 12% of your labels! And such is how this issue of MacTutor was mailed. I rest my case. The Macintosh can't print labels. And if it can't do the most mundane of all business tasks, it can hardly be called a business computer. But I'm sure it will do a great job of preparing a report for the Editorial board on how much time and money I've spent trying to get labels printed this month!

The MacTutor Solution

The real solution lies in alternative print drivers. What we need is a variety of print drivers that can be installed from the Chooser desk accessory that can handle a variety of printing needs. When you need mailing labels, you select a label driver that prints labels in draft mode correctly without this page break nonsense. When you do typesetting, you select the LaserWriter driver. When you need some other type of printing, you select the driver best suited for the application. In otherwords, the imagewriter driver cannot be all things to all people. MacTutor is very interested in publishing alternative printer drivers and we invite software developers to help us open up this last great Mac secret by helping us publish more information on how print drivers can be constructed that for one thing, will do some of the more simple mundane things a business needs, like printing mailing labels. That's our opinion. We welcome yours. Write to Letters to the Editor Dept., care of MacTutor, P.O. Box 846, Placentia, CA. 92670.

Letters

Clock DA source correction

Don Melton

Santa Ana, CA

For those of you typing in the Clock DA I wrote for the April 1986 issue of MacTutor, be warned, there is a typo in the magazine source listing. It's my fault, not David Smith's -- probably my old brain tumor acting up again. Thanks go to MacScotty of the MouseHole BBS for finding this error. Turn to page 46, and in the 'open' function you'll find it also. Here's the problem line and the correction:

INCORRECT SOURCE:

 drvrID = 0xC000 - (32 * (1 + dce->dCtlRefNum));

CORRECT SOURCE:

 ownedID = 0xC000 - (32 * (1 + dce->dCtlRefNum));

It seems I accidently used an older variable name from a previous version of my source code. This mistake does NOT appear on the source code disk available from MacTutor.

There is also a non-destructive typo later in the same source. It does not cause errors but I thought you all might want to know about it anyway. Thanks go to Katz of the MouseHole BBS for pointing out this one. Turn to page 48, and in the 'doMenu' function you'll find these four lines:

QUESTIONABLE SOURCE:

 dce->dCtlFlags &= 0xFBFF; /* clear dCtlEnable */
 dce->dCtlFlags ^= 0x4000; /* set dNeedLock */
 :
 dce->dCtlFlags ^= 0x4000; /* set dCtlEnable */
 dce->dCtlFlags &= 0xFBFF; /* clear dNeedLock */

BETTER SOURCE:

 dce->dCtlFlags &= 0xFBFF; /* clear dCtlEnable */
 dce->dCtlFlags |= 0x4000; /* set dNeedLock */
 :
 dce->dCtlFlags |= 0x4000; /* set dCtlEnable */
 dce->dCtlFlags &= 0xFBFF; /* clear dNeedLock */

BEST SOURCE (but be careful using it):

 dce->dCtlFlags ^= 0x4400;
 /* clear dCtlEnable and set dNeedLock*/
 :
 dce->dCtlFlags ^= 0x4400;
 /* set dCtlEnable and clear dNeedLock*/

I accidently typed an XOR to manipulate the dNeedLock bit instead of an ordinary OR. An XOR works but it is not what I intended. Of course, as the 'BEST' example shows, you can manipulate both bits with an XOR. However, I did not include this example in the original source because I thought it might be confusing.

Please pass this information on to your local BBS. And feel free to ask me any questions about the Clock DA or the DA Header source via MacTutor, Compuserve (74166,1006) or Delphi (DONMELTON). Thanks.

Ask Prof. Mac Correction for April

Steve Brecher

Please note an error on page 62 in the April 1986 issue of MacTutor (volume 2 number 4) in the example of using JIODone. After testing the "noQueueBit", the next instruction says "Beq.S @0". This is incorrect. It should be "Bne.S @0" instead. If this bit is set, then the branch will be taken and the rest of the code implemented, which is what we want for a "no queued" item. For queued items, the branch will not be taken, and we will exit through JIODone.

Asm Lab Comments for April

Norman Braskat

Thanks Dave for the Mac C (version 4.53); the built-in assembler works like a champ (Apple MDS really sucks). About the DA example in my Asm Lab article in the April 1986 issue of MacTutor, I recommend placing the save and restore graph port trap calls in the launch routine. This not only saves code, but saves and restores the current port during control calls. The other question I have concerns the set port after the beginUpdate call; Dan Weston's new book [see book review, this issue -Ed] shows it outside the update loop for an application, and inside the loop for a desk accessory as you placed it in my DA example on page 37 of the April issue. I think your way works because the current port is the same as the DA's window. But if we had multiple windows in a DA or we added a menu for clearing a window which was not currently selected, we would be changing the port during an update. Would this then be a problem?

Dave, you have a great publication and the only real source of assembly info around! Keep it up. PS. Your right... Dan's book is a real winner! [The Complete Book of Assembly Language Programming by Dan Weston, published by Scott Foresman & Co. due in bookstores next month. -Ed]

HD-20 Problems

Richard Emerson

I have been plagued with all manner of problems when I recently tried to assemble and link Chris Yerga's Icon Converter program. At the completion of the link, my HD-20 Finder (5.1) died with an ID=02 bomb, examining and editing the ICN# resource caused another crash, and attempting to copy the application from an HFS disk to an MFS disk caused a massive failure of the Mac! (To add insult to injury, the program performs rather nicely save for some minor problems with the new HFS Get and Put dialogs - not Yerga's doing.)

Repairing the HD-20

As to repairing the damaged Desktop, the solution is disturbingly simple. All that is needed is to hook the HD-20 to a MacPlus and hold down the TAB, command and option keys while waiting for the Mac to boot up. The first dialog asks if the disk should be initialized. After pressing the cancel button on that dialog, the "Rebuild the desktop" dialog comes up. Press OK and the disk thrashes around for a while and then settles down to a bare desktop save for the trashcan and the HD-20 icon. Double clicking the HD-20 produces an alert to the effect that there is not enough memory to open the folder! After punching the OK button (no other choice) and doing a shutdown, the desktop is back to the state of an HD-20 icon and trashcan. Double clicking the HD-20 this time produces the expected window and life is back to some manner of normalcy. This same cycle, attempted on a 512K Mac does not happen. The attempt to rebuild the Desktop is rebuffed with an ID=02 bomb alert. Obviously the new ROM's include a fix or improvement which by-passes an older problem. It should be noted that this repair process on the Mac Plus works with no diskette in any drives; the code either comes from the ROM's or from the (damaged) HD-20! Moreover, the repairs can be done with either Finder V5.0 or V5.1 on the HD-20. I've enclosed a mailing label and disk for Finder V5.2 and System 3.1.1. Thanks for helping deal with this mystery. [Avoid mixing MFS and HFS volumes, get the new ROM's and latest system software and wait for Apple to figure out how to write a hard disk driver that works! -Ed.]

Desk Accessories Comments

Jan Eugenides

Since writing my article on desk accessories in the March 1986 issue of MacTutor, I've learned a couple of things that should be passed on to your readers.

I stated in the article that by convention, the name of a DA should start with a NUL character (Ascii code zero). This is what Inside Macintosh says on page I-444 of the desk manager manual. However with the new Mac+ system, which displays DA menu items in alphabetical order, I discovered that all my DA's were showing up at the top of the menu. A little poking around revealed that all of Apple's own DA's such as the Control Panel, etc., do not start with a NUL at all. Instead they end with one! Inside Macintosh is wrong on this point.

I failed to make it sufficiently clear what the memory test at the beginning of my DA is for. From the article, it appears as though I am testing to make sure there is enough memory to open the DA. By the time the test is performed, the DA is already resident in memory, so such a test would be superfluous. The idea is to determine if there is enough memory available to open further windows, etc. After some experimentation, I have decided that the memory test at the beginning is uneccessary. It makes more sense to check available memory when you need it, for example before opening a file, or displaying a new window.

More on Jan's DA

Kenneth Bates

I enjoyed the article on desk accessories by Jan Eugenides (March 1986) very much, and have one additional point of information to add which may help others.

Jan mentions (quite properly) that the ID number of a desk accessory may be changed by the Font/DA mover during installation. In addition, he points out that all 'owned' resources of the desk accessory will also be changed. His solution is to access the resources by name (GetNamedResource()).

Although this is certainly possible, there is an easy way to find out exactly what the ID number of the desk accessory is at run time. The device control entry (passed to the DA on entry) has a field named 'dCtlRefNum'. By negating and decrementing this field, the ID of the DA is obtained. As an example:

accopen(dctl, pb)   /* DA Open routine */

dCtlEntry *dctl;
ParamBlockRec  *pb;
 {
 int  id; /* This will be our new ID */

 id=dctl->dCtlRefNum;
 id=-id-1;

Following the execution of this code, variable 'id' will contain the renumbered ID of the desk accessory. From there, it is a small matter to obtain the needed resource. As another example, to get a dialgo which originally had a sub-resource of 2:

mydialog = GetNewDialog(id * 32 -16384 +2, NULL, -1L);

Owned Resoruces with Megamax C

Ronald Parsons

In the March 1986 MacTutor, Jan Eugenides showed a method to handle owned resources in a desk accessory. I have used a variation of that method which is somewhat more general (no resources need be named using ResEdit) and multiple types of resources are supported.

To make creation of DA's easier with Megamax C, I make a copy of the linker, mmlink, re-name it mmlinkDA and use ResEdit to make the default Res Type be DRVR and the default ID be 0031.

Using RMaker, I add a small resource to my DA with an unusual name (I use 'mine' in lower case). I calculate the ID's of all owned resources in the RMaker source asuming an ID of the DA of 31. (See the example code in listing 1 below.)

In the accopen() routine of the desk accessory, I incude the code shown in listing 2. I first make sure there is one and only one resource named 'mine' in the system. For this example, I beep and exit if there is more or less than one. I then get a handle to that resource using getindresource("mine",1). With that handle and the call getresinfo (hndl, &id, &resourtype, &genstr), I get the current ID of the resource "mine" as it has been changed by the Font/DA mover. The ID of the DA DRVR resource can then be calculated by id=(id+16384)/32. This ID can be used in calls using owned resources such as stopalert(-16384+32*id +1, NULL). The resource ID's are thus correctly calculated. With this method I can use many types of resources without having to name each one.

Listing 1

* Tell RMaker what to name the resource file
!DA
DFILDMOV

type mine = GNRL
 ,-15392;; =-16384 + 32*31 + 0; resource ID 0 for DRVR #31
.I
0

Type Alert
 ,-15391(36);; resource ID (SmGenID)  -16384 + 32*31 +1 
260 80 335 430 ;; top left bottom right
-15391  ;;resource ID of item list
4444    ;; stages word in hex

Listing 2

osstr255 genstr; /* General use string */
handle hndl;/* Handle to allocated array */
restype resourtype;/* resource type */
int id, count; /* DA's resource ID, count having type "mine" */

 count = countresources("mine")  /* find DAs res ID */
 if (count !=1 ) {sysbeep(30); return 1;}
 hndl = getindresource("mine",1);
 getresinfo (hndl, &id, &resourtype, &genstr);
 id=(id+16384)/32;

 stopalert(-16384 + 32*id +1, NULL); /* post alert*/

Another Victim!

Paul Sterne

I hope this isn't a trend, but all my Mac equipment (except the laserwriter) was stolen at the end of January. I can't help you with an article right now (no Mac to write it on) but please renew my subscription for a year.

Cheap SCSI Drives Wanted

Steve Crandell

Keep up the good work; your magazine keeps getting better and better! How about a "How to Do it" hardware article for el cheapo SCSI drives for the Mac Plus? [Jeff Mitchell, take note! See the ad for low cost SCSI kits from FastTime in this issue. -Ed]

Postscript Question

Jim Foster

The Laser Print DA published in a previous issue of MacTutor stated that the Laser Prep file was downloaded to the printer so it could interpret quickdraw into postscript. I don't own a laserwriter or any apple talk hardware, but I do have the laserwriter drivers. With this I can create a postscript file (the command-F routine). My question is, why would the laserwriter need to interpret quickdraw if the Mac can send Postscript? [Good question. Mike Schuster, now with Adobe, explains that the print manager calls in the Macintosh are converted into calls to the Laser Prep file when the command-F key is pressed. Hence, the postscript file that is created on the Mac is mostly macros that are expanded by the Laser Prep file, which is down loaded into the Laserwriter. So the answer is that the Mac converts quickdraw into a postscript file that is mostly macros and hence not really "pure" postscript. The resulting postscript file is sent to the LaserWriter, where the calls to the Laser Prep file are expanded and performed, and finally, the low level calls to the postscript interpreter within the Laserwriter are performed, resulting in a page generation. If I count right, that makes three interpretations of the file: quickdraw to Laser Prep macros to postscript to printed page. No wonder the thing is slow! -Ed.]

Cauzin Reader

Murray Foster

I am writing to let you know that I have purchased a Cauzin Reader for use with my Macintosh. The fit and finish of the mechanism are superb. The software is simle and easy to use in the finest Mac tradition. I have used it to read every softstrip I can get my hands on. The reader has performed perfectly, although some strips have required a second try. How about strips in MacTutor?

[One of our contributing editors is working on an encoding program for making the strips on the laser writer. If we publish the strip making program, then we will start using it. The algorithm is fairly simple I am told, and easy to produce. -Ed]

Book Review

by The Editor

Assembly Language Books for Mac

It seems everyone wants to program in assembly langauge these days. At least everyone wants to write a book about programming in assembly language. There must be at least ten new books on assembly language programming on the Mac now, with half of them hitting the book shelves within the last two months. And more are on the way! What has been a drought is now a flood. Before you spend over $200 on all these books, here is my impressions of all the titles I could find locally.

There are three approaches to writing an assembly language book for the Macintosh:

1. Write a book on 68000 programming with no mention of Macintosh specifics.

2. Write a book on 68000 programming with some Macintosh ROM thrown in.

3. Write a book on the Macintosh ROM with a little 68000 instructions thrown in.

I have the following assembly language books and can classify them as one of the above three categories:

A. Programming the M68000 by King and Knight for Addison-Wesley: (1)

B. The 68000 Microprocessor by Triebel and Singh for Prentice Hall: (1)

C. Programming the 68000 by Steve Williams for Sybex: (1)

D. The 68000 Principles and Programming by Scanlon for Sams Books: (1)

E. Programming the Mac in Assembly Language by Coffron for Sybex: (2)

F. Macintosh Assembly Language Programming by Commander for Tab: (2)

G. Programming the 68000 by Rosenzweig & Harrison for Hayden: (2)

H. Assembly Language Primer for Mac by Mathews for Waite: (3)

I. Macintosh Revealed, Vol. 1&2 by Chernicoff for Hayden: (3)

J. Complete Book of Mac Assembly, Vol. 1&2 by Dan Weston for Scott, Foresman: (3)

As this list shows, the number of books on 68000 assembly language has grown considerably in the last few months! The first four books (and I'm sure there are others) are generally older and cover primarily the 68000 instruction set, offering no mention of the Macintosh. I personally prefer the Scanlon book as being clear and concise. Anyone programming the Mac probably should buy a good instruction set reference book from this first category.

The second and third group cover those books now available that deal with the Macintosh programming environment. Some authors have taken traditional 68000 books and added sections, often up to half the book, on the Macinotsh ROM and the programming environment on the Mac. These books usually start out with addressing modes, the 68000 instruction set, the 68000 hardware description, how to use an assembler, and then attempt to apply the first part of the book to the particulars of the Mac, ending up with a short Mac assembly example program to open windows and run an event loop and such by the end of the book. All the books in group 2 start out in this manner. These books in group 2 try to combine group 1 and group 3 into a single book. Generally, this type of book comes out as not a very good reference on the instruction set, and a poor Mac book lacking sufficent depth and detail in covering the Mac ROMS.

Group 3 presents those books which start out right from the beginning to teach the Macintosh technology in assembly language, expecting the reader to pick up the necessary 68000 instructions along the way. Of this group, the books are characterized by which book goes the deepest into the Mac ROMS and provides the most advanced program examples to cover. The two books by Chernicoff cover the Mac very well and are in wide distribution. However, the assembly detail is very sketchy and they can hardly be called assembly language books. The new Waite Group book is very well done and covers a large portion of the Mac ROMS in a clear and understandable manner. However, it does not go nearly into the depth that the first volume of Dan Weston's book covers. And certainly, Weston's volume 2 is far beyond any of the books listed above.

We can measure the depth of coverage of the Mac toolbox by drawing up a list of Mac topics and indicating which books cover the most subjects in assembly language.

Macintosh Programming Topics

1. The event loop

2. A Window

3. Menus

4. Dialog Boxes

5. Multiple Windows

6. Grow Window and update events

7. Scroll Bars and update events

8. Text Edit

9. Cut and Paste

10. Disk I/O

11. Regions and Quickdraw

12. Unique Icons

13. Making Desk Accessories

14. Resources

15. Clipboard, Scrapbook

16. Global Variables & memory management

17. Printing & Serial Ports

18. Sound

19. Speech

20. HFS

21. Appletalk

22. New ROMS

23. SANE & Numerics

24. Using debuggers

Using this list, we can now compare the six Mac assembly language books on the market and find out which ones go into the most depth in covering the Macintosh ROMS. Here is our list of books again with the topics they cover:

E. Programming the Mac in Assembly Language by Coffron for Sybex: (1-12, 14, 16-17)

F. Macintosh Assembly Language Programming by Commander for Tab: (1-4)

G. Programming the 68000 by Rosenzweig & Harrison for Hayden: (1-4,8,12,14,16-17,23)

H. Assembly Language Primer for Mac by Mathews for Waite: (1-6,8)

I. Macintosh Revealed, Vol. 1&2 by Chernicoff for Hayden: [Mostly Pascal]

J. Complete Book of Mac Assembly, Vol. 1&2 by Weston for Scott, Foresman: (1-20, 22,24)

The Macintosh Revealed books by Chernicoff are a kind of Inside Macintosh reference and do not cover assembly language per se. They are very good at describing much of the material covered by Inside Macintosh, especially for Pascal Programmers. They are most recommended for TML Pascal users, and in fact, Tom Leonard is marketing a complete TML version of mini-edit from volume 2. The programs are not LaserWriter typeset, but color is effectively used to highlite trap calls.

The book Macintosh Assembly Language Programming by Commander for Tab can be best summarized as a rush job with very little in the way of Macintosh programming information. It does have a nice calculator program that could be the basis for a calculator desk accessory. However, no information on how to create a desk accessory is given. Beyond the problem of coding calculator functions, there is little to recommend this book. Worse of all, the programs are not LaserWriter typeset, but rather imagewriter dumps, poorly done.

The book Programming the Mac in Assembly Language by Coffron for Sybex at first glance appears to be a very good book that shows off quite well on the bookstand. The first 256 pages do a nice job of covering the instruction set in a manner that would make it effective as a reference book. If you also have the other Sybex book on 68000 programming by Steve Williams, you might feel cheated since the first 248 pages of both books are virtually identical. It appears Sybex simply re-wrote the earlier book and re-printed it as a Macintosh book with the necessary changes. In chapter 4, we begin to write programs, and from this point, the two Sybex books diverge as the Mac programming specifics are covered. Once you get into the book, you begin to see the problems of converting a non-Mac book. The programs lack relevance to the Mac programming environment. File I/O is discussed before event loops and windows. Hex to ascii type utilities are covered as a first program. Fixed length and variable length records are discussed, which really are not meaningful in the Mac environment. Finally on page 348 we get into the Mac programming. A Mac Paint type doodle program is presented in chapter 8 that serves as the example. However, the order of presentation is uneven and confusing. It appears the code is discussed as it appears in the listing rather than in the logical order of toolbox managers. Through the printed code, a majority of the Mac ROMS are covered, but the style of presentation is hard to follow and understand and the coding style is confusing. In conclusion, this is a book that the more you read and study, the more disappointed and frustrated you become.

The book Programming the 68000 by Rosenzweig & Harrison for Hayden is similar in scope to the Sybex book above, but much better done, and much easier to understand. The first 128 pages cover the 68000, but it is evident the book was done for the Mac from the beginning. One drawback is that some of the book appears to have been done in Lisa Assembler and both the Mac and Lisa assemblers are mentioned. The program examples however are MDS and done in a familar and easy to follow programming style. Chapter 9 begins the Mac programming examples with a simple spreadsheet type calculator. This is a good example if your interested in spreadsheet technology or the SANE numerics package. In chapter 10 we get into the more traditional mac interface programming not covered in the calculator example. The undo command is covered, along with printing, and dialog boxes. However, just when your starting to warm up to Mac programming in chapter 11, the book ends, leaving you hungry for more! One nice thing about this book is a discussion of how to make a selection, have it blink and then drag that selection around like in MacPaint. This is a good book that can be recommended and I rank it third best in our list. It's main drawback is it waited too long to get into the Mac ROMS and ends too soon before much of the Mac programming issues can be covered in depth.

The book Assembly Language Primer for Mac by Mathews for Waite is one of the best books on Macintosh programming I have seen. The book is easy to read, cleanly put together, uses color very effectively for source listings and illustrations, and is understandable. This is one of the two Mac books every Mac assembly programmer should own. It is also the best "first" book if you are new to either assembly language programming or the Mac toolbox. The Mac programs start nearly at the beginning of the book, build in logical fashion and are easy to understand. ROM routines are nicely set off in boxes like a reference to help in understanding their function and calling sequence. This is the second best book on the market. It does not go into the depth that our next book does, but that is not a drawback, as it is very complete in the topics it does cover, and leaves you satisfied that you've had a solid foundation for further study.

The books Complete Book of Mac Assembly, Vol. 1&2 by Dan Weston for Scott, Forseman and Company, is the best set of books on Mac programming I have seen. These books are written in the same style as the Mathews book above, but are much more specific to Mac programming problems and covers a great deal more depth than the Mathews book. Volume 1 goes much farther than any other book listed above. As our comparison list shows, this book has it all! Not only does it cover more toolbox routines, it covers them in more depth, discussing potential problems, switcher considerations, Apple bugs and more. It is clear that while the Mathews book might have been written by an educator trying to teach clearly, the Weston book is a work of love from a devoted Mac hacker trying to cover the real life problems of a software developer. This book is a must for anyone serious about programming the Mac beyond the event loop and an empty window. It is the only book I have seen that covers material not previously published in MacTutor. Most of the information is not available in any other book. Such things as how to work with the clipboard between programs, how to write a desk accessory, the correct way to update multiple windows that have scroll bars and much more. The 68000 information is placed in the back, so you can review as much or as little as you need. But the text concentrates on toolbox programming and the 68000 instructions quickly become second nature. This is the thing that makes Mac programming different. It's not the 68000 that is the star, but the Mac ROMS! Weston realizes this and has the topics in the right priority.

Volume 2 of this set goes far beyond anything now in print, even MacTutor! The presentation on the clipboard and how it interfaces with switcher is particularly good. The print manager is covered in great detail as are the speech drivers. Both HFS and the new ROMS are also discussed. The only item missing is Appletalk, which as of this review was not covered for some reason. Perhaps by the time the book goes to press it will be added. This is the number one book to buy on assembly language programming for the Macintosh.

All of the above books are now in bookstores, with the exception of Dan Weston's book. Volume 1 is scheduled to reach bookstores in June and Volume 2 is scheduled for bookstores in November.

Software Version List

The recent explosion of new versions of software has everyone's head spinning, so we've decided to try and publish an updated list each month of the latest version of each program of interest to technical Mac owners. Here is our first attempt. Please write with any corrections, especially languages and utilties we may have missed.

Program Version

System Stuff

System File 3.1.1

Finder 5.2

Scrapbook 2.0

Imagewriter 2.2

Appletalk Imagewriter 2.2

Laserwriter 3.0

LaserPrep 3.0

Utilities

switcher 4.6

TMON 2.585

Nosy V2 2.09

RMaker 2.0d2

Font/DA Mover 3.1a6

ResEdit 1.0d7

REdit 1.2

Fedit 3.7

Heapshow 3.0

QUED 1.3

Edit (Consulair) 1.53

Edit (Apple) 2.0d1

Copy2Mac 5.0

Mac Tools 5.0

Hard Disk Util 1.21

Multimacs 2.8

MacZap 4.1

MockPackage 4.2a

Other DA 1.6

DiskInfo DA 1.4

WayStation minifinder 2.1

Languages

Consulair C 4.53

Aztec C 1.06g

Megamax C 3.0

TML Pascal 1.1

McAssembly 3.7

MSBasic 2.1

MS Fortran 2.1

ExperLisp 1.4

Experlogo 1.1

Porta APL 3.0a

Neon 1.5

Mach1 1.1

MacForth 2.4

Macsbug 5.1a1

MacinTalk 1.1

Trap Files

tooltraps 2.0a2

quicktraps 2.0a2

systraps 2.0a3

Equate Files

toolequ 2.0a2

quickequ 1.0a1

sysequ 2.0a2

timequ 2.0a2

syserr 2.0a1

scsiequ 1.0a1

sanemacs 2.0a1

packmacs 2.0a3

fsequ 2.0a1

prequ 1.0a1

atalkequ 1.1

Selected Applications

Thunderscan 3.2

MacWrite 4.5

MacPaint 1.5

MacDraw 1.9

MacTerminal 2.0

MacDraft 1.1

Just Text 1.1

Pagemaker 1.2

Ready Set Go 2.1

Statworks 1.2

Filemaker 1.0

Excel 1.01

Jazz 1A

Helix 2.0 r5

Omnis 3 33.10.MAC

OverVUE 2.0d

MS Chart 1.0

MS File 1.01

Multiplan 1.1

MS Word 1.05

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Summon your guild and prepare for war in...
Netmarble is making some pretty big moves with their latest update for Seven Knights Idle Adventure, with a bunch of interesting additions. Two new heroes enter the battle, there are events and bosses abound, and perhaps most interesting, a huge... | Read more »
Make the passage of time your plaything...
While some of us are still waiting for a chance to get our hands on Ash Prime - yes, don’t remind me I could currently buy him this month I’m barely hanging on - Digital Extremes has announced its next anticipated Prime Form for Warframe. Starting... | Read more »
If you can find it and fit through the d...
The holy trinity of amazing company names have come together, to release their equally amazing and adorable mobile game, Hamster Inn. Published by HyperBeard Games, and co-developed by Mum Not Proud and Little Sasquatch Studios, it's time to... | Read more »
Amikin Survival opens for pre-orders on...
Join me on the wonderful trip down the inspiration rabbit hole; much as Palworld seemingly “borrowed” many aspects from the hit Pokemon franchise, it is time for the heavily armed animal survival to also spawn some illegitimate children as Helio... | Read more »
PUBG Mobile teams up with global phenome...
Since launching in 2019, SpyxFamily has exploded to damn near catastrophic popularity, so it was only a matter of time before a mobile game snapped up a collaboration. Enter PUBG Mobile. Until May 12th, players will be able to collect a host of... | Read more »
Embark into the frozen tundra of certain...
Chucklefish, developers of hit action-adventure sandbox game Starbound and owner of one of the cutest logos in gaming, has released their roguelike deck-builder Wildfrost. Created alongside developers Gaziter and Deadpan Games, Wildfrost will... | Read more »
MoreFun Studios has announced Season 4,...
Tension has escalated in the ever-volatile world of Arena Breakout, as your old pal Randall Fisher and bosses Fred and Perrero continue to lob insults and explosives at each other, bringing us to a new phase of warfare. Season 4, Into The Fog of... | Read more »
Top Mobile Game Discounts
Every day, we pick out a curated list of the best mobile discounts on the App Store and post them here. This list won't be comprehensive, but it every game on it is recommended. Feel free to check out the coverage we did on them in the links below... | Read more »
Marvel Future Fight celebrates nine year...
Announced alongside an advertising image I can only assume was aimed squarely at myself with the prominent Deadpool and Odin featured on it, Netmarble has revealed their celebrations for the 9th anniversary of Marvel Future Fight. The Countdown... | Read more »
HoYoFair 2024 prepares to showcase over...
To say Genshin Impact took the world by storm when it was released would be an understatement. However, I think the most surprising part of the launch was just how much further it went than gaming. There have been concerts, art shows, massive... | Read more »

Price Scanner via MacPrices.net

Apple Watch Ultra 2 now available at Apple fo...
Apple has, for the first time, begun offering Certified Refurbished Apple Watch Ultra 2 models in their online store for $679, or $120 off MSRP. Each Watch includes Apple’s standard one-year warranty... Read more
AT&T has the iPhone 14 on sale for only $...
AT&T has the 128GB Apple iPhone 14 available for only $5.99 per month for new and existing customers when you activate unlimited service and use AT&T’s 36 month installment plan. The fine... Read more
Amazon is offering a $100 discount on every M...
Amazon is offering a $100 instant discount on each configuration of Apple’s new 13″ M3 MacBook Air, in Midnight, this weekend. These are the lowest prices currently available for new 13″ M3 MacBook... Read more
You can save $300-$480 on a 14-inch M3 Pro/Ma...
Apple has 14″ M3 Pro and M3 Max MacBook Pros in stock today and available, Certified Refurbished, starting at $1699 and ranging up to $480 off MSRP. Each model features a new outer case, shipping is... Read more
24-inch M1 iMacs available at Apple starting...
Apple has clearance M1 iMacs available in their Certified Refurbished store starting at $1049 and ranging up to $300 off original MSRP. Each iMac is in like-new condition and comes with Apple’s... Read more
Walmart continues to offer $699 13-inch M1 Ma...
Walmart continues to offer new Apple 13″ M1 MacBook Airs (8GB RAM, 256GB SSD) online for $699, $300 off original MSRP, in Space Gray, Silver, and Gold colors. These are new MacBook for sale by... Read more
B&H has 13-inch M2 MacBook Airs with 16GB...
B&H Photo has 13″ MacBook Airs with M2 CPUs, 16GB of memory, and 256GB of storage in stock and on sale for $1099, $100 off Apple’s MSRP for this configuration. Free 1-2 day delivery is available... Read more
14-inch M3 MacBook Pro with 16GB of RAM avail...
Apple has the 14″ M3 MacBook Pro with 16GB of RAM and 1TB of storage, Certified Refurbished, available for $300 off MSRP. Each MacBook Pro features a new outer case, shipping is free, and an Apple 1-... Read more
Apple M2 Mac minis on sale for up to $150 off...
Amazon has Apple’s M2-powered Mac minis in stock and on sale for $100-$150 off MSRP, each including free delivery: – Mac mini M2/256GB SSD: $499, save $100 – Mac mini M2/512GB SSD: $699, save $100 –... Read more
Amazon is offering a $200 discount on 14-inch...
Amazon has 14-inch M3 MacBook Pros in stock and on sale for $200 off MSRP. Shipping is free. Note that Amazon’s stock tends to come and go: – 14″ M3 MacBook Pro (8GB RAM/512GB SSD): $1399.99, $200... Read more

Jobs Board

*Apple* Systems Administrator - JAMF - Syste...
Title: Apple Systems Administrator - JAMF ALTA is supporting a direct hire opportunity. This position is 100% Onsite for initial 3-6 months and then remote 1-2 Read more
Relationship Banker - *Apple* Valley Financ...
Relationship Banker - Apple Valley Financial Center APPLE VALLEY, Minnesota **Job Description:** At Bank of America, we are guided by a common purpose to help Read more
IN6728 Optometrist- *Apple* Valley, CA- Tar...
Date: Apr 9, 2024 Brand: Target Optical Location: Apple Valley, CA, US, 92308 **Requisition ID:** 824398 At Target Optical, we help people see and look great - and Read more
Medical Assistant - Orthopedics *Apple* Hil...
Medical Assistant - Orthopedics Apple Hill York Location: WellSpan Medical Group, York, PA Schedule: Full Time Sign-On Bonus Eligible Remote/Hybrid Regular Apply Now Read more
*Apple* Systems Administrator - JAMF - Activ...
…**Public Trust/Other Required:** None **Job Family:** Systems Administration **Skills:** Apple Platforms,Computer Servers,Jamf Pro **Experience:** 3 + years of Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.