Oct 87 Letters
Tom Saxton, formerly
University of Utah,
I have an idea for yet another article. I have been doing some consulting work with ALP Systems in SLC where we have managed to figure out how to write a segmented DA in LightSpeed C. There are several fairly subtle problems we have found and cured. Jon Nicponski and I are interested in writing up an article with a simple example program to illustrate the ideas. Are you interested? Finally, beginning next week I will be working for Microsoft as a Program Design Engineer. [Would love to see your ideas on the Segmented DA, and while your at it, perhaps in your new calling at Microsoft, you can pass on some of MacTutors complaints about the poor quality of Macintosh languages coming out of Microsoft. The MS Basic compiler has been a constant source of complaints in our letters department and the problems with Fortran are legend. These remain the only two Microsoft products after all this time, which in itself is an indication of how your new employer feels about the Mac. -Ed]
Jack of All Trades
In a recent issue (September 1987) I read with interest that SuperPaint can be used for colorizing logos for use in other programs. This is a technique with which I am familiar, but I dont use SuperPaint for it. I use GraphicWorks 1.1 (of course, I get paid to say that!) for the same thing. GraphicWorks allows you to set fore and background colors for every one of 64 objects in a panel. That panel can then be copied and pasted as a PICT that retains the color and transfer mode information. The one real advantage I can see to using GW 1.1 for this is that it runs in multi-bit mode, so you get to see and edit in color on the screen of the Mac II. Another interesting trick is to obtain a 256 color Pict from somewhere and paste it into GW 1.1 as a PICT -- it will retain its colors -- and then combine it with other elements to create your image. Then use that combined PICT to create your dialog. This works for color scans from a variety of sources, PixelPaint PICT images, and Image Studio grayscale images... it can give a program a dynamite look!
Note: Early versions of GraphicWorks 1.1 may have problems when run an a Mac II. If you run into such a problem, call Mindscapes customer service number (in the programs manual) and they will get you the newest version. This only affects Mac II users, so if youre using an SE or +, you should be fine.
Finally, I notice that an awful lot of the letters and notes in your magazine are from people who are writing games for the Mac. I would like them to know that Mindscape is always interested in looking at creative work. If you have a program you think is puvlishable, please dont hesitate to contact us!
Attaching Icons To Applications Created Using MS Basic Compiler
David K. Wyatt
There are probably better ways of accomplishing this particular task than the method outlined here, but this method is relatively quick and simple. The only software tool required is Apples ResEdit (the latest version I have is 1.0.1), though an Icon Editor can also assist in doing some of the work. The first thing to do is to remember to work on a copy of your application, preferably on a floppy.
Open ResEdit, single-click on the name of your application, and choose Get Info from the File menu (or hit Ctrl-I). The first thing to do is to give the application a unique four-character Creator name-- BODE in my case. The second thing to do on this window is to turn the Inited box off and the Bundle box on. Then click on the go-away box and, after answering positively when asked if you want to save the Info on your file, you will be back to the list of files on your disk.
Next, double-click on the name of your application, and you will get a list of the current Resources installed in your application. This list is short, and in most cases will include only these: ACRL, ALRT, BASI, CODE, DITL, and STR. Hit Control-N (or select New from the Edit menu) and you will get the New Type Name: box. The way this particular element of ResEdit works is that you either choose an existing resource Type from the list on the left of the box, or type in a new resource type in the box in the upper right.
Here, you want first to make a resource for your own, special application, giving it the Creator name you gave above. When you click the OK box (or hit Enter), you will be given a blank window. To get something to fill in, hit Control-I, and you will get the window. The only thing you want to do in this window is to change ID: to 0.
When you have done so, click the go-away box and you will be back to the listing of resources installed in your program-- now including (in the example here) BODE.
Again, the next thing to do is to hit Control-N to create a new resource. This time, use the scroll arrows to find ICN#, select it, and hit OK. You will then get a blank window, with no icons or editing template in it. You can do one of two things here. Either Paste into this window an icon you have created using an icon editor, or hit Control-N (for New) and get the icon editor frame.
ResEdit will automatically assign a resource ID number to the icon you create here, and you should carefully note down its number such as 19328. When you have completed editing this icon, hit the go-away box and you will be returned to the ICN# window, with your new icon pictured there. Hit the go-away button again to return to the list of resources, which will now include ICN#.
There are two other resources that the Mac needs in order to tie together the program and its icon-- a FREF and a BNDL. (We are proceeding in the order in which we are, because each step requires an ID number generated in the previous step.)
First, hit Control-N (New) again to signal that you are creating another new resource, and this time scroll down and choose FREF and click OK. You will get a window called FREFs from <program name>. Hit Control-N again, and you will get the FREF editor.
You need to make sure that the File Type is APPL, and that the icon localID is 0. Thats all. If they are not so identified, change them. Note down the FREF ID number, which in the case illustrated is 1948. Then hit the go-away button to get back to FREFs window, and again to get back to the list of resources, in which you will now see the resources you have added so far-- BODE (your application Creator Type), ICN#, and FREF.
You are now ready to bundle them all together in a package-- view this next step as providing the machine with a way to know what goes with what. You need to create a BNDL resource.
Again, hit Control-N and get the New Type Name: box, select BNDL, and click OK. You will see a window titled BNDLs from <program name>. Hit Control-N, and you will get the BNDL Editor window.
At first you will only have the first part of this window, down to the first row of asterisks. Insert the OwnerName (BODE in our example) and make the owner ID 0. Then double-click on the row of asterisks and you will get the next section of the window (you will have to use the scroll bars to see it all). Enter the information for the ICN# and FREF resources. Extend the portions between rows of hyphens by double clicking on the hyphens, and get another row of asterisks by double-clicking on the asterisks. Be sure to use 0 for localID in both cases. (I do not know why in both cases below there are blank sections.)
There is one final bit of business left. Two of the resources in your application, as compiled by BASIC Compiler, are generic-- the same for every application unless otherwise changed. They have to do with what is shown when you click on the About... in the Apple menu.
Double-click first on the ALRT resource, and you will be shown that two ALRT resource exist, with ID numbers 265 and 266. Double-click on ALRT ID#266 and you will be shown the alert box showing Created by BASCOM. This is a rather bland message to give those who will use your application-- and its also, if you come to think about it, insulting to you! You probably want to tell the users who really created your application.
Click on the Created by BASCOM. You will find you can move the text around, and change the size and shape of the box. The same is true of the OK button. Double-click it to edit the text within, and you will get yet another editing window. The highlighted text can be edited in the usual fashion, and you can make it extend for several lines. Click on the go-away box to return back to the previous level, and re-shape the text box and adjust its placement. Click go-away boxes to return to the resource list.
Finally, you need to change the message that is displayed on the Apple menu. Double-click on STR (there is a single space following the R, which is a part of the name of that resource) and you will get the list of STRs in your application, Double-click on STR ID=256. You can simply edit theStr to say whatever you will.
When you are back to the desktop, hold down the Option and Command keys while re-inserting your disk into the machine. When asked if you want to rebuild the desktop, answer affirmatively. You are doing this in order to force Finder to take note of the fact that you have given your application a new icon. When the Finder has done its job and you open the disk, you will find your icon displayed on the desktop. [This is another area where Microsoft should have provided the means of linking with a resource file so that application icon information could be accomplished in the normal manner. -Ed]
LaserWriters Self-Destruct after One or Two Years!
David E. Smith
A failure mode for the LaserWriter printer has been observed. After a year or more of use, the fuser roller under the green felt cover begins to disintigrate. This is caused by the rubbing of the rubber paper guides on the roller, leaving circular groves in the delicate silver finish of the fuser roller. The result of these groves, which line up perfectly with the rubber paper guides on the green felt roller covering, prevent toner on the paper from being fused properly to the paper as the paper passes over these roller imperfections. The groves also mar the paper surface, leaving a line on the paper. The failure mode seems to be the breakdown of the silver covering of the fuser roller, leaving it brittle and susceptible to the scratching of the surface by the paper guides. We know of two LaserWriters in this area which have this problem and suspect there may be others. If you know of a LaserWriter with this problem, please contact MacTutor. We do not as yet know what plans, if any, Apple has to fix this problem. Since it is mechanical, the fix will not be easy and probably will require returning the printer to Apple. We suggest all LaserWriter owners get Apple Care immediately before this problem manifests itself as the fix could be quite costly. More next month after we find out what the Apple service organization proposes to solve this problem.
A another failure mode that is not easily repaired is changes made to the EEPROM inside the LaserWriter. The printer apparently contains important start-up information in EEPROM inside the machine. It is possible to change this information by careless or deliberate postscript programming. If this is done, the postscript board must be completely replaced at a cost of $800, since the EEPROM is not replaceable. Apple, in their infinite wisdom, has designed a machine that through programming, can be destroyed and there is no way to re-program the EEPROM to re-set its parameters! Therefore, you should be very careful not to allow any foreign postscript code to be sent to your LaserWriter. Imagine the howl if you could program your tv set to self-destruct without any way of re-setting it! However, a service technician told me that he thinks there is a secret method by which the EEPROM can either be re-programmed or erased so the LaserWriter can be made operative, since he claims an Apple Service Class instructor did just that, but apparently the secret has never been revealed. The reason Apple is so jealous of this bit of know-how is that the EEPROM contains the copy count and when its reset, the count goes back to zero. Still, it is inexcusable that a machine that costs $5,000 could be made useless by careless programming. Hasent anybody on the LaserWriter design team ever heard of a reset button?
Why do the Apple programs ResEdit and MPW Shell purposely defeat the IAZNotify mechanism (see tech note #64A) by clearing this ointer just before exit. For those of us who attempt to write memory resident tasks, this behaviour causes real problems. Generally speaking, a memory resident task may need a hook at the beginning of an application to open files and drivers, and a hook at the end of anpplication to close file/drivers and unpatch traps. If an IAZNotify proc that restores traps is by-passed, those patched traps will bomb in the next application. We need a consistent mechanism, and if Apple must subvert this one, cany they suggest another? Enough said?
Is it true the MPW assembler creates incorrect machine code in some circumstances? [I am not aware of such a defect, however, it may be true. -Ed]
Is APDA selling an updated version of MacinTalk that works on the Mac II? Does this mean Apple is supporting MacinTalk? [Yes and no. APDA has started shipping a Mac II version of MacinTalk, but no, Apple still refuses to acknowledge its existance. -Ed]
Absoft Fortran Compiler Update
David E. Smith
We have gotten several complaints from readers concerned about the Absoft 68020 Fortran compiler which they have been advertising in MacTutor. Apparently Absoft has not yet started shipping this product and a number of MacTutor readers who sent Absoft money are hopping mad about this. One reader has threatened a postal lawsuit over the issue. We suggest you contact Absoft directly to inquire on the status of the 68020 version of their Fortran product before you send any money. You might also want to be aware that a new MPW Fortran is currently going into beta test by another company, and that this product looks very hot! We hope to have more information on it in the next issue of MacTutor. The targeted release date for this new Fortran compiler, which is said to be linkable to any MPW code, is the January MacWorld Expo.
68020 News from Motorola
One of our readers has kindly sent us a copy of the Motorola RoadRunner newsletter which contains some interesting tidbits on the future of the 68020 product line. "Estimates are that our 68020 has upwards of 70% of the worldwide installed base of 32-bit MPU's and 78% in engineering workstations. Our target for 68020 shipments this year is 700,000, meaning that this device will reside in close to one million systems by year-end."
The article also credits the Macintosh II by saying that momentum is building for the 32-bit MPU as the result of the maturing of many successful customer programs, "a number of which are in the lower end of the price spectrum, such as Apple's highly acclaimed Mac II." Hmmm, lower end of the price spectrum, eh? I'll try to keep that in mind the next time I send in my $7,000 check for another Mac II and that's at developer prices!
A few words on the progress of the 68030 were also included. First silicon on the 68030 was reached in April and initial deliveries are on schedule for the fourth quarter of this year. The 68030 provides "significantly higher performance" than the 68020 at the same clock speed, while maintaining 100% software compatibility. The 68882 enhanced floating point processor is said to be on schedule for September samples.