Graphical Environment Manager
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.
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. It was ported to a number of other computers that previously lacked graphical interfaces, but never gained popularity on those platforms. DRI also produced FlexGem for their
FlexOS realtime operating system.
GSX
GEM started life at DRI as a more general purpose graphics library known as
GSX (
Graphics
System e
Xtension), written by a team led by Lee Lorenzen who had recently left
Xerox PARC (birthplace of the GUI). GSX was essentially a DRI-specific implementation of the
GKS graphics standard proposed in the late 1970s. 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 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. GDOS was a selection of routines that handled the GKS drawing, while GIOS actually used the underlying hardware to produce the output.
GEM
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 GKS-based drawing commands. 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 used both to provide a Mac-like GUI. The 8086 version of the entire system was first demoed at the November 1983 COMDEX, and shipped as GEM/1 on 28 February 1985 [
1].
Later versions
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.
One-off versions
GEM/4 included the ability to work with
Bézier 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.
ViewMax
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 actually 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 versions
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 on the 68k). The resulting OS was called
TOS by Atari, and was the operating system for the
Atari ST.
Since TOS 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.
Continued development
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.
The "full" GEM system consisted of three main parts:
#GEM VDI (Virtual Device Interface)#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). For performance reasons, many of the GUI widgets were actually drawn using character graphics. 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.
*
GEOS*
Windows 1.0*
Visi On*
Software Carousel*
TopView*
DESQview*
GEM- an excellent page with history, documentation, and links to various open-source GEM projects
*
Digital Research's GEM (Intel 8086 version!)- includes downloadable copies of the latest GEM/3 release and developer system
*http://dmoz.org/Computers/Software/Operating_Systems/GEM/
*
Afros - a complete free Atari OS, using
EmuTOS and other components.
*
Aranym Atari Running on ANY Machine: a complete open-source environment for running ST GEM applications
*
Screen shots