Nov 90 Letters
Volume Number: | | 6
|
Issue Number: | | 11
|
Column Tag: | | Letters
|
SteveForth Corrections
By Kirk Chase, Editor, MacTutor
SteveForth Correction
Steve Hawley
Mountain View, CA
Recently I discovered that SteveForth, a FORTH system that I wrote, had been given a brief write-up in MacTutor Magazine by Jörg Langowski [April 1990-ed.]. I am elated that my work has received a certain measure of exposure in your journal, and I am grateful for the positive marks from Mr. Langowski.
I am at the same time distressed because SteveForth is also misrepresented in the very first paragraph. Mr. Langowski write: There is a new public domain Forth available in NetLand: SteveForth I would like to point out that SteveForth is NOT public domain, nor is it shareware. It is currently in Beta release and is not entirely stable. I do not feel it is ready for a general release, which is why the following paragraph appears in the documentation:
Thanks for volunteering to beta-test SteveForth. I really appreciate it, and as a token of my appreciation, I have made the source code available to you. I must point out that I do not want SteveForth to be given away until it has been thrashed sufficiently by you. I wrote SteveForth in the space of a semester completely by myself along with a full course load. Theres no possible way it could be completely stable. Id like to know who my beta-testers are so I can provide them with patches and bug fixes as soon as possible. Giving SteveForth to someone else at this stage isnt fair to who you give it to, and it isnt fiar to me, so please dont do it.
I am dismayed that Mr. Langowski completely ignored this paragraph (although it is apparent he read the documentation), and offered to give SteveForth away himself without contacting me for approval.
SteveForth is currently on the back burner, as I am busy with other projects and no longer have the convenient access to a Macintosh for development. I anticipate that it will be ready for shareware release sometime in 1991.
Steve Hawley
hawley@adobe.com
Tool Window Manager - Pascal
Brendan Murphy
Palatine, IL 60067
Included on the source code disk for this month (#62) is a Pascal version of the Tool Window Manager written by Mr. Fruin [for the December 1989 issue. I have also included the source on that source code disk, #39-ed]. It was written in TML Pascal II and I have used it with Think Pascal. I translated it from C to Pascal a month after the article came out. I thought of sending it in, but then I read the comment Mr. Fruin made about a Pascal version being forth coming and decided it was not needed. There are no comments in the file--one of life little pleasures! It seems to be fairly well debugged, but there are some flaws in the original design of the unit. For example, being able to float a modeless dialog. The dialog manager gets in the way. Also it is not flexible enough (makes to many assumptions about how people want to have there windows float). Future enhancements could include multiple layered groupings of windows and a more sophisticated multiple active window scheme. Even though Ive used this unit, I recommend that people use Thinks Class Library instead because it has floating windows and you gain all of there other classes! Besides, it is a good idea to get on the object-oriented programming band wagon before it runs you over. I highly suggest that MacTutor take a more aggressive role in supporting TCL like MacApp Developers Association supports MacApp. I dont see TCL competing with MacApp, but filling a need where MacApp would be over kill by a factor of ten (which is most of the time).
Pearl Lisp Update
Stephen E. Miner
Mountain View, CA
Your reader might want to know that my article, Objects in Pearl Lisp which appeared in the August 1990 issue of your magazine, was submitted a while ago. Since that time, Apple has acquired Coral and discontinued the Pearl Lisp product. Corals Common Lisp product is now known as Macintosh Allegro Common Lisp, and is available from APDA.
Although the current version of Macintosh Allegro Common Lisp (MACL) still uses Object Lisp implementation of object-oriented programming, the future belongs to the Common Lisp Object System (CLOS) standard. (See Common Lisp: The Language, Second Edition, by Guy L. Steele, Jr. for more information on the CLOS standard.) Apple promises to implement CLOS in the next version of MACL. In the meantime, an implementation of Portable CommonLoops (PCL), which is evolving towards the CLOS standard, is available by anonymous FTP from Arisia.xerox.com or by ordering through APDA.
On a personal note, Im now working as a Macintosh software consultant at the Institute for Research on Learning in Palo Alto.
B-Tree References
Melvyn D. Magree
Plymouth, MN
I would like to add some references and thoughts to Clifford Storys article, Language Translation, Binary Trees.
First, Niklaus Wirths Algorithms + Data Structures = Programs has a good discussion of tree structures and includes the procedures in Pascal. He discusses Optimal Trees (which he uses for a compiler example), Balanced Binary Tree, and B-Trees among others.
I used Wirths B-Tree algorithms as the starting point for B-Tree HELPER, extending it with reading and writing pages of the tree to a file, managing keys and records separately, getting and releasing file space in a random file, and searching for keys less than or greater than a given key.
Second, D. Comers The Ubiquitous B-Tree gives a history, rationale, and explanation of B-Trees. His article appears in ACM Computing Surveys, Vol. 11, No. 2, June 1979. He also includes an extensive bibliography.
Comer also explains B*-Trees and B+-Trees. B*-Trees were named by Donald Knuth in The Art of Computer Programing, Vol. 3, Searching and Sorting. Knuth proposed that B*-Trees had nodes that were at least 2/3 full rather than 1/2 full. Many people use the name B*-Tree for another B-Tree variation proposed by Knuth. Comer says that Knuth did not name this variation, but Comer chooses to call it B+-Tree. B+-Trees have all keys in the leaves of the tree. The leaves are also linked from left-to-right making B+-Tree ideal for sequential search. The disadvantage is that some keys are duplicated several times, but there are ways to reduce the storage requirement. I did not use B+-Trees in B-Tree HELPER.
If any reader is looking for a good research topic for a paper or article, consider doing an update on The Ubiquitous B-Tree.
Mac286
Orange Micro, Inc.
1400 N. Lakeview
Anaheim, CA 92807
(714) 779-2772
You can now have the best of both worlds. Orange Micros Mac286 is a 8MHz, Intel 08286 board fro the Mac II. It literally is a second computer in your Macintosh. With the Mac286, you can execute DOS applications in one window, while you run Mac Programs in another. The Mac286 makes your Mac a full AT compatible. And since this is a hardware/software solution, you will get higher performance than just software solutions. There is also Mac86, a XT compatible board for the Mac SE.
New Product Compatibility Checklist
Kirk Chase
MacTutor
With Apples introduction of new products, Apple sent a compatibility letter over AppleLink. The new CPUs will be running System 6.0.6. For those who are not on AppleLink, here is a brief synopsis of the compatibility check list found in that letter.
1. Your application should not write directly to hardware (especially ADB or SCSI). It should call the appropriate system software managers.
2. Do not assume the presence of a floating point unit (FPU) on 68020 and 68030 machines. Always check for it explicitly. The July 1990 issue of Apple Direct (FYI on page 4) discusses this and has more information about how to check for the presence of an FPU.
3. Do not assume monitor pixel resolution (particularly for the color monitor). Check explicitly for the monitor resolution. See Inside Macintosh, Volume V, chapters Color QuickDraw and Graphics Devices for more information.
4. Do not assume the dimension of a monitor (i.e. 640x480). Check explicitly for the monitor size. Always follow the Apple guidelines and size windows automatically according to Technical Note #2.
5. System Software 6.0.6 and System Software 7.0 share the same Sound Manager. Every effort has been made to keep applications that properly addressed the old Sound Manager from breaking. You should carefully check your application with System 6.0.6 for compatibility. MacinTalk will NOT work with System 6.0.6 or System 7.0. If your application requires Macintalk, you will need to rewrite the sound portion of your application for the new Sound Manager.
5a. There is Sound Manager incompatibility between HyperCard 1.2.5 and the Sound Manager in System Software 6.0.6. This sound incompatibility will exist with the Sound Manager in all System Software releases beginning with System Software 6.0.6. However, HyperCard 1.2.5 can run under System Software 6.0.6 if the sound is set to 0 in the Sound CDEV before starting HyperCard. This incompatibility is fixed in HyperCard 2.0.
6. Macintosh SE/30 expansion card developers need to check for several things:
Cards should be clock/speed independent
Cards should take CPUCLK off of pin A38 and take C16M off of pin C38
Cables should be at least 8.6 inches long
Cards need to fit the latest form factor guidelines described in Designing Cards and Drivers for the Macintosh Family, Second Edition.
7. Nubus expansion card developers need to check for several things:
Cards should be within the NuBus power specification for ONE slot
Those cards which exceed the power specification for ONE slot should come with documentation that alerts customers that the card should be used in a machine with multiple slots.
Cards need to fit the latest form factor guidelines described in Designing Cards and Drivers for the Macintosh Family, Second Edition.
Do not assume that memory is a contiguous physical range. Logical addresses may not be the same as physical addresses. Master NuBus cards that may make accesses to the Macintosh RAM space need to be aware of this and use the appropriate Virtual Memory Manager calls to determine the physical memory locations. See Inside Macintosh, Volume VI for more details.