GEM (Graphical Environment Manager) was a windowing system
created by
Digital Research, Inc. (DRI) for use
with the CP/M operating system on the Intel 8088 and Motorola 68000
microprocessors. Later versions ran over DOS as well. It was a low-cost
alternative to Microsoft Windows that was generally much more functional until
Windows 3.0 was released, at which point GEM essentially disappeared.
GEM is known primarily as the graphical user interface (GUI)
for the Atari ST series of computers, and somewhat less well known as the
operating system for a series of PC-like computers from Amstrad. It was also the
core for a small number of DOS programs, the most notable being Ventura
Publisher.
DRI also produced FlexGem for their
FlexOS realtime operating system.
History
GEM started life at DRI as a more general purpose graphics library known as
GSX (Graphics System eXtension), written by a
team led by Lee Lorenzen who had recently left Xerox PARC (birthplace of the
GUI).
GSX consisted of two parts: a selection of routines for
common drawing operations, and the device drivers that are responsible for
handling the actual output (the former was known as GDOS and the latter as GIOS,
a play on the division of CP/M into machine-independent BDOS and
machine-specific BIOS). GSX was intended to allow DRI to write graphics programs
(charting, etc.) for any of the platforms CP/M would run on, a task that would
otherwise require considerable effort to port due to the large differences in
graphics hardware (and concepts) between the various systems of that era.
GSX evolved into one part of what would later be known as
GEM. Originally to be known as Crystal as a play on an IBM project called
Glass, the name was changed to Gem. The use of the acronym evolved
later (see backronym).
GSX became the GEM VDI, responsible for basic graphics and
drawing. VDI also added the ability to work with multiple fonts and added a
selection of raster drawing commands to the formerly vector-only drawing set.
VDI also added multiple viewports, a key addition for use with windows. A new
module, GEM AES (Application Environment Services), provided the window
management and UI elements, and GEM Desktop ran on both to provide a Mac-like
GUI. The 8086 version of the entire system was first demoed at the November 1983
COMDEX, and shipped in the spring of 1984, now known as GEM/1.
At this point Apple Computer sued DRI in what would turn into
a long dispute over the "look and feel" of the GEM/1 system, which was in fact
an almost direct copy of the Macintosh. This eventually led to DRI being forced
to change several basic features of the system. While Apple would later go on to
sue other companies for similar issues, they lost all such cases in the future.
The resulting "lawsuit friendly" GEM/2 allowed the display of
only two fixed windows on the "desktop" (other programs could do what they
wished however), changed the trash can icon, and removed the animations for
things like opening and closing windows. It was otherwise similar to GEM/1, but
also included a number of bug fixes and cosmetic improvements.
The
last commercial release was GEM/3 which had speed improvements and shipped with
a number of basic applications. Commercial sales of GEM ended with GEM/3, the
source code was subsequently made available to a number of DRI leading
customers.
GEM/4 included the ability to work with Bezier curves, a
feature still not common outside the PostScript world. The version was produced
specifically for Artline a drawing program from CCP. The system also included
changes to the font management system, which made it incompatible with the likes
of Timeworks Publisher.
Another version of GEM called GEM/5 was produced by GST for
Timeworks Publisher 2.1. It contained an updated look with 3D buttons, font
scaling on the fly was included. It came complete with all the standard 3.1
tools. This version was produced from GEM 3.13 with only the Bezier handling
moved taken from GEM 4.
At the same time the GEM Desktop itself was spun off as a product known as
ViewMAX, which was used solely as a file management shell under DR-DOS. In this
form the system could not run other GEM programs. This led to the odd situation
where you could have a number of applications (including ViewMAX) all with their
own copy of the GEM system inside of them, all taking up memory. Of course this
was rare, as there were not that many GEM programs. In these forms GEM survived
until DRI was purchased by Novell and all GEM development was cancelled.
Throughout this time DRI had also been working on making the
GEM system capable of multitasking. This started with X/GEM based on GEM/1, but
this required use of one of the multitasking CP/M based operating systems.
GEM/XM was an updated version of GEM/2 which allowed multitasking and the
ability to run DOS programs in shell windows (as Windows does today). None of
these saw the light of day, but the GEM/XM code is now available in the public
domain.
Lee Lorenzen had left soon after the release of GEM/1, when
it became clear that DRI had no strong interest in applications development. He
then formed his own company with another of the GEM developers, Dan Meyer, and
started Ventura Software. They developed Ventura Publisher, which was later
marketed by Xerox (and eventually to Corel), which would go on to be a very
popular desktop publishing program for some time.
Atari licensed GEM/1 and CP/M 68k under terms that allowed it
to continue development on their own (it appears DRI had no interest there). The
resulting OS was called TOS by Atari, and was the operating system for the Atari
ST.
SinceTOS
was based on GEM/1 and Atari was never sued directly they did not have to
cripple the interface as DRI did. Development of GEM at Atari took it along
other paths than the PC versions. By the 1990s GEM included 24-bit color
support, configurable window elements, scalable fonts, preemptive multitasking
via a kernel based on UNIX, called MiNT (MiNT is Not TOS), and a host of other
features.
SCO Group have released the source to GEM under the GNU
licence and the development of GEM for PC is continued as OpenGEM and FreeGEM.
It also has been ported to the Atari ST again to be used in the free TOS clone
"EmuTOS".
Description
The "full" GEM system consisted of three main parts:
GEM AES (Application Environment Services)
GEM Desktop (an application providing drag-and-drop based file
management)
The GEM VDI was the core graphics system of the
overall GEM engine. It was responsible for "low level" drawing in the form of
"draw line from here to here". VDI included a resolution and coordinate
independent set of vector drawing instructions which were called from
applications through a fairly simple interface. TVDI also included environment
information (state, or context), current color, line thickness, output device,
etc.
These commands were then examined by GDOS, whose task it was
to send the commands to the proper driver for actual rendering. For instance, if
a particular GEM VDI environment was connected to the screen, the VDI
instructions were then routed to the screen driver for drawing. Simply changing
the environment to point to the printer was all that was needed (in theory) to
print, dramatically reducing the developer workload (they formerly had to do
printing "by hand" in all applications). GDOS was also responsible for loading
up the drivers and any requested fonts when GEM was first loaded.
One major advantage the VDI provided over the Macintosh was
the way multiple devices and contexts were handled. In the Mac such information
was stored in memory inside the application. This resulted in serious problems
when attempting to make the Mac handle pre-emptive multitasking, as the drawing
layer (QuickDraw) needed to have direct memory access into all programs. In GEM
VDI however, such information was stored in the device itself, with GDOS
creating "virtual devices" for every context – each window for instance. This
advantage remained largely theoretical however, as the multitasking versions of
GEM were never officially released.
The GEM AES provided the window system, window
manager, UI style and other GUI elements (widgets). Compared to the Macintosh,
AES provided a rather Spartan look and the system shipped with a single
monospaced font.
The AES performs its operations by calling the VDI, but in a
more general sense the two parts of GEM were often completely separated in
applications. Applications typically called AES commands to set up a new window,
with the rest of the application using VDI calls to actually draw into that
window.
The GEM Desktop was an application program that used AES to
provide a file manager and launcher, the traditional "desktop" environment that
users had come to expect from the Macintosh. Unlike the Macintosh, the GEM
Desktop was based on top of DOS (MS-DOS or DR DOS+ on the PC, TOS on the Atari),
and as a result the actual display was cluttered with computer-like items
including path names and wildcards. In general GEM was much more "geeky" than
the Mac, but simply running a usable shell on DOS was a huge achievement on its
own.