MacWorks Plus
Page Module:Message box/ambox.css has no content.
This article relies largely or entirely on a single source. (November 2021) |
MacWorks Plus was a complete implementation (port) of the Macintosh Plus 128K ROM on the Apple Lisa and Macintosh XL computer systems, and introduced in August 1988. It was developed for Sun Remarketing of Cache Valley, Utah, under license from Apple Inc., by a contract developer named Chuck Lukaszewski, who was responsible for versions up through 1.1(h), which supported up to Macintosh System 6.0.3. Dafax Processing Corp. with the assistance of Query Engineering, Inc. then further developed the environment to MacWorks Plus II, which continued Macintosh system support up to System 6.0.8 with the Basic version, and introduced a Pro version to extend support to the maximum possible for any 68000 processor: System 7.5.5. Prior to MacWorks Plus, the maximum system supported by its predecessor MacWorks XL was System 3.2.
History
The design objective for MacWorks Plus was 100% compatibility with software that ran on the Macintosh Plus, which at the time was Apple's flagship product. This was a technically challenging goal because other than sharing the same Motorola 68000 processor, the underlying hardware architectures of the two systems were radically different. In order to understand how MacWorks Plus worked, it is easiest to divide the discussion into three areas: hardware interface, memory model and bootstrap protocol. These were the hardware-dependent aspects of the classic Mac OS at the time. The simplest method of transporting the Mac OS to another machine was to emulate them completely. Once achieved, the much larger hardware-independent code in the 128K ROM could execute with no modification. This is what was done with MacWorks Plus.
The goal was made possible by the existence of a hardware abstraction layer in the Macintosh Toolbox in the original Macintosh ROM, and a hardware Memory Management Unit (MMU) in the Lisa. Through a complete package of device drivers that fully implemented the Macintosh Toolbox Application Programming Interface (APIs), MacWorks Plus essentially tricked the 128K ROM code into thinking it was running on an actual Macintosh. It was also necessary to completely simulate the memory address space of a Macintosh Plus, including the behavior of certain illegal addresses that were deliberately exploited by certain applications (primarily games). Fortunately, while the Macintosh memory mapping circuitry was not programmable, the Lisa featured a fully programmable hardware MMU which was a legacy of the minicomputer roots of its designers. Finally, bootloaders were written for all available floppy disk and hard disk models that were compatible with the Lisa.
MacWorks Plus consisted of some 23,000 lines of source code for the Lisa-dependent hardware interface and bootstrap code, plus an image of the 128K ROM that was licensed from Apple. It also included a standalone installer and a Control Panel that enabled a user to adjust certain Lisa specific features from inside the Mac OS user interface.
Timeline of Lisa models
Script error: No such module "Labelled list hatnote". <timeline> DateFormat=mm/dd/yyyy Period = from:01/01/1978 till:01/30/1994 Define $skip = at:end # Force a blank line Define $dayunknown = 15 # what day to use if it's actually not known ImageSize= width:900 height:auto barincrement:21 TimeAxis = orientation:horizontal PlotArea = right:5 left:20 bottom:75 top:5 Legend = orientation:vertical position:bottom columns:3
Colors =
id:bg value:white
id:ap1 value:rgb(1,1,0.55)
id:0402 value:rgb(0.95,0.65,0.95) legend:Apple_//
id:040 value:rgb(0.9,0.6,0.9)
id:0502 value:rgb(0.65,0.85,1) legend:Macintosh
id:050 value:rgb(0.6,0.8,1)
id:apiii value:rgb(1,0.55,0.65) legend:Apple_III
id:apiii-b value:rgb(1,0.5,0.6)
id:portable2 value:rgb(0.6,0.9,0.5) legend:Lisa
id:portable value:rgb(0.65,0.95,0.55)
id:special value:rgb(1,0.7,0.4) legend:Apple_IIGS
id:pbook value:rgb(0.6,1,0.7)
id:ibg4 value:rgb(0.8,1,0.6)
id:ibg4a value:rgb(0.75,1,0.55)
id:LC-b value:rgb(1,0.9,0.9)
id:LC value:rgb(1,0.8,0.8)
id:mba value:rgb(0.75,0.75,0.95)
id:mba2 value:rgb(0.85,0.85,0.95)
id:pbduo-b value:rgb(0.7,0.9,0.9)
id:pbduo value:rgb(0.7,0.8,0.9)
id:line value:rgb(1,0,0)
id:lightline value:rgb(0.9,0.9,0.9)
id:lighttext value:rgb(0.6,0.6,0.6)
id:current value:rgb(0.8,0.8,0.8)
BackgroundColors = canvas:bg ScaleMajor = gridcolor:lighttext unit:year increment:1 start:01/01/1978 ScaleMinor = gridcolor:lightline unit:month increment:3 start:01/01/1978
BarData =
Barset:apple Barset:null Barset:lisa Barset:null Barset:macintosh Barset:reference
PlotData=
width:13 textcolor:black
barset:apple shift:(3,-5) anchor:from fontsize:s $skip color:LC-b from:11/01/1978 till:09/01/1980 text:"Apple III Dev." barset:break color:040 from:start till:11/01/1978 text:"<-Apple II" color:apiii-b from:09/01/1980 till:06/01/1981 text:"Apple III" barset:break color:040 from:11/01/1978 till:06/01/1979 text:"/(DOS)" color:apiii-b from:06/01/1981 till:12/01/1983 text:"/(SOS)" barset:break color:0402 from:06/01/1979 till:12/01/1982 text:" II Plus" color:apiii from:12/01/1983 till:04/01/1984 text:"III Plus" barset:break color:040 from:01/01/1983 till:10/01/1983 text:"IIe" color:LC from:11/01/1984 till:09/01/1986 text:"Apple IIGS Dev." barset:break color:040 from:10/01/1983 till:08/01/1984 text:"(ProDOS)" color:special from:09/01/1986 till:09/01/1988 text:"Apple IIGS" barset:break color:040 from:08/01/1984 till:11/01/1993 text:"(MousePaint)" color:special from:09/01/1988 till:12/01/1992 text:"(GS/OS)"
barset:lisa color:current from:06/01/1979 till:01/01/1983 text:"Lisa Development" barset:break color:portable2 from:01/01/1983 till:01/01/1984 text:"Lisa" barset:break color:portable from:01/01/1984 till:01/01/1985 text:"Lisa 2" barset:break color:portable2 from:01/01/1985 till:05/01/1985 text:"XL" barset:break color:lightline from:05/01/1985 till:09/01/1989 text:"Sun Remarketing continues sales and development. (Remaining Lisas buried in Logan, UT landfill)"
barset:macintosh color:mba2 from:09/01/1979 till:01/01/1984 text:"Macintosh Development" barset:break color:0502 from:01/01/1984 till:09/01/1985 text:"Macintosh" barset:break color:0502 from:09/01/1985 till:04/01/1987 text:"(HFS)" barset:break color:050 from:04/01/1987 till:05/01/1988 text:"Macintosh II" barset:break color:050 from:05/01/1988 till:10/01/1990 text:"(System 6)" barset:break color:0502 from:10/01/1990 till:06/01/1991 text:"LC" barset:break color:0502 from:06/01/1991 till:end text:"(System 7)"
barset:reference color:lightline from:01/01/1978 till:07/01/1978 text:"|TRS/" barset:break color:lightline from:07/01/1978 till:01/01/1979 text:"PET" barset:break color:lightline from:01/01/1979 till:02/01/1981 text:"|Atari 800" barset:break color:lightline from:02/01/1981 till:09/01/1981 text:"|Star" barset:break color:lightline from:09/01/1981 till:01/01/1984 text:"|IBM PC" barset:break color:lightline from:01/01/1984 till:11/01/1985 text:"|HP LaserJet" barset:break color:lightline from:11/01/1985 till:03/01/1987 text:"|(Windows)" barset:break color:lightline from:03/01/1987 till:01/01/1989 text:"|PS/2" barset:break color:lightline from:01/01/1989 till:01/01/1991 text:"|NeXT" barset:break color:lightline from:01/01/1991 till:01/01/1992 text:"|(Linux)" barset:break color:lightline from:01/01/1992 till:01/01/1993 text:"|(Win 3.1)" barset:break color:lightline from:01/01/1993 till:end text:"|(Pentium)"
TextData =
fontsize:S textcolor:red pos:(120,125) text:|Visit to Xerox PARC
TextData =
fontsize:S textcolor:red pos:(190,160) text:|Orig. Lisa ship date
TextData =
fontsize:S textcolor:red pos:(355,125) text:|MacWorks introduced
TextData =
fontsize:S textcolor:red pos:(595,125) text:|MacWorks Plus introduced
TextData =
fontsize:S textcolor:red pos:(740,125) text:|MacWorks Plus II introduced
</timeline>