Re: Lisa Toolkit

From: James MacPhail <uo957_at_email.domain.hidden>
Date: Wed, 20 Dec 2000 17:18:11 -0800

I mentioned the recent "flurry" of messages of interest in the Lisa ToolKit to David T. Craig (a long-time Lisa historian who has compiled by far the largest collection of Lisa information that I know of).

I have invited David to join us here; in the meantime, he graciously agreed to permit me to forward some of his insights about the Lisa ToolKit:

Hi James,

FYI, I've used both QuickPort and the ToolKit in the past. QP was very easy to use and involved adding one or two units to my Pascal program's USES clause. The Pascal program then ran under the Lisa Office System and resided in its own window. The window's contents could be scrolled and even printed using the Office System's nice fonts. The TK progarmming was much harder since you had to start from scratch, you couldn't just take an existing Pascal program and make a few changes and have a TK-based application. You had to first object-ize your program's functions so that you could then create the appropriate Clascal clasess (oh yes, you had to also use Clascal and not Lisa Pascal, though the last Lisa Pascals AFAIK were Lisa Clascal). The hardest thing I found about using the TK was to learn what to _NOT_ do. There were many classes you had to deal with and each had many methods (these classes were divided into about a half dozen modules called Application Base Classes (ABCs) that handled tasks such as drawing, text editing, etc. For the most part, most of the methods were not used by application programmers and were really only used by other TK methods. Apple's docs tried to explain this, but I guess I was not that detailed of a reader back then.

Apple created a great little tutorial on Clascal which I have and is part of my Toolkit materials. Schmucker's Mac OO programming book has a great chapter on the TK and seems to explain it very well. Also, David Redhed's Toolkit User's Group (TUG) newsletters are good sources of TK info (I have these newsletters). Apple also published a short memo detailing the differences between Lisa Clascal and Mac Object Pascal (Larry Tesler, head of the TK dev effort and also head of the Lisa app groups, wrote this memo).

Historical aside: QuickPort was based on the Toolkit. The Toolkit was based on the Lisa Desktop Libraries which did all the real user interface work such as creating windows, handling menus, printing, etc. The Lisa applications (aka "tools") such as LisaWrite were based on the desktop libs and not the Toolkit. Reason? The TK was not developed until these apps had been well under way (the apps were started in 1981 and the TK in 1982). Apple gave some thought in the last year of the Lisa's life to re-coding the apps in Lisa Clascal but this never happened. The Lisa libs were never publically documented in a book such as "Inside Lisa". There was an internal document called something like the Lisa Programmer's Guide which the Lisa app writers created and which was never really complete. Stanford University has a copy of this guide in its Apple archive (I'm trying to get a copy from them). The Lisa libs were also never designed for use outside Apple. The reason for this was Apple wanted to create all the key Lisa software and was planning to make the Toolkit the application development environment for outsiders. I've looked fairly closely at the Lisa libs and their interfaces were somewhat complicated. It appears to me that the Lisa app teams, which created these libs, did not have a master plan on what these libs should do and created them as they needed for their specific app needs. Apple later converted some of the Lisa libs for use by the Mac (e.g. the Lisa menu manager is nearly the same). Bill Atkinson was a key player here in getting the Lisa libs converted to the Mac. The Lisa libs were also written for the most part in Pascal, the Mac libs in 68000 assembly (the notable exception was QuickDraw which Atkinson wrote in 68k code and which is the same for both the Mac and the Lisa).

FYI, the later MacApp framework was heavily based on the Lisa Toolkit and the early MA sources contained lots of TK programming. MA cleaned up the TK by reducing the core classes and simplifying the framework architecture. I did some work with MA and found it fairly easy to understand and use. MA's core programming was a 68k lib called originallly UCLASCAL but whose name was later changed to UOBJECT since the MA team was distancing itself from the Lisa (most of the MA people were also TK people, e.g. Larry Rosenstein).

If you really get into TK programming (or someone else does) I recommend that you get in touch with someone who really knew the TK well. I recommend KURT SCHMUCKER or LARRY ROSENSTEIN (LR was part of the Apple TK team).

Here's the commentary about Lisa development from one of the Lisa developers (Ed Birss):

"During the development of the Lisa applications and the application libraries, we found that application development was not as easy as we would like it to be. The library structure was very hierarchical and was hard to use. Consequently we were determined to make it easier for third parties to develop Lisa applications. This led to two ways to develop Lisa applications, QuickPort and ToolKit. QuickPort permits a third-party software developer to run standard PASCAL programs (ones that use standard PASCALI/O) in a window in the Lisa office system. In addition, QuickPort permits cutting, copying, and pasting of information from the QuickPort window to other Lisa desktop windows. The modifications the third-party developer must make to the application to use QuickPort are minimal. The developer must use a few new units, and possibly make name conflict changes. This process can be accomplished in an afternoon. QuickPort is the easiest way to get an application operational in the office system, but such a program cannot use all of the capabilities of the Lisa. ToolKit is used to write an application that fully uses the features of the Lisa. ToolKit is essentially ageneric application that calls application-specific code to implement application-specific functions. This permits the sharing of common control structure code across several different ToolKit applications. Because different applications have different needs, the ToolKit generic application had to be extremely flexible. The flexibility required, along with the need to call application specific code,led to the use of classes similar to those in SMALLTALK. The classes provide the ability to call the application-specific code while also permitting the developer to override or subclass a class to modify its behavior. Both QuickPort and ToolKit promote the development of Lisa applications. This open nature of the Lisa office system permits third-party developers to develop a specific application, yet leverage off other Lisa applications. These third parties can develop applications that target specific markets while relying on the standard tools such as LisaWrite and LisaDraw for presentation of the results."

Take care.

> Regards,
> David T. Craig
> ###########################################################
> # David T. Craig -- CyberWolf Inc. -- ACI 4D Developer #5
> # Aspen Plaza, 1596 Pacheco, Suite 203
> # Santa Fe, NM 87505 USA
> # voice 505.983.6463 ext 15 -- fax 505.988.2580
> # dcraig_at_email.domain.hidden
> ###########################################################

James MacPhail                   "Think not of engineering as art,
uo957_at_email.domain.hidden                 but of art as engineering"
Sigma Seven Systems Ltd.
james_at_email.domain.hidden        <>

MacResQ Specials: LaCie SCSI CDR From $99! PowerBook 3400/200 Only $879! Norton AntiVirus 6 Only $19! We Stock PARTS! <>

Shop and save. < stat?id=O7sajHhUCjc&offerid=13541.10000001&type=1&subid=0>

    / Buy books, CDs, videos, and more from \    / <> \ - - - - - - - - - -
This message is sent to you because you are subscribed to LisaList.

List info               <>
Send list messages to:  <mailto:lisalist_at_email.domain.hidden>
To unsubscribe, email:  <mailto:lisalist-off_at_email.domain.hidden>
For digest mode, email: <mailto:lisalist-digest_at_email.domain.hidden>
Subscription questions: <mailto:listmom_at_email.domain.hidden>
List archive:           <>

Host your mailing list for free at Maclaunch Received on 2000-12-20 17:18:30

This archive was generated by hypermail 2.4.0 : 2020-01-13 12:15:18 EST