Feb 88 Letters
Readers Respond to Editorials
By David E. Smith, Editor & Publisher, MacTutor
Making WriteNow MultiFinder Friendly
Mr. Sleazy Hacker
Heres a very sleazy patch to get around WriteNows habit of blasting a ruler across the entire screen (assuming a Mac II sized screen of width 640 pixels). The patch was applied on a Mac II with B/W monitor, and version 1.0 of WriteNow.
Using Fedit or equivalent, search for:
A91B 2F0C 2055 3F28 FF92 5557 3F3C 002C
And replace with:
A91B 2F0C 3F3C 0258 4E71 4E71 3F3C 002C
Theres one occurrence of the pattern. What we are doing here is replacing:
In other words, the code fragment that calculates the width of the ruler as (screenBits.bounds.right -2) is replaced with one that supplies a constant value of $258 (decimal 600). [Note to developers: they never should have used screenBits.bounds for this calcuation. Since their ruler is in its own window, as David Dunham points out below, it should have been defined as a fixed size window or better still, growable. -Ed] The largest argument that subq will take in this form is 8, hence the substitution with a constant. Of course, once youve done this screen-size independence flies out the window, so dont do it to an original...(You can find this peice of code with TMON by putting a trap intercept on GetNewDialog, launching WriteNow and waiting for the first intercept. GetNewDialog is immediatly followed by a MoveWindow and the SizeWindow shown above.)
When the ruler is shortened by 40 Pixels in this fashion, theres just enough room for part of the top Finder icon to peek through.
Since this trick is so sleazy, I think Ill request anonymity of you decide to publish it! [Granted! -Ed]
By the way, theres one MacWrite feature that I especially miss under MultiFinder when using the newer word processors - its ability to put formatted text on the clipbord (the MWRT scrap format). Microsoft Word, WriteNow (at least the version I tested) dont do this, so youre cutting and pasting plain text. Since PageMaker seems to understand this scrap format, thats a pity. The MWRT format isnt perfect -- you cant pass leading values, specify baseline offsets or odd-ball styles like strike-through, but its better than nothing. Im hoping that there will be some improvement in this area in 1988. [We agree! The whole point of developing a new Text Edit was to support a new formatted text type for the clipboard, but no one is using it yet! We encourage developers to standardize on support for the new formatted text type in cutting and pasting across applications. How about an article to encourage this someone? -Ed]
C String Library Corrections
Los Altos, CA
I keyed in the Pascal String Library for C from the November, 1987 issue. My Version (2.13) of Lightspeed C reports problems in some of the routines. Specifically--
Page 39, right column, line 6 reads -pos; [This should have been --pos; in PStrCopy.c]
Page 40, right column, line 23 reads While (*-sp != c && -n >=0); [This should have been (*--sp != in PStrFindLC.c]
Page 40, right column, line 42 reads -sp; [This should have been --sp; in PStrFindLS.c]
Page 41, left column, line 13 reads *-d =*-s; [This should have been *--d = *--s; in PStrIns.c ]
Page 41, left column in procedure ShowVars(), variable wp not declared. The line as printed reads: auto WindowPtrwp, savedPort; [This should have been auto WindowPtr wp, savedPort; in ShowVars.c]
Most of these have obvious solutions with the exceptions of the first and last. If you could peek at the orginal and let me know what pos was being subtracted from, and what wp should be declared as I would appreciate it. Thanks and a fine 1988 to you all. [Thank you for bringing this to our attention. Using the operator -- as in --pos can sometimes lead to confusion when source code is placed in Pagemaker columns. We apologize for the inconvenience.]
Nice to Get Paid!
Picked up my MacTutor yesturday along with the check. thanks! JIm was amused that you him living in Goleta (hes living in Dayton OH), and Ill have to split the check with him but no problem.
Once again, I exhort you not to smooth screen dumps! The illustrations looked much better in my print out of the article. Also you forgot to use the [option] key while placing the document, and pagemaker curved all the quotes which werent supposed to be curved. In my article, this just made everything ugly (since Id already used typographers quotes), but in the MPW article, it makes things confusing, since MPW uses various sorts of quotes already.
By the way, PageMaker does use something very like Acta s format drivers. Theyre called filters, and theyre part of PageMaker, rather than separate resources files. Somewhere I have a tech note from Aldus on writing them. (I found out about them long after Id design Acta s format drivers. It seems like everyones headed in the same direction -- Apple has a very similar concept in their format exchange program.)
I was amused by your editorial -- looked suspiciously like a review to me (and arent reviews fluff?). Also its inaccurate -- WriteNow s is indeed a window. [Your right! I never realized you could move it! -Ed] This is readily apparent when you grab it by the numbers and move it. I grant you, its a somewhat MultiFinder-unfriendly window (Hypercards windoids and Superpaint s palettes are the nicest, since they disappear when the applications juggled out ). On the subject of Multifinder design, how about interface? Programs like Pagemaker orWord which use weird keybord equivalents for frequently used operations are especially egregious when used next to other programs which perform the same functions with standard equivalents. [Hear, hear! -Ed]
As for Mousehole Report, desk accessories have always been multiasking. They still are under Multifinder, though they dont seem to get quite as much processor time. By the way, DAs are just one out of six ways you can multitask without MultiFinder or Switcher. These are:
programmed support (a la Works ),
VBL tasks (JClock ),
DAs (Alarm Clock is an obvious example),
GetNextEvent patching (BackDown ),
and disk initialization (purhaps stretching the definition here, but the system does run a special program for you -- a separate program in most systems). I have a half finished article on the subject, probably made obsolete by the release of MultiFinder.
Reflex Plus Comments
Kenelm W. Philip
It was with great interest that I read your editorial on Reflex Plus in the January 88 issue of MacTutor. After reading it, however, I wrote the enclosed letter in the attempt to urge Borland to fix two defects (one annoying, one serious) in the existing versions of reflex Plus.
P.S. If you will reread my previos letter ( which you printed in the January issue), you will see that I was talking only about Mac II systems with two monitors when I mentioned the COMMAND-Grow_Box method of expanding windows. Both Reflex Plus and MS Word, for example, will not allow you to expand a single window to cover two mmonitors without using this handy trick.
I am glad to see your editorial on Reflex Plus in the January issue of MacTutor. I have been using Reflex intensively since it first came out from Singular Software as Interlace in 1085, and I Have found the program to be almost ideal for my purposes ( which involve maintaining data on a research collection of Alaskan insects). However, I think your readers should be aware of a couple of disturbing problems that have emerged, one involving the use of Reflex with Apple System versions 4.1 and later, and the other involving Reflex Plus.
Date Formatting Limited
Problem # 1 has to do with the formatting of fields declared to be of type date. According to the manual (for both Reflex and Reflex Plus) there are three date formats:
long:December 31, 1984;
abreviated: Dec 31, 1984.
Unfortunatly, this is not the case with System 4.1 or 4.2, where both the Long and Abbreviated formats add the weekday name, becoming:
Monday, December 31, 1984
Monday, Dec 31, 1984
I have verified this problem for Reflex 1.00 and 1.01, and Reflex Plus 1.00 and 1.01, with Systems 4.1 and 4.2.
For my work on insects, dates are very important but weekdays are not. It was disconcerting to find that all my carfully formatted reports were fouled up by the addition of an extraneous and unwanted weekday name in date fields as soon as I upgraded to System 4.1. It occurred to me that the problem might very well lie in the International Resources in System 4.1, and that it might be possible to hide the weekday by activating the supress dayname byte in those resourses. I ran into some problems trying to do this, so I sent a request on AppleLinkfor help with this operation. To my vast astonishment (remember that Apple and Borland are currently engaged in a joint promotion campain for Reflex Plus!) the reply was, in essence: We do not recomend using ResEdit on applications. We suggest you try another database. I had not even suggested using ResEdit on Reflex Plus.
I then wrote Borland. They replied that the problem lay entirely with Apples System software. Somehow, I was expecting them to say that-- But the problem remained. It also looked as if the technical support people at both companies were totally unaware of the Apple/Borland joint promotion campaign.
I was able to elicit a workaround for the problem. If you declare the field to be of type text in your report, you can constuct a formula which will put the date into any form you like (without weekday names)-- and Borland was kind enough to supply me with such a formula. I reproduce it below for the benefit of other people who have run into this other wise intractable problem. Assume that your date field is named WHEN, and you would like dates in the format: 31 Dec, 1984. Use the following formula in the report, where the new date field is a text field:
A slightly different version of this formula is available from Borland as Tech Info note #370, Truncating the day of the week, date 28 september 1987. [We used a better refinement of this method by setting up a look-up table file to associate the month name with the month integer. This is a more elegant approach than the massive If Then Else statement. -Ed]
We are not out of the woods yet. A date field in a report so formatted will not sort by date. If you need to sort your data in chronological order, and you have Reflex(rather than Reflex Plus) you are out of luck. In Reflex Plus you can do the following: create one report in which the date field is of type date, and sort that report on date. Create another report in which the date field is declared to be of type Text, using the formula above--and then call the repeat rectangle from the first report in the second report (see page 184 in the Reflex Plus manual: accessing Data in other reports). This cumbersome workaround will take care of the problem--but its a kludge! Apple and Borland should get together and solve this problem. [Borland is right in saying that Apple modified the International date routines, which many companies use as is to avoid having to duplicate functions already done by Apple. But Borland should add to their built-in function list to include more date formatting functions. However, this is minor compared to the limitations of the exportation of reports I reported last month! My brain-damaged report exportation fix should be at the top of their things to do list! -Ed]
Header and Footer Problems
Problem #2 is one that Borland introduced with Reflex Plus (both version 1.00 and 1.01). Something went wrong with the formatting of headers and footnotes in reports, and they now take up the entire space within the header and footer boxes even if they are only one line in length. that in : a one line header will be separated from the body of the text by about 1 3/4" of blank space; and a one line footer will have about 1 3/4" of blank space between itself and the end of the page, leaving about 6" of space for the text of the report. I have not yet verified this problem with all concievable configurations of hardware, but it has turned up with the following: Macintosh+, System 4.1, 15" ImageWriter; Macintosh II (2 MB RAM), System 4.2, 15" Image-Writer; Macintosh II (5 MB RAM), System 4.2, LaserWriter-from which I conclude that this is almost certainly a universal problem with Reflex Plus.
I called Borland about this situation, since I found Reflex Plus essentially unusable when it came to printing my data in properly formatted reports. The first response I received from Tech Support was that I had run into a problem that sometimes occurs when you take a Reflex database into Reflex Plus, and that I should throw away the existing headers and footers and re-install them from within Reflex Plus. That accomplished nothing-so I created a new test database file from within Reflex Plus, and, as I suspected, the exact same problem turned up. I called Borland again, and Tech Support now (reluctantly) admitted that they had received a number of angry calls about this problem. Nothing was said about when or if a fix would be made available.
I find it impossible to believe that beta testing did not expose this problem (unless Borland does not do beta testing). I am thus forced to the unpalatable conclusion that Borland released Reflex Plus unfinished, knowing it was not in fact yet suitable for the business environment for which it had been targetted. I had written Borland earlier to inquire if the major price increase in Reflex Plus would be accompanied by a proportional improvement in their user support, since their previous policy had been not to notify registered owners of upgrades. They assured me that I would be seeing a totally new level of support for Reflex Plus. It seems to me that one of the first steps in user support might be to provide customers with a business database that could print proper headers and footers...
I totally agree with the main thesis of your editorial-Reflex Plus is potentially a fantastic program, and would be my preferred database environment if it could only print decent reports. For the time being, however, I have archived Reflex Plus and returned to Reflex, which can handle headers and footers. [If my export problem were fixed, then you could export the report to Pagemaker and format it anyway you like! -Ed]
More Postscript Articles
Ive just finished reading the article by Nocholas Pavkovic in the January issue of MacTutor. I thought it was great. Since I am just beginning programming in PostScript I think it would great to have more articles on PostScript Programming. I need all the help I can get. Keep up the good work.
Douglas K. Beck
Los Altos, Ca.
As to things that seem to work on the Mac II: The PCPC IHD 144 internal disk installed the first time with just a screwdriver, came up with no trouble and has performed with speed and efficiency, 10 hours a day and more, for a couple of months now.
The RasterOps (Cupertino) 24 bit RGB controller is also performing up to expectations. I have written some display programs for it and it works up to the book with few misunderstandingsl I scanned some 1024 x 768 pictures from some 8x10 color positives that look fine. One picture of the Stanford Chapel, full of textures and fine detail, a bouquet of flowers and some color test patches, including the Macbeth color test pattern. I am driving a Mitsubishi HG6905BK 20 inch color display with the RO board. I am less enchanted with the monitor. All common adjustments require dismantling the thing since they are buried on the main pc board. A long insulated screwdriver is required, and you must fish down past the second anode terminal to get to them. Sigh.
I have received the National Instrument DMA controller, but have not tested it. Looks interesting, and uses an Intel chip to do the transfer thing.
Still to be received are the National Semi 16 Megabyte board and the Optronics 400 meg WORM unit. I will report how they work if desirable.
One thing that is causing pain right now, is having to convert from Megamax C to Lightspeed C to gain access to the color stuff on the II. Megamax is not going to support their Mac product any longer, and have orphaned the product just as it is coming of age on a machine that has the speed and multitasking capability to make it viable. Lightspeed is a nightmare. The inconsistent handling of strings is pitiful. With Megamax, all strings were C strings and the compiler took care of all the conversion work. Lightspeed lets you guess, Pascal or C this time? Bah. Cant someone lean on Megamax and get them back in the game?
Spleen vented. Flame off. [A better approach would be to lean on Think to enhance their very popular C compiler to make string handling easier. -Ed]
I agree on WriteNow. I recommend it without reservation for all but the heaviest of duty tasks.
Incidentally, making mailing labels with HyperCard has been a pain. The ImageWriter is just not up to the task. However, if you get some Avery 5331 liquid toner copier labels (for use with the Cano Engine) the LaserWriter does a very creditable job. Looks neat on the Christmas Cards. [I use a very solid NEC Spinwriter for mailing labels for MacTutors 13,000 cirrculation. Apple simply does not make a business printer that can do labels reliably in the volume we need. The Spinwriter, however, is a truck. It can run all night and never jam. But it was a pain to get it working with the Mac! -Ed]
Speaking of Christmas, a Merry one to you and the very best for the New Year.
Now that the PostScript article is out of the way, I thought Id let you know about some of my more recent work. Ive postponed QuickScript, my PostScript editor/downloader, and am finishing up a new program thats similar to FindsWell. Youll find a spec sheet enclosed. If you know of any publishers who are actively looking for products, let me know and Ill send them a copy.
Another program Im working on is a PostScript page layout program. No flashy graphics - this is a code-based program like JustText. What makes it unique, though, is that all of the processing is done on the LaserWriter in PostScript rather than on the Mac. Heres what I do: I trick the PostScript interpreter into reading the text thats sent over as text, not PostScript code. Its put in a string buffer. Whenever the user encloses anything with square brackets, though, the text within the brackets gets treated as PostScript. Coded text might look like this:
[body] [italic] PSText [plain] is a new page layout program that uses PostScript to perform the linebreaking and formatting that is normally done by the Macs processor [left].
body, italic, left, etc. are defined in a library of PostScript procedures, much like LaserPrep. The library can be added to by any PostScript programmer. There could also be additional libraries for typesetting tables, special effects, graphics placement and so on. Though this isn the sort of thing your average PageMaker user would pick up, I think it has some potential:
It will be shareware, so it wont cost an arm and a leg. Additional libraries for handling special typesetting needs could be public domain.
It would offer a great deal of control over type, so it will appeal to people who are frustrated with some of the limitations of the current WYSIWYG programs.
Its files can be generated with any word processor or editor. They can be downloaded to the LaserWriter or Linotron using a public domain downloader or even from the editor itself via the Postscript escape font.
Id like to introduce it in a MacTutor article. Though its a PostScript hack, Im hoping that it will give me some credibility with Adobe. Id like to approach them about funding the rest of the development and marketing of my PostScript editor/downloader. Let me know if you think its something youd like to run and Ill start working on the article. Thanks. [Id like to run it if you publish a program source showing some tricks on how to implement your idea, rather than just a review or press release. -Ed]