Graphics System Extension
| Industry | Software development |
|---|---|
| Founded | 1976 |
| Founder | Gary Kildall |
| Defunct | 1991 |
| Fate | Acquired by Novell |
| Products | GEM (Graphics Environment Manager), Concurrent DOS, FlexOS, ViewMAX |
GEM (Graphics Environment Manager) was an operating environment introduced by Digital Research in 1985, which has since been discontinued. It gained prominence as the default graphical user interface for the Atari ST series, providing a WIMP-style desktop experience. Besides its association with Atari ST, GEM was also offered for IBM PC compatible systems and came pre-installed on certain Amstrad computers. Furthermore, it operated on the BBC Master when paired with an Intel 80186 co-processor. GEM formed the foundation for several commercial applications running under MS-DOS, most notably Ventura Publisher. Although versions were adapted for other platforms without graphical interfaces, GEM did not achieve broad market penetration. The last commercial release appeared in 1988.
Subsequently, Digital Research developed X/GEM tailored for their FlexOS real-time operating system, with versions modified for the OS/2 Presentation Manager and plans for an iteration compatible with the X Window System.
GSX
Towards the end of 1984, GEM originated from GSX (Graphics System Extension), a versatile graphics library Digital Research had been developing since approximately 1982 under the guidance of Don Heiskell. Significant contributions to its codebase came from Lee Jay Lorenzen, who had previously worked at Xerox PARC. GSX implemented the late-1970s graphics standard known as the GKS, enabling Digital Research to create graphical applications—such as charting tools—that could operate across various 8-bit and 16-bit platforms including CP/M-80, Concurrent CP/M, CP/M-86, and MS-DOS. This strategy facilitated easier software porting despite hardware differences.
The GSX architecture was divided into two parts: GDOS (Graphics Device Operating System), responsible for handling standardized drawing operations based on GKS principles, and GIOS (Graphics Input/Output System), which managed output tailored to specific devices. This structure resembled CP/M’s division between the machine-independent BDOS and the hardware-specific BIOS.
Recognized 8-bit device drivers
- DDMODE0: Screen mode 0 on Amstrad CPC
- DDMODE1: Screen mode 1 on Amstrad CPC
- DDMODE2: Screen mode 2 on Amstrad CPC
- DDSCREEN: Display for Amstrad PCW
- DDBBC0: Screen mode 0 on BBC Micro
- DDBBC1: Screen mode 1 on BBC Micro
- DDGDC, DDNCRDMV: Support for NEC μPD7220
- DDVRET: VT100 terminal and Retro-Graphics GEN.II (4027/4010)
- DDTS803: Display driver for TeleVideo
- DDHP26XX: Terminals HP 2648 and 2627
- DDQX10: Screen driver for QX-10
- DDFXLR8: Epson low-resolution, 8-bit printers
- DDFXHR8: Epson high-resolution, 8-bit printers
- DDFXLR7: Epson and compatible printing devices
- DDCITOLR: Low-resolution support for C. Itoh 8510A
- DDCITOH: Driver for C. Itoh 8510A printers
- DD-DMP1: Printer driver for Amstrad DMP1 (Seikosha GP500M-2)
- DDSHINWA: Printers utilizing Shinwa Industries mechanisms
- DDHP7470, DD7470: Hewlett-Packard HP 7470 and compatible pen plotters using HP-GL/2
- DD7220: Hewlett-Packard HP 7220 with HP-GL support
- DDGEN2: Retro-Graphics GEN.II (Ratfor source code included in Programmer's Guide)
- DDHI3M, DDHI7M: Drivers for Houston Instrument HiPlot DMP devices
- DDMX80: Support for Epson MX-80 plus Graftrax Plus
- DDESP: Electric Studio Light Pen driver (Amstrad PCW)
- DDOKI84: Driver for Oki Data Microline printers
- DDMF: GEM metafile handler
- DDPS: PostScript metafile support
Recognized 16-bit Device Drivers
- DDLA100, DDLA50 by DEC
- DDNECAPC for NEC APC
- NCRPC4 from NCR DecisionMate V
- IBMBLMP2, IBMBLMP3 supporting IBM CGA monochrome mode
- IBMBLCP2, IBMBLCP3 for IBM CGA color mode
- IBMCHMP6, IBMEHFP6, IBMEHMP6, IBMELFP6 compatible with IBM Enhanced Graphics Adapter
- HERMONP2, IBMHERP3, HERMONP6 designed for Hercules Graphics Card (720×348)
- UM85C408AF by UMC for VGA
- DDIDSM for IDS Monochrome
- DDANADXM supporting Anadex DP-9501 and DP-9001A
- DDCITOLR by C. Itoh 8510A in low-resolution mode
- DDCNTXM compatible with Centronics 351, 352, and 353
- DDDS180 by Datasouth
- DDOKI84 for Oki Data Microline
- DDPMVP supporting Printronix MVP
- DD3EPSNL for IBM/Epson FX-80 low-resolution Printer (refer to DDFXLR7 and DDFXLR8)
- DD3EPSNH for IBM/Epson FX-80 high-resolution Printer (see DDFXHR8)
- DD75XHM1 by Regnecentralen RC759 Piccoline
- DDGSXM, METAFIL6 for Metafile
- EPSMONH6
- IBMHP743 compatible with Hewlett-Packard 7470A/7475A Plotter (see also DDHP7470 and DD7470)
- PALETTE driver for Polaroid camera
The DOS iteration of GSX supports drivers in CP/M-86 CMD format, enabling a single driver executable to function across both CP/M-86 and DOS platforms.
Intel Platform Versions
The 16-bit GSX version 1.3 was developed further into GEM, a comprehensive graphical user interface system built upon GSX technology. Initially named Crystal as a nod to IBM's Glass, the product was later rebranded as GEM.
Within this environment, GSX transformed into GEM VDI (Virtual Device Interface), responsible for graphics rendering and drawing operations. VDI enhanced functionality by incorporating support for various fonts and raster graphics commands alongside vector-oriented GKS instructions. It also introduced multiple viewports critical to enabling windowed user interfaces.
A companion component named GEM AES (Application Environment Services) handled window management and user interface controls. Together with the GEM Desktop, these modules formed a fully integrated GUI platform. The complete 8086-based system was showcased at COMDEX in November 1984 following an earlier demonstration on the 80286-powered Acorn Business Computer in September 1984. GEM/1 was officially launched on 28 February 1985.
GEM/1 Versions
GEM Desktop 1.0 debuted on 28 February 1985.[1] On 10 April 1985, GEM Desktop 1.1 was released, introducing compatibility with CGA and EGA display standards.[2][3] For Apricot Computers F-Series machines, a version supporting 640×200 resolution with up to eight colors was issued as GEM Desktop 1.2.[4]
Digital Research marketed GEM alongside Concurrent DOS 4.1 as a competitor to IBM TopView.[5]
At first, GEM was restricted to run exclusively on IBM hardware, excluding other PC compatibles, such as those manufactured by Compaq, aiming to enforce licensing fees from clone producers. This limitation generated significant developer opposition—characterized by BYTE as "a small explosion"—prompting Digital Research to lift the restriction soon after.[6] Among notable software supporting GEM was Lifetree Software’s GEM Write.[7]
Apple Inc. initiated legal action against Digital Research over GEM/1’s resemblance in "look and feel" to the Macintosh interface and aspects of the earlier Apple Lisa. This lawsuit compelled Digital Research to modify key system components.[8][9][10][11][12] (See also: Apple v. Digital Research.) Apple subsequently pursued similar litigation against other firms including Microsoft and HP.
In addition to standard printer drivers, GEM incorporated support for distinctive devices such as the Polaroid Palette.[13]
GEM/2
On 24 March 1986, DRI introduced the "lawsuit-friendly" GEM Desktop 2.0, which by 1987 had incorporated support for VGA. This version restricted the desktop environment to two fixed windows, altered the trash can icon design, and eliminated window animations, while preserving essential functions and implementing various bug fixes alongside visual refinements.
By 1988, industry analyst Stewart Alsop II observed that GEM had largely been overtaken by competitors such as Apple and the IBM/Microsoft alliance.
GEM XM
The enhanced iteration named GEM XM, featuring "GEM Desktop 3.0," was released between 1986 and 1987 for DOS platforms, including DOS Plus. It introduced task-switching abilities and permitted up to ten GEM and DOS applications to run concurrently by utilizing expanded memory through EMS/EEMS or disk-based storage like RAM disks, with additional support for extended memory. Users could transfer data between programs using a clipboard equipped with filtering options—a functionality later incorporated into TaskMAX on DR DOS 6.0. Digital Research intended to market GEM XM both as an add-on for GEM Draw Plus users and through OEM partnerships.
The source code for GEM XM has since been made available under the GNU General Public License.
GEM/3
The last commercial release, GEM/3 Desktop, debuted on 3 November 1988, offering enhanced performance and bundling several fundamental applications. After this release, GEM was no longer sold commercially; however, its source code was distributed to selected DRI clients.
Distinct from GEM/2—which supported both GSX and GEM APIs—GEM/3 discontinued support for the GSX API.
GEM/4 for CCP Artline
Around 1990, GEM/4 was introduced with added support for Bézier curves, a feature rarely found outside the PostScript environment. This update was specifically designed for CCP Development GmbH’s drawing software, Artline 2. The font management system underwent changes in this version that led to incompatibility with applications such as Timeworks Publisher. Meanwhile, Artline 1 continued operating on GEM 3.1.
GEM/5 for GST Timeworks Publisher
Developed by GST Software Products for Timeworks' Publisher 2.1, GEM/5 presented a refreshed interface incorporating three-dimensional buttons and dynamic font scaling while maintaining the core tools from GEM 3.1. This version was based on GEM 3.13 but integrated the Bézier curve capabilities introduced in GEM/4.
ViewMAX for DR DOS
In 1990, GEM Desktop evolved into ViewMAX, a file management shell tailored for DR DOS. Unlike traditional GEM environments, ViewMAX did not support running other GEM applications directly. Consequently, many programs included their own statically linked versions of the GEM system—a situation uncommon due to the scarcity of native GEM software. The follow-up version, ViewMAX 2, was released in 1991. Development of GEM ceased following Digital Research’s acquisition by Novell in June of that year.
X/GEM
To introduce multitasking features into GEM, DRI created X/GEM, initially built upon GEM/1 and designed to operate on multitasking CP/M-based operating systems. They also adapted X/GEM for their real-time OS, FlexOS, extending its capabilities further with support for OS/2 Presentation Manager and the emerging X Window System.
Ventura Publisher
Following the launch of GEM/1, Lee Lorenzen departed from DRI due to its narrow concentration on application development. Together with former associates Don Heiskell and John Meyer, he established Ventura Software and developed Ventura Publisher. This desktop publishing program achieved notable commercial success and was subsequently distributed by Xerox and Corel.
Atari adaptations
In September 1984, Atari's "Monterey Group" initiated the porting of GEM to the Motorola 68000 CPU, originally targeting operation on CP/M-68K. After CP/M-68K proved impractical, Atari adopted DRI’s DOS-like operating system, GEMDOS (also known as "Project Jason"), which was designed to support various hardware platforms including Intel 8086 and Motorola 68000 processors. By January 1985, Atari decided to directly port GEMDOS to their Atari ST system, branding it as TOS.
Atari’s extensive involvement in creating the 68000-based GEM version granted them full development rights without needing to license back to DRI. As a result, Atari’s GEM iterations were unaffected by the Apple-DRI legal dispute, enabling a user interface that resembled the Macintosh more closely.
Between 1985 and 1992, Atari issued multiple TOS updates alongside new ST hardware models, improving color capabilities and screen resolutions while preserving fundamental GKS functionality. In 1992, Atari introduced TOS 4 (MultiTOS) alongside the Falcon030 computer. When combined with MiNT, TOS 4 provided genuine multitasking within the GEM environment.
Ongoing evolution
After Caldera acquired Digital Research’s remaining assets from Novell on 23 July 1996, initial intentions focused on revitalizing GEM and ViewMAX technologies as lightweight graphical interfaces for OpenDOS in mobile devices under the Caldera View label. However, Caldera UK redirected efforts toward projects like DR-WebSpyder and GROW. Subsequently, Caldera Thin Clients, later renamed Lineo, released the source code for GEM and GEM XM under the GNU GPL-2.0-only license in April 1999. Development of GEM continues on PC platforms through initiatives such as FreeGEM and OpenGEM.
On the Atari ST platform, original Digital Research source code was adapted for the open-source TOS replacement EmuTOS. Modern AES implementations including XaAES and MyAES deliver fully reentrant, multitasking-capable graphical environments running atop the FreeMiNT extensions to Atari TOS.
Description
The complete GEM architecture consisted of three principal components:
- GEM VDI (Virtual Device Interface)
- GEM AES (Application Environment Services)
- GEM Desktop (a file manager and launcher application)
The GEM VDI functioned as the primary graphics engine, processing low-level vector drawing commands through resolution- and coordinate-independent instructions accessible via a straightforward API. GDOS directed these instructions to suitable device drivers for output on displays or printers, simplifying software development by enabling device-independent rendering. Unlike Macintosh's QuickDraw, GEM VDI maintained device contexts within drivers themselves, supporting multitasking by isolating drawing states per window or output device.
GEM AES was responsible for managing windows, user interface styles, and GUI controls—often rendered using character graphics to optimize performance. AES offered a streamlined interface featuring a single monospaced font. Applications typically utilized AES for window management while employing VDI to render content inside those windows.
The GEM Desktop served as a graphical shell running atop DOS variants (MS-DOS, DOS Plus, DR DOS) or Atari's GEMDOS/TOS, providing file management and program launching capabilities. Compared to Macintosh's polished interface, GEM exposed more technical elements such as pathnames and wildcard characters, catering to advanced users. Notably, GEM incorporated features like proportional sliders that were not yet available in Mac OS at that time.
Native PC applications built for GEM bear the .APP extension for executables, while desktop accessories use .ACC. Numerous accessories and lightweight applications operate seamlessly under ViewMAX without modification.
See also
- Atari TOS
- EmuTOS
- FreeGEM
- OpenGEM
- GEM character set
- Atari ST character set
- Resource construction set (RCS)
- Pantone Color Computer Graphics
Further reading
- Apricot Portable - Technical Reference Manual, Section 3: Software, ACT (International) Limited, 1984 (228 pages) [1]
- GSX Graphics Extension - Programmer's Guide, 2nd edition, Digital Research Inc., September 1983 [2]
External links
- GEM – comprehensive history, documentation, and resources related to open-source GEM initiatives
- Afros – a distribution featuring Atari OS components such as EmuTOS, designed for ARAnyM
- Aranym – an open-source emulator and virtual machine supporting Atari GEM applications
- GEM : THE PROJECT
- Creating of TOS (part 1) – firsthand insights from Landon Dyer, an original member of "The Monterey Group"
- Creating of TOS (part 2) – continuation of Landon Dyer’s detailed narrative
- GEM demo 1985 – a demonstration centered on the MAC environment
- Intel GEM main page by John C. Elliott
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedANALOG_TCS_1 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedLineback_GEM11 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedSeasip_GEM11 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedSeasip_Apricot - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCW_1985_CDOS - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedMarkoff_1985 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKisor_1985 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedNYT_1985_GEM - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedWatt_1985_Apple - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedWatt_1986_Reorg - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedGUI_History - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedDilger_2007 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedDRI_1984_MicroNotes2