TweetFollow Us on Twitter

Mar 88 Letters
Volume Number:4
Issue Number:3
Column Tag:Letters

How Do You 'Float' a Window?

By David E. Smith, Editor & Publisher, MacTutor

Rotating Bitmaps

Peter Adamson

Aix-en-Provence, France

Does anyone out there have an algorithm for rotating bitmaps? Can I use the resource manager by more than one user to open and modify a single resource file over AppleTalk? I have a classified ad program where each ad is a resource of type ‘CLAD’. I want to be able to type ads simultaneously from several Macs connected to a single file. Will calls like addResourse and unique I.D. work? I want to avoid getting into trouble later on.

[For a good discussion of how to rotate bitmaps, see Bob Denny’s article in The Best of MacTutor, Volume 1, on page 210 titled “PICT Rotation with Copybits” from MacTutor, Vol. 1, No. 12. It is my understanding that the resource fork of a file cannot be opened for writing except by a single application. Therefore, you cannot write to a resource fork and be sharable by several Macs. So what you want to do cannot be done with resources. -Ed]

Spreadsheet / Word Features

Steve Millina

In the January issue 1988 letter column, Cary Maraish asked how to do spreadsheet-type windows fairly easily . I just did a one-page spreadsheet, and I found that the list manager does a great job. Set up a rectangle for the cells, and feed LInit the number of rows and columns, but FALSE for both scroll bars. Since this was a true spreadsheet, actual text entry was through a text edit box at the top of the page, with the text being transferred to the list with LSetCell only when the user indicated entry was complete. For convenience, I used a dialog window so that the text edit stuff was taken care of directly. You do need to bear in mind that the default text list definition proc justifies left , so the programmer has to insert the appropriate number of spaces in front of the numbers to make them line up.

If you really want entry to be made at the selection, you might try a Dialog window with a grid of edit text boxes. (I tried something similar with a grid of stat text boxes and it worked fine).

Since I’m already writing, I want to take issue with your evaluation of WriteNow. I tried desperately to like WriteNow for many of the reasons you mention, but in the end I went back to Word 3. The most important determinant was the fact that setting line spacing was a slow and painful process, because I use lots of single spaced paragraphs (for examples and quotations) in the midst of double spaced text and the switch took forever. So does setting the ruler.

I even tried macros. At the time I didn’t have Quickkeys but I did have Touch-n-Go, which is usually great. I tried to make it move the indent cursor. Fat chance! WriteNow doesn’t look at the mousedown and mouseup events once it knows what’s going on and the indent moves sort of randomly. I guess it reads the mouse button directly but that is not the kind of programming you should commend

Word, on the other hand, may be mammoth, and may have any amount of code wasted on oddities (such as outlining that only an IBM PC could love) but a lot of the add-on touches are incredibly useful. Styles lead the list. Also high is the command-= calculator that calculates whatever is selected and makes the answer directly available for pasting. I know you can do the same thing with some calculator DAs but the difference in speed and convenience is simply amazing. In a lot of respects, Microsoft did what good programmers are supposed to do, it found out how its targeted users work.

Good Software Design

S. C. Kim Hunter

Laguna Hills, CA

The MacTutor editorial in the Dec 87 issue of MacTutor addressed the issue of multiple software tools and the Macintosh interface. Trying to put all the tools in one application tends to defeat the object of MultiFinder. So we see the Mac programming world working at cross purposes: Apple system folk trying to give us instant access to lots of tools, and developers trying to cram all the tools into their specific rendition - then groaning because they have to make more for somebody else’s tools.

Basically, all the things ever embodied in either hardware or software - at least for the 25 years I’ve used computers - are stumbling blocks placed in the way of folk that need to do a job. First you have to “configure” the hardware, then the software, then read the manuals, then teach your hands to process keys in the right order and with multiple combinations. Eventually you figure out how to make the computer do what it was that you wanted to do when you decided to use a computer. You know what you want - you have to figure out how to make the computer understand that.

I’ve talked to hundreds of folk using FileMaker - some of the dumbest you can imagine regarding knowledge of computers. I am sure that anyone who reads MacTutor would agree that someone who can’t figure out how to use FileMaker has got to be among the dumbest of the dumb. FileMaker has the best user interface of any software I’ve ever used, and Nashoba purposely works very hard to avoid making FileMaker too complex, probably the main reason it isn’t, and may never be, a relational product - hopefully, they’ll come up with a better way.

But these “dumb” people I talk to are not deadbeats. Most have very successful businesses in their fields - doctors, lawyers, butchers, bakers, and bee keepers. They know exactly what they want, but they don’t spend endless hours reading Inside Macintosh or MacTutor. So they just see software and hardware as stumbling blocks in the way of what they want to do. Isn’t this the essence of the Macintosh User Interface Guidelines?

Those of us who do take the time to read Inside Macintosh and MacTutor have an unwritten obligation to all those other folk. We can program the most superb software you could ever imagine. But if folk can’t see how to make it do what they want, then it is just a stumbling block in their way. At the basic level, all keystroke combinations (more than one key down at the same time) are just stumbling blocks - UNLESS this key combination is visible on the screen OR it is a common standard that works with EVERY software package. So all those programmers that spend hours figuring out esoteric key combinations for every possible function in their product are really counterproductive to society - save for a few “power” users. [Right on! -Ed]

Even worse are the programmers that create key combinations that are totally hidden from visible view - even the venerable MacPaint is guilty of this. And the IBM-PC is the epitome of stumbling blocks - no need to belabor that point with MacTutor readers.

I just delivered an MS-DOS program to a client. He called and said “I just put in the disk, and ran the program, and it worked. That’s the first time that ever happened.” So the Mac is having an impact beyond it’s scope.

But if the Mac programming world isn’t careful, we’re going to find ourselves, like the Wall Street stock traders, back at square one. We’ve done a phenomenal job. But now we have to face Gasseé’s Open Mac. He made it for us. It’s here (almost).

How are we going to face it? Was the day of the Mac II introduction a “black day” for all the “dumb” folk? Are we going to emulate our PC compatriates by requiring users to spend several days reading manual sections on “How to configure” the software to match endless combinations of hardware? Will we do the same job on our users as the Apple II folk have done? Is the MultiFinder just a poor excuse for UNIX and will it degenerate to an access path to hundreds of “universal” tools called cc, xf, vd, grep, or barf?

Gasseé opened the Mac. Odds are that the software industry will close it by burying it’s interface in complexity. If you ever have to post a dialog that asks a user to tell you anything about the hardware configuration your software is running on, you are slipping into the abyss that was depicted by the ill-fated Apple Super Bowl commercial of 1985.

Software folk must demand that the hardware folk provide them signature bytes with which they can identify the hardware. It will take a monumental effort to keep all of us informed about all the various hardware - a task that no one is willing to pay for. Hardware folk live in their own world. And most of them have been producing PC boards. Unless we stomp on them hard RIGHT NOW (Is it too late?), we have no one to blame but ourselves, and we will watch the Macintosh User Interface Guidelines surf into the abyss with us on the add-on boards. And the “dumb” folk will find some other way to get their jobs done. (Did I hear someone say “Jobs”?)

Better Region Idea

Ted Cohn

San Jose, CA

I loved your December Issue! I was particularly interested in seeing the article on Tear-off Menus, since I wrote them for the Radius Two Page Display that Radius released in November. Radius’ version actually modifies the Macintosh operating system so that one can tear off the menus of any application. The menus can then be selected from at any time - and all transparent to the application and MultiFinder.

I would like to contribute to the Mac Community and your magazine. Would you be interested in an article about Quickdraw regions? I haven’t read enough of your back issues to know whether or not you printed an article about them.

I first became very interested in regions when I needed to create abstract regions for a desk accessory I was thinking of writing. The standard way of creating regions is by executing a sequence of graphics commands through programming. However, this method is much too cumbersome when dealing with irregular objects. I need an easy way to convert a complex picture (or bitmap) from MacPaint into a QuickDraw region where all black pixels would be considered inside the region. I wrote an assembly language routine called “MakeRgn” to do just this. I have found no routine in the Macintosh ToolBox or in print which does this and I believe it would interest your readers. (I saw an article in Byte magazine last year but felt it could have explained regions better; plus its edge-traversal algorithm was faulty because it missed holes in the bitmaps by traversing only the exterior of objects.)

[Sounds like a great article! Send it in ASAP! -Ed]

Pop-Up Menu is Backwards!

Ted C. Johnson

Santa Clara, CA

Page 13 of the January 1988 issue of MacTutor (“MacTutor welcomes letters. I will personally try to answer all of them.”) is the reason why I decided to go ahead and write this letter. It’s such a bummer when you write someone and get no response!

I would like to offer some constructive criticism concerning the Apple user interface. I think that the method of selecting a document (from SFGetFile() dialog box) which isn’t in the current folder can be made more intuitive.

If the document isn’t in the current folder, the user can get a menu listing of the folders between the current folder and the root folder (which is usually the DeskTop) by pressing the folder icon at the top of the dialog box. This is called a “Pop-Up” menu as opposed to a “Pull-Down” or “hierarchical” menu. I think that this list is upside down, because the folders which are above the current folder appear below the current folder in the menu! i.e. in the example below, the “Libraries” folder is above the “Library Sources” folder, yet the libraries folder appears below the “Library Sources” folder in the pop-up menu.

Either method gets the job done, but I think my way is a bit more intuitive.

Big Arrays for C

Jack McCrae

Albuquerque, NM

The enclosed program would probably be appropriate for the inclusion in the letters section of your most excellent magazine. At least I think it’s kind of neat (my program that is). And if it wouldn’t be too much trouble would you please send me a copy of of your author’s kit.

Two limitations I have run into while programming in the C language are the 32k byte segmentation limit, and C’s inability to pass variable sized multi-dimensional arrays to subroutines. I have found a simple solution to both of these problems. Arrays constructed according to the source code which follows act like ‘normally’ declared arrays; no special functions are needed to assign into, or read from these arrays.

The following example program illustrates a three dimensional case. It can be easily modified for two dimensions, or extended for four or more. The cost of this method is a small amount of extra space which is required for one or more arrays of pointers, and an extra initialization step to create these pointers. As an added bonus, rows of these arrays may be rearranged by simply rearranging the pointers to them, rather than all of their elements themselves.

To use this method to create an array that takes up more than 32k bytes of memory, delete references to the variable ‘arrayspace’and replace with the line




where kdemension is the number of elements in the outermost dimension.

This swaps the 32k total limit for an array for a 32k limit on each dimension.

The following compiled with either Megamax C, v 2.01b. or Lightspeed C v 2.13.


extern long tickcount();
long t;

/*note that the above arrays appear to be accesed normally.  Had a pointer 
to a ‘normal’ array (i.e. arrayspace[]) been passed instead of **array[] 
it would have been necessary to use a construction like arrayspace[i*100=j*10=k] 
to access array elements.

/*this routine sets up ‘array’ to index elements of ‘arrayspce’ by double 
indirection */
double arrayspace[10][10][10];
double *intermediate[10][10];
double **array[10];
  int i,j,k;
    int i,j,k;
    double arrayspace[10][10][10];
    double *intermediate[10][10];
    double **array[10];
  initarray(arrayspace,intermediate, array);

Higher Printing Authority

John Bartleson

Spokane, WA

First let me thank you for producing such a useful journal. I read it cover-to-cover every month and have found many useful items in its pages. MacTutor fills a unique place in the evolution of our favorite computer.

I am thinking of writing an article for MacTutor, but I need your advice on whether you would be interested in the topic. Here it is:

As I began to program the Mac, I had to tackle the problem of writing printing code. I eventually learned how to do it, but I think that the effort necessary to “do it right” was too high. There are several reasons for this. First, like much of the Macintosh system software, the Printing Manager is a relatively low-level interface to a process much different from that used on previous computers. Second, the Printing Manager as documented in Inside Macintosh is vague on many topics and needs to be rewritten. Finally, there is very little non-Apple documentation dealing with how to use the Printing Manager. The only documentation I’ve found is in Volume II of Dan Weston’s The Complete Book of Assembly Language Programming. This has a good chapter on printing but it leaves out some of the fine points necessary for commercial - grade programming, such as error recovery.

Programming for Macintosh is more complex than is readily apparent from Inside Macintosh. You have to take care of draft copy looping, max pages in spool file looping, print-idle procedures, print traps vs. direct calls, etc. On top of this, you have to provide robust error checking that can handle both user cancellation, which may occur at any time, and Printing Manager errors.

I found that I was wrestling with these problems every time I wrote Printing code for a program. I wanted a higher - level interface to the Printing Manager, one that would be easier to use than the existing interface, but one that wouldn’t limit me in getting any desired image on the page. This led led me to write the Generic Printing Manager, GenPrint.

GenPrint is a single subroutine that communicates with your calling program through a parameter block named GenPrBlk. GenPrBlk contains several flags and handles, and in addition it contains pointers to several co-routines. Co-routines are procedures within your calling program that do your specific print processing, GenPrint calls these procedures at appropriate times during printing. There are four co-routines, but the typical program will use only two. For example, you must provide a PrintPage co-routine to image the pages, but a JobDialog co-routine is needed only if you have a custom PrJobDialog you want to execute. Here’s an example of typical use in pascal:

PROCEDURE MyPrint  {Demo of GenPrint call};
VAR ParamBlk:GenPrBlk;
{other variables owned by MyPrint would go here these can be accessed 
within the co-routines.
PROCEDURE  GenPrint (Blk: GenPrBlk) ; EXTERNAL;
{Initialize pointers etc.  to print a copy}
END; {DoInitCopy}
 {   Draw a page in the printing GrafPort  }
END; {DoPrintPage}
BEGIN  {MyPrint}
{  Set the co-routine addresses in ParamBlk }.
ParamBlk.JobDialog :=0;
ParamBlk.SpSpace :=0;
ParamBlk.InitCopy := @DoInitCopy;
ParamBlk.PrintPage := @DoPrintPage;
GenPrint  (ParamBlk) ;
END; {MyPrint}

GenPrint is written in MPW Assembler, which is necessary so that it can set up the caller’s A6 stack frame to allow the co-routines to access their enclosing procedure’s variables. This means it can be called only from assembler or from languages (like MPW Pascal and C) that allow external assembler subroutines.

GenPrint greatly reduces the amount of coding necessary to do Macintosh printing. As an example, A commercial - class subroutine to print any Text Edit record, with support for fixed-space tabs, can be done in about 40 pascal statements.

While this technique may not be as exciting as an article on a new 256K ROM feature, I suspect a lot of people who haven’t figured printing out would find it useful. And nothing on this topic has appeared before in MacTutor.

[Sounds great. Looking forward to seeing this. -Ed]

How to Keep The Window on Top

Kenrick Chin

Ontario, Canada

I have an old problem that I’m sure has been dealt with by now. I am having difficulty creating a tools window that always stays in front of the selected window, like they have done in FullPaint, PageMaker etc.

The global variable GhostWindow does what Inside Macintosh says it is supposed to do, but not what I want it to do. Any call to DragWindow( ), GrowWindow( ) etc. will select an underlying window and bring it to the front on top of the tools window which is not what I want. [Don’t know how to do this. Maybe one of our readers will respond. The next author also wants to know this.-Ed]

How Do You “Float” a Window?

Ajay Nath

Just a quick note about your Christmas issue. It looked real slick! The articles on ‘Tear off” menus and the printer driver were good but had a few flaws.

The ‘Tear off’ menu article gave a good explanation of how to ‘Tear off’ the menu, but the real feature of these menus in (Hypercard and MacPaint) is that they don’t get sent behind other windows and that the application windows behind them stay hi-lighted. ( i.e. in SuperPaint or MacPaint 2.0) clicking on a window brings it forward but not in front of the tool or pattern windows, this involves not calling SelectWindow and moving and Hi-lighting windows yourself. Movement must be done by the app because DragWindow calls SelectWindow which would bring a dragged window in front of a Tool or Pattern window. What we need is really an article (are you listening Bill Atkinson) on how to ‘float’ windows.

There also may be a bug in the DrvtStorage ( ) procedure in the printer driver code. The code looks like

asm {
     MOVE      #2,D0
     ASL.L      #2,D0
    MOVE       uTableBase
     ADDA        D0,A0
    MOVE.L  (A0), own DctlEntry

this could be done like

asm {
   MOVE.L     uTableBase, A0
   MOVE.L 8(A0), ourDCTlEntry

and indeed the former code is incorrect because the first instruction moves a 2 into the lower word of D0 and shifts to multiply it by 4 to get 8( a MOVEQ #8,D0 or MOVE.L #8,D0 is better), but what if the hiword of D0 doesn’t=0? Then the shift doesn’t give you an 8 in D0! Perhaps this works because LS C guarantees 0L in D0, this doesn’t seem likely.

Also, the last time I Used SuperPaint it had this bug, select the rectangle tool and drag from a point down and to the right, then put the cross exactly on the bottom right of this rectangle and drag up to its top left, the rectangles should match but don’t! Even MacPaint 1.0 didn’t have this silly bug!

I’ve written a very simple MacDraw-like application in LS C, it’s a bit long, but it can read and write files, scrolls, prints, uses the 38 standard MacPatterns, has a custom MDEF like MacDraw(MDEF written in Assembly) and is a good example of how to do this stuff. It’s a bit lengthy though, shall I write it up and send it to you? [Yes, by all means! -Ed]

HyperDrive Problems

R.A. Yaworsky

Yukon, Canada

I recently attempted to run MultiFinder on my Mac+ with a HyperDrive 2000 upgrade. The HyperDrive Manager, I suspect, does not conform to the “proper way of doing things” and cannot open the hard drive’s drawers. The Manager handles access to the drawers through a desk accessory, but under MultiFinder, strange things occur, leading to a nasty crash and a corruption of some of the drawer information on my drive. The end result is I’ve lost access to some of my drawers. My advice to users of any HyperDrive is to be very wary.

The local Apple dealer, who is also a General Computer (HyperDrive) dealer, is not aware of any HyperDrive Manager or System upgrades (I’m Using V3R1, about 1 year old), but then again, we haven’t even officially received MultiFinder up in Canada yet. I would hope General Computer can release a better behaving upgrade. [My advice is to dump the HyperDrive and get a “normal” scsi drive like Jasmine or DataFrame. -Ed]

LS Pascal Concerns

Rob Terrell

Blacksburg, VA

I finally broke down and decided to write you guys. First, let me thank you for the most helpful Mac programming resource I’ve found. I got my start with Inside Macintosh phone book edition, but it wasn’t until I bought every back issue of MacTutor at the Boston show a couple of years ago and read them on the plane home home until I became semi-confident in what I am doing.

Right now I feel it necessary to complain a little. I’m using Lightspeed Pascal here at Virginia Tech on my Mac+ -- CS majors got a price on Mac II system that I’m sure Apple lost my money on, but I am not a CS major --and I can say without reservations that Lightspeed is the best and worst Pascal implementation I’ve ever used on the Mac.

I mean, the debugging is fantastic. But there’s so much that they try to do for you -- the init calls at the start, for example. Almost everyone today passes a procedure with ExitToShell to InitDialogs. Lightspeed doesn’t do this. What happens when you get a bomb running you program? You might get a courteous Lightspeed error message, or you may get a with no recourse but to reboot. [I’m sure you are aware that you do not need to use the LS init sequence. I regularly call all the inits myself and pass a pointer to InitDialogs. -Ed]

This Program I had to write for CS included a terminal emulator. No problem, right? Just use the Lightspeed’s Text window. But look out - how do you clear that screen? How do you set the cursor’s coordinates? How do you do inverse video? you don’t. If you try a InvertRect, it inverts the bits in the draw window, not the text window! [Gotta make your own window. This is Apple’s fault, not LS. There is no “easy” text window function built into the Mac. -Ed]

So in addition to a fairly simple but lengthy linked-list program I also had to write my own terminal emulator. I realized this about 1:30 am the night before it was due. The CS dept. was kind enough to give a simple terminal routine (though you had to advance the cursor and put the chars yourself) but it bombed with an address error when I linked it into my code. I decided to write my own rather than attempt to debug someone else’s code. I finished fifteen minutes after the deadline.

Now this is just a sample of what burns me about Lightspeed. They make this wonderfully powerful debugging environment, then leave out all the Lisa pascal extensions like exit and halt and stop and claim to be Lisa compatible! They changed the type

keymap=packed array[1..127]of boolean

to an

array[0..3]of longint

How do I scan for keypress? The manual gives no hint. I know I should use GetNextEvent, but IM Vol.1 suggested to check for modifiers keypresses with Getkeys! [Again, no easy way to make a quick and dirty Mac program, and that is not LS’s fault. But I do agree that exit is a needed function in LS Pascal! -Ed]

It’s little things like this that almost drive me back to Turbo...if not for the observe window, I’d still use Turbo against my professor’s wishes. If I could get more memory and a hard disk, I might even go back to TML. The sad thing is that now I’m a registered owner of all these wonderful products. I buy, and I complain, and I go broke. It’s good that they all cost under $100 dollars to the student or the APDA member.

Anyway, enough complaining. I am also writing for an Author’s kit. I am currently writing a POS system in Hypercard (that will hopefully pay for a hard disk--thanks to your article I may build it myself). I realize that HyperCard is probably too wimpy for coverage by MacTutor, but it sure beats pascal for ease of programming. I took a U.S. map from ClickArt and transferred in US census data stolen off floppies from the Tech library and made a nifty demographics program all in about an hour. Try that in Pascal!

Another area of interest I have is in CD-ROM. I was about to buy a Hitachi CD-ROM when a mac developer told me to wait since a major player whose name started with an “A” was about to enter the field and break some price barriers. An article on HyperCard would be really nice once this product materializes from vaporware. Perhaps some sort of data link to HyperCard could be written as an XCMD, since HyperCard won’t read locked volumes. (Maybe a smart SCSI driver could fool it.) Thanks and keep up the good work!

Dialog Boxes

David Dunham

Goleta, CA

I think Kirk Austin (Vol. 3, No. 12, p.73) has the right idea; “about” dialogs should be unobtrusive. Unfortunately, his routine prevents multitasking, with or without juggler(er,MultiFinder). It would be better to call SystemTask, to keep DA’s multitasking, and GetNextEvent to keep background applications running. (Apple says that Systemtask is redundant under the Multifinder environment, but it’s easier just to call it than to check your environment.) I also think a key should be able to cancel the “about.”

while (true) {
 SystemTask();     /* keep clock ticking  */
 if (GetNextEvent(mDownMask | keyDownMask, &event))

If you prefer that the click which cancels the “about” be passed on to the appropriate program (remember the Mac has always multitasked --the user could be clicking in a desk accessory window to activate it), you can use something like the following:

while(!EventAvail(keyDownMask | auto =KeyMask  |  mDownMask, &Event))
 /*Remove mouseDown if in our window */
 if (event. what ==mouseDown){
   if (PtInRect(event.where,&window->portRect)){
   GetNextEvent (mDownMask,&event);  /*swallow event*/

This code comes from my desk accessories, which have “transparent” title windows. I call them transparent because you can just start typing or mousing without having to actively cancel the window-- events pass right through.

Impact of HyperTalk

Charles Turner

As nifty as HyperTalk is, I expect that it will noticeably increase the market for MacApp and similar products as new programmers meet the Mac and old programmers get the object orientation. [We would like to hear from MacTutor readers on what impact Hypercard will have on programming. Will people still want to program the Mac? Obviously this question has a great impact on MacTutor and our programming orientation. -Ed]

It Ain’t Easy in Jamaica

Charles Dyer


Regarding ‘No Fluff Stores’: there’s one apple dealer in Jamaica, and he’s as arrogant as only someone in a monopoly situation could be. No, He’s more arrogant than that; I work for the local power company --we run Harris SCADA boxes, and boy, are they primitive in comparison to a Mac-- and if JPS ever tried half of what the local Apple dealer pulls, there’d be a revolution. The nearest thing to ‘No Fluff stores’ that I know of are Computer Village in Miami--Kendal, actually, about a half an hour south of the airport, less if you don’t mind about being pulled over by the cops--and H.I.S. Computermation, in Melbourne, Florida. Melbourne’s where Harris corporate headquarters is, and also where Harris Controls division hides out from the rest of the world; I spent a lot of time there while Harris was getting our system ready. If you’re in southern or central Florida and need a good store, you could do worse.

I got Kronick’s MPW and Assembly Language from APDA last month and can endorse Nash’s comments completely. before this book, assembler was something I used when I had no choice; now, it’s actually getting to be semi-fun.

And one last thing: thanks to the fact that the local telephone company has two extremely obnoxious policies: they charge A LOT for long distance calls, and they say that external modems are illegal --note:internal modems are fine, so long as you pay a hefty installation fee, but not external modems, because they rent external modems-- I can’t get to the Mousehole directly. Could you increase you coverage a little for those who for one reason or another can’t dial in? And regarding that posting ‘Bashing Macworld’: be nice to them they don’t know any better. Besides their review policy can be made to serve you quite well, once you catch on to the facts noted in by the Psuedohacker. There is a certain hard drive company which shall be nameless-- their lawyers might be better than their engineers--which has had extensive advertising in MacWorld for quite a while, but which had never had one review of their products published anywhere-- at least not anywhere that I’d seen and I looked. When contacted over the telephone-- a toll call, toll free numbers don’t work outside the U.S. -- they got kinda evasive. A short time after I made the call, I got a new issue of MacWorld, the August issue, I think -- and it was the only first really negative review that I can recall seeing in MacWorld, and it was about one of that companies products! First rule of MacWorld reviews: if they advertise there but have never been reviewed, there might be a reason, so caveat emptor. Second rule: if MacWorld dumps on it, it must the dog of all dogs and this time you can’t say you weren’t warned. If that issue would have arrived a couple of weeks earlier, it might have saved me the cost of a phone call.

More Assembly Please

R.V. Morffi

San Francisco, CA

Just a little note to congratulate you on the Technical magazine for the macintosh. I don’t say the best because that would imply that there are are others and you simply have no competition when it comes to the amount and quality of hard technical information content of MacTutor.

I am a professional systems programmer working on Unisys (Borroughs) mainframes. However, when it comes to the Mac I’m a novice. But I recently acquired MPW for the Mac and have been playing with its excellent assembler ever since.

I have noticed that beginner assembly articles on MacTutor have become scarce so I would like to contribute a small article describing an MPW skeleton application I wrote that can be the basis for other applications. It handles window events, desk accessories, etc.

If you could use my humble contribution, please send me a writers kit.

Spreadsheet Advice

Greg King


This is in response to the request by Cary Mariash in the Jan 88 issue of MacTutor for spreadsheet source code. I personally have not yet written a spreadsheet, though I may be forced to in the future, but sample code for such a beast exists. “Programming the 68000 - Macintosh assembly language” by Edwin Rosenzweig and Harland Harrison from Hayden has as one of its sample programs a very simple spreadsheet called simplecalc. An alternative way of handling cells on the screen is to use the list manager but this way may prove unwieldy for data sets. (I have used the list manager but am in no way an expert on it.)

My only comment to Mr. Mariash’s request is why re-invent the wheel? I have written the FFT desk accessory, available on Compuserve, for performing Fast Fourier Transforms on the premise that all I/O will be done via a commercial spreadsheet through the clipboard. I feel that it is more time effective for a researcher to implement his/her custom routines as a desk accessory and build upon the platform provided by the commercial spreadsheet, all you have to do is learn how to write DA’s and how to handle the clipboard. This however may be a biased opinion since I am a big fan of desk accessories, I write more desk accessories than applications.

One application that I did write is SpectroPlot, a user extensible data analysis, digital signal processing, and graphics program for large sets of scientific data(>16K data points), specifically digitized spectra. It is capable of exchanging data with commercial spreadsheets through optimal tab delimited data files but currently doesn’t offer the user the ability to directly enter or alter data. SpectroPlot only offers minimal processing capabilities as I intend it to be a visual shell that can call custom routines that researchers compile into code resources. this way researchers need not worry about learning how to program the Mac user interface. The funny thing about this concept was that I was working on it before I saw HyperCard.

Anyway enough babbling, I hope Mr. Mariash finds what he needs and wish him success in his endeavors.

Will the Real C Stand Up

Barbara Pollock

Hawthorne, CA

My question is a legal question but I need a little guidance in finding the right place to ask the question. I want to go commercial with a game I have been writing for the last half year. I think C is the language I want to use. My question, Is there a C for the Macintosh that lets a user sell her C program?

My game is a Poker game,complete with screen graphics. I am still working on the subtleties of the game, but the game without added frills is complete. Originally the game was written for a class at UCLA Extension and the class recommended Lisp as the language. At the moment, the game is written in ExperLisp, which does not allow selling any part of the language.

Any suggestions? [Think is running a pretty impressive ad in MacTutor that says Pagemaker was written in LS C with the obvious implication -Ed]

Where is John Mitchell?

Anthony C. Marlowe

West Germany

Could you please tell what’s with MacMaster Systems? I Know John Mitchell is supposed to be working for Apple. I was one of the few registered users. It took 3/4 of a year for the first new copy of FEdit+. I ordered version 2.nn sometime in May of this last year and have not heard a word since.

Keep up the great work on your magazine. I agree with you about the concept of a single application designed to do a single task and do it well. I have MPW mainly because of my interest in MacApp™ and TML’s Modula-2 (which I received quite promptly). I also find the Pascal better than LSP. If you take QUED/M (a great editor), TML Pascal & Linker, Rez and SIJ’s Debugger, one has a good development system. I run TML Pascal on a Mac+ and am using Rel 2.5 and Wombat’s comment about 2.5 not curing the problem from June/87? I ran the program with 2.2 and 2.5 on my plus and it ran the way it should.

I am looking for a file management system comparable to c-tree and r-tree from Facom for Pascal and MOdula-2 MPW compatible. TML’s system is not modifiable and lacks the necessary flexibility.

No More MacTutor for Me!

Robert W. Jasinski


If it is possible, I would appreciate your discontinuing my subscription to MacTutor and refunding the prorated amount applicable to the issues not received yet. I would like to discontinue basically because your magazine is above my head. I was hoping for a source of type-in BASIC programs that I could learn from, but your material is far more advanced than I am able to handle. I am not a computer professional and have never had a formal course in computer science. I’m just trying to teach myself a little in my very minimal spare time. The format of your magazine is good, and you should not take this as a statement that your magazine is not worthy. Thank you for your time and trouble. [Suggest you look into Nibble Mac. They feature type-in Basic programs primarily. -Ed]

Standing’s Article

Noel T. Goldsmith


Now for a complaint, how long will it be before you publish the rest of Tim Standing’s program on the SCSI driver. I was so inspired by his articles that I am now the proud owner of a Wren III, which is very fast.

I have not tried the Wren on the Mac II yet, as I am getting a bit sick of reformatting the drive to try different interleaves. (If I believe what I hear the interleave for a II is 1, for an SE is a 2 and for a Plus, 3).

I read Jörg Langowski’s article on his SCSI driver, but what about the new Partition Map Entry, (Inside Macintosh V, page 5, in chapter 31 The SCSI Manager) which replaces the Device Partition Map, and will allow a disc to be divided up into separate OS partitions?

I could suggest (I know someone who..) that a person might profit in examining the physical blocks 0 and 1 on a variety of hard disks formatted and initialized by variety of utilities (in the privacy of your own home as Steve Jasik puts it ), and a person could also profit by examining code using ResEdit, and a person could profit even more by reading the information available from manufacturers about their SCSI drives. It is interesting to speculate upon the reasons for Apple’s and other’s HD SC Install program’s refusal to recognize drives which are not supported by Apple or others (such as Wren III). As you might guess, I know more than I am telling, and look forward to receiving an author’s kit. [Tim Standing’s SCSI driver article will appear about the time Apple releases MacBasic, which is to say never, unless Mr. Standing has a change of heart and publishes it. -Ed]


Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Brawl Stars veteran-backed Octopo Studio...
The 2024 PlayX4 B2B is kicking off tomorrow in Ilsan, lasting until the 26th in KINTEX Hall 1, and Octopo Studio has announced that they will be making an appearance. Shooting RPG Bounty Pang will be on show as the developers seek publishing... | Read more »
The Astral Express sets off to bring Hon...
After vanquishing yet another threat and adding a fine hat to their wardrobe, you’d think the crew of the Astral Express would be able to kick back after their adventures in Penacony. Clearly not though, as HoYo has announced the next leg of the... | Read more »
Dragons rein supreme in Pokemon Unite as...
If you were looking for the strongest type in Pokemon and asked the fanbase, I would wager most people's thoughts would turn to Dragon. They hit hard, are often powerful, and get used by some of the toughest trainers. Pokemon Unite is honouring... | Read more »
Players can take a peek into the design...
It doesn’t matter how much effort developers put into their classes, or how many special little mechanics there are; if there is one that wields two blades, I’m ignoring everything else. Diablo Immortal recently announced such a class in the shape... | Read more »
Android users have a new option in the c...
When you are in the thick of a firefight or trying to pull off a mid-combat parkour flip through a squad of foes, sometimes touchscreen control just won’t do it for you. For those intense sessions, you could benefit from a good mobile controller,... | Read more »
Jagex releases the first of three origin...
At this point, I am sure everyone has heard of Runescape, and or Runescape Classic. It has been going strong for 23 years, with constant content and story coming out. Luckily for fans of the game, or fantasy in general, Jagex has announced an... | Read more »
Watcher of Realms unveils new story and...
Watcher of Realms players are in for quite the feast this month, as Moonton release two powerful new heroes, including one that will burst down even the most mighty of foes. Recruit your new friends, and then burn through the Main Quest expansion... | Read more »
Reverse: 1999 continues its trip down un...
The field trip to Australia continues in Reverse: 1999 as Phase 2 of Revival! The Uluru Games kicks off. You will be able to collect new characters, engage with new events, get hordes of free gifts, and follow the story of a mushroom-based... | Read more »
Ride into the zombie apocalypse in style...
Back in the good old days of Flash games, there were a few staples; Happy Wheels, Stick RPG, and of course the apocalyptic driver Earn to Die. Fans of the running over zombies simulator can rejoice, as the sequel to the legendary game, Earn to Die... | 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 »

Price Scanner via

Amazon is blowing out clearance 13-inch M1 Ma...
Amazon has clearance Apple 13″ M1 MacBook Airs on Memorial Day sale for $300 off original MSRP, only $699. Their prices are the lowest available for new MacBooks this Holiday shopping season. Stock... Read more
MacBook Sale! 13-inch M2 MacBook Airs are onl...
Best Buy has Apple 13″ MacBook Airs with M2 CPUs in stock and back on sale this week on their online store for $150 off MSRP in Space Gray, Silver, Starlight, and Midnight colors. Prices start at... Read more
Apple increases iPhone trade-in values ahead...
Get up to $650 on the purchase of new or refurbished iPhone at Apple using their official Trade In program, now with increased values ahead of WWDC 2024. Trade in your old iPhone, and Apple will... Read more
Amazon has Apple’s iPad discounted to a new l...
Amazon has Apple’s 10th-generation WiFi iPads on sale discounted up to $40 off MSRP, starting at only $334. With the discounts, Amazon’s prices are the lowest we’ve seen for these iPads: – 10″ 10th-... Read more
13-inch M3 MacBook Airs on sale for $100 off...
Best Buy has Apple 13″ MacBook Airs with M3 CPUs in stock and on sale this week for $100 off MSRP. Prices start at $999. Their prices, along with Amazon’s, are the lowest currently available for new... Read more
Weekend Deal! Best Buy has Apple Watch Series...
Best Buy has Apple Watch Series 9 models on sale for $100 off MSRP on their online store this weekend. Sale prices available for online orders only, in-store prices may vary. Order online, and choose... Read more
Apple Watch SE on sale starting at $199 this...
Best Buy has all Apple Watch SE models on sale this weekend for $50 off MSRP on their online store. Sale prices available for online orders only, in-store prices may vary. Order online, and choose... Read more
Mac Pro with M2 Ultra CPU on sale for $6699,...
In the market for one of Apple’s Mac Pro towers? B&H Photo has the base Mac Pro with an Apple M2 Ultra CPU, 64GB RAM, and 1TB SSD on sale for $6699 including free 1-2 day shipping to most... Read more
New May Verizon promotion: Switch and get a f...
Red Hot Deal Days at Verizon: Switch to Verizon this month, and get the 256GB iPhone 15 Pro for free, with trade-in, when you add a new line of service. Verizon is also offering a free cellular iPad... Read more
Updated Apple MacBook Price Trackers
Our Apple award-winning MacBook Price Trackers are continually updated with the latest information on prices, bundles, and availability for 16″ and 14″ MacBook Pros along with 13″ and 15″ MacBook... Read more

Jobs Board

Salon Manager BTC - *Apple* Blossom Mall -...
Salon Manager BTC - Apple Blossom Mall Location:Winchester, VA, United States ( - Job Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States ( - Apple Read more
Beauty Consultant - *Apple* Blossom Mall -...
Beauty Consultant - Apple Blossom Mall Location:Winchester, VA, United States ( - Apple Read more
Hair Stylist - *Apple* Blossom Mall - JCPen...
Hair Stylist - Apple Blossom Mall Location:Winchester, VA, United States ( - Apple Blossom Read more
Operations Associate - *Apple* Blossom Mall...
Operations Associate - Apple Blossom Mall Location:Winchester, VA, United States ( - Apple Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.