Jump to content

GEMDOS

From Alfawiki
GEM (Graphics Environment Manager)
Company typeSoftware / Operating environment
IndustryComputer software / Graphical user interface
Founded1985
FounderDigital Research
Defunct1988
FateDiscontinued; source code released under GNU GPL for GEM XM; development ended after Novell acquisition of Digital Research in 1991
Area served
IBM PC compatibles, Atari ST, Amstrad computers, BBC Master with Intel 80186 co-processor
ProductsGEM Desktop (GEM/1, GEM/2, GEM XM, GEM/3), ViewMAX file manager shell
ParentDigital Research

GEM (Graphics Environment Manager) was an operating environment introduced by Digital Research in 1985, now discontinued. It gained recognition primarily as the built-in graphical user interface for the Atari ST lineup, providing a WIMP-style desktop experience. GEM was also accessible on IBM PC compatible machines and came pre-installed on certain Amstrad computers. Furthermore, it operated on the BBC Master when paired with an Intel 80186 co-processor. The platform formed the foundation for commercial MS-DOS software, with Ventura Publisher being a prominent example. Despite attempts to port GEM to other systems lacking GUIs, it failed to achieve widespread adoption. The last commercial release appeared in 1988.

Subsequently, Digital Research created X/GEM tailored for their FlexOS real-time OS, with ongoing adaptations targeting the OS/2 Presentation Manager and the X Window System environments.

GSX

Towards the end of 1984, GEM originated from GSX (Graphics System Extension), a versatile graphics library developed by Digital Research starting around 1982 under Don Heiskell's leadership.[1] Significant contributions were made by Lee Jay Lorenzen, formerly associated with Xerox PARC. GSX implemented the GKS standard and was designed to facilitate Digital Research’s creation of graphics applications—such as charting software—across diverse platforms including CP/M-80, Concurrent CP/M, CP/M-86, and MS-DOS. This approach helped mitigate hardware incompatibilities that challenged software portability.[2]

GSX was composed of two main parts: GDOS (Graphics Device Operating System), which contained routines responsible for executing GKS drawing commands, and GIOS (Graphics Input/Output System), which consisted of device drivers handling hardware interfacing.[3] This architecture paralleled CP/M’s division between the machine-independent BDOS and machine-specific BIOS layers.[2]

Documented 8-bit device drivers

  • DDMODE0 Amstrad CPC mode 0 display
  • DDMODE1 Amstrad CPC mode 1 display
  • DDMODE2 Amstrad CPC mode 2 display
  • DDSCREEN Amstrad PCW screen
  • DDBBC0 BBC Micro mode 0 display
  • DDBBC1 BBC Micro mode 1 display
  • DDGDC, DDNCRDMV NEC μPD7220 graphics chip
  • DDVRET VT100 terminal plus Retro-Graphics GEN.II (4027/4010)
  • DDTS803 TeleVideo terminal screen
  • DDHP26XX Hewlett-Packard 2648 and 2627 terminals
  • DDQX10 QX-10 display
  • DDFXLR8 Epson low-resolution, 8-bit printers
  • DDFXHR8 Epson high-resolution, 8-bit printers
  • DDFXLR7 Epson and compatible printing devices
  • DDCITOLR C. Itoh 8510A low-resolution printer
  • DDCITOH C. Itoh 8510A printer
  • DD-DMP1 Amstrad DMP1 printer (Seikosha GP500M-2)
  • DDSHINWA Printers utilizing Shinwa Industries mechanisms
  • DDHP7470, DD7470 Hewlett-Packard HP 7470 and compatible pen plotters supporting HP-GL/2
  • DD7220 Hewlett-Packard HP 7220 pen plotter with HP-GL support
  • DDGEN2 Retro-Graphics GEN.II (Ratfor source code provided in Programmer's Guide)
  • DDHI3M, DDHI7M Houston Instrument HiPlot DMP devices
  • DDMX80 Epson MX-80 printer plus Graftrax Plus support
  • DDESP Electric Studio Light Pen for Amstrad PCW
  • DDOKI84 Oki Data Microline printer
  • DDMF GEM metafile format handler
  • DDPS PostScript metafile support

Recognized 16-bit Device Drivers

  • DDLA100, DDLA50 from DEC
  • DDNECAPC for NEC APC
  • NCRPC4 by NCR DecisionMate V
  • IBMBLMP2, IBMBLMP3 supporting IBM CGA monochrome mode
  • IBMBLCP2, IBMBLCP3 for IBM CGA color mode
  • IBMCHMP6, IBMEHFP6, IBMEHMP6, IBMELFP6 for IBM Enhanced Graphics Adapter
  • HERMONP2, IBMHERP3, HERMONP6 compatible with Hercules Graphics Card (720×348)
  • UM85C408AF from UMC VGA
  • DDIDSM for IDS Monochrome
  • DDANADXM supporting Anadex DP-9501 and DP-9001A
  • DDCITOLR by C. Itoh 8510A lo-res
  • DDCNTXM for Centronics 351–353 series
  • DDDS180 by Datasouth
  • DDOKI84 from Oki Data Microline
  • DDPMVP for Printronix MVP
  • DD3EPSNL compatible with IBM/Epson FX-80 low-resolution Printer (see also DDFXLR7 and DDFXLR8)
  • DD3EPSNH supporting IBM/Epson FX-80 high-resolution Printer (see DDFXHR8)
  • DD75XHM1 for Regnecentralen RC759 Piccoline
  • DDGSXM, METAFIL6 by Metafile
  • EPSMONH6
  • IBMHP743 for Hewlett-Packard 7470A/7475A Plotter (refer to DDHP7470 and DD7470)
  • PALETTE driver for Polaroid camera

The DOS edition of GSX is capable of loading drivers in CP/M-86 CMD format, enabling the same driver binaries to function under both CP/M-86 and DOS operating systems.

Intel Editions

The 16-bit iteration GSX 1.3 was developed further into GEM, a comprehensive graphical user interface derived from the earlier GSX foundation. Originally named Crystal as a nod to IBM's Glass, it was subsequently rebranded as GEM.

Within GEM, GSX transformed into GEM VDI (Virtual Device Interface), responsible for fundamental graphics operations and rendering. VDI introduced capabilities such as multiple font support, raster graphics alongside vector-based GKS commands, and multiple viewports—features critical to windowed environments.

A new component called GEM AES (Application Environment Services) was introduced to manage windows and user interface elements; the combination of these libraries formed the GEM Desktop, delivering a complete GUI solution. The entire 8086-based system was demonstrated at COMDEX in November 1984 and officially released as GEM/1 on 28 February 1985.

GEM/1 Versions

GEM Desktop 1.0 debuted on 28 February 1985.[4] Shortly after, on 10 April 1985, GEM Desktop 1.1 was launched, extending support to include CGA and EGA display hardware.[5][6] The F-Series of Apricot Computers received a tailored version supporting resolutions up to 640×200 with eight colors, known as GEM Desktop 1.2.[7]

Digital Research marketed GEM alongside Concurrent DOS 4.1 as a competitor to IBM TopView.[8]

Initially, Digital Research restricted GEM’s operation exclusively to IBM machines, excluding other PC compatible vendors such as Compaq, with the intent of securing licensing revenue from compatible manufacturers. This limitation drew criticism; during a DRI seminar held in February 1985, more than half of the participants regarded this restriction as significant. Consequently, DRI lifted this limitation later that month.[9] Among applications utilizing GEM was Lifetree Software’s GEM Write.[10]

Apple Inc. initiated legal action against DRI[11] over the resemblance of GEM/1’s "look and feel" to the Macintosh interface and features from the earlier Apple Lisa, compelling DRI to modify several key aspects.[12][13][14][15][11] (See also: Apple v. Digital Research.) Apple pursued comparable lawsuits against additional companies, notably in the case involving Microsoft and HP (Apple v. Microsoft/HP).

In addition to standard printer support, GEM incorporated drivers for specialized hardware such as the Polaroid Palette.[16]

GEM/2

In reaction, Digital Research introduced the "litigation-resistant" GEM Desktop 2.0 on 24 March 1986, incorporating VGA compatibility by 1987.[17] This iteration restricted the desktop interface to two fixed windows (with exceptions for applications that could override this), altered the trash can icon, and eliminated animations such as window opening and closing effects. Apart from these changes, it preserved much of the original GEM/1 design, while addressing bugs and applying visual refinements.

By 1988, industry analyst Stewart Alsop II observed that GEM was among the graphical user interfaces that had already been "pushed out" of the marketplace by competitors like Apple, IBM/Microsoft, and others.[18]

GEM XM

GEM XM, featuring "GEM Desktop 3.0," represented an upgraded variant of GEM/2 launched between 1986 and 1987 for DOS platforms (including DOS Plus). It supported multitasking by allowing up to ten GEM and DOS applications to run concurrently through swapping to expanded memory (XM) using EMS or EEMS, or via disk storage (including RAM disks), with additional support for extended memory.[19][20][21][22] Inter-application data exchange was managed through a clipboard featuring filter capabilities, a function later incorporated into TaskMAX within DR DOS 6.0.[20] Digital Research targeted GEM XM primarily at GEM Draw Plus users and original equipment manufacturer partners.[19]

The GEM XM source code has since been released under the terms of the GNU General Public License.

GEM/3

The final commercial release, GEM/3 Desktop, debuted on 3 November 1988,[23] offering improved performance along with a suite of essential bundled applications. Following GEM/3, commercial distribution ceased and its source code was provided to a limited set of DRI clients.

In contrast to GEM/2, which supported both GSX and GEM APIs, GEM/3 discontinued support for GSX.[3]

GEM/4 for CCP Artline

Introduced circa 1990, GEM/4 added functionality for handling Bézier curves—an advanced feature uncommon outside the PostScript environment—specifically designed for the German software company CCP Development GmbH’s Artline 2 drawing application.[24][25][26][27][28][29][30]

This edition also introduced changes to font handling that resulted in incompatibility with programs such as Timeworks Publisher, while Artline 1 maintained compatibility with GEM 3.1.[27]

GEM/5 for GST Timeworks Publisher

Created by GST Software Products for the Timeworks Publisher 2.1 release,[31] GEM/5 presented an updated user interface featuring three-dimensional buttons and scalable fonts, yet it preserved the standard tools from GEM 3.1. It built upon GEM version 3.13 and integrated Bézier curve support inherited from GEM/4.

ViewMAX for DR DOS

In 1990, the GEM Desktop was rebranded as ViewMAX, serving as a file management shell tailored for DR DOS. In this iteration, it lacked the capability to execute other GEM applications directly, resulting in various programs embedding their own static copies of the GEM system—although native GEM applications were relatively scarce. The follow-up version, ViewMAX 2, was released in 1991. Development of GEM concluded after Digital Research was acquired by Novell in June 1991.

X/GEM

Digital Research Inc. created X/GEM to support multitasking capabilities with GEM/1, initially requiring multitasking operating systems based on CP/M. They later adapted X/GEM for their real-time OS, FlexOS, incorporating support for OS/2 Presentation Manager and the then-developing X Window System.

Ventura Publisher

Following the launch of GEM/1, Lee Lorenzen departed from DRI due to its narrow application scope and co-founded Ventura Software alongside former associates Don Heiskell and John Meyer. Their team developed Ventura Publisher, a prominent desktop publishing program that was subsequently distributed by Xerox and Corel.

Atari versions

Starting in 1984, Atari collaborated with DRI to develop a 68000-based version of GEM. Initially intending to operate GEM on CP/M-68K—which proved impractical—Atari pivoted in 1985 to porting DRI’s DOS-like GEMDOS system onto the Atari ST platform, branding it as TOS. As the primary developer, Atari retained exclusive rights to all future iterations without reverse licensing arrangements with DRI. This ownership structure exempted Atari’s GEM from the Apple-DRI litigation and allowed for a user interface more closely resembling that of the Macintosh.

Between 1985 and 1992, Atari rolled out multiple TOS updates aligned with new ST hardware releases, enhancing support for color depth and screen resolutions while preserving compatibility with GKS graphics standards. In 1992, the company introduced TOS 4 (MultiTOS) bundled with the Falcon030 system, enabling full multitasking within GEM when combined with the MiNT extension.

Continued development

After acquiring Digital Research’s remaining assets from Novell on 23 July 1996, Caldera initially planned to revive GEM and ViewMAX technologies as lightweight user interfaces for OpenDOS, targeting mobile devices under the Caldera View brand. These initiatives were ultimately discontinued by Caldera UK, which instead focused on DR-WebSpyder and GROW. In April 1999, Caldera Thin Clients (later known as Lineo) released GEM and GEM XM source code under the GNU GPL-2.0-only. Development of GEM continues through open source projects such as FreeGEM and OpenGEM.

On the Atari ST platform, original DRI source code was adapted for the open-source TOS clone called EmuTOS. Modern AES implementations like XaAES and MyAES are fully re-entrant and provide multitasking support via the FreeMiNT extensions.

Description

The comprehensive GEM environment consisted of three primary modules:

  1. GEM VDI (Virtual Device Interface)
  2. GEM AES (Application Environment Services)
  3. GEM Desktop (file management system with drag-and-drop functionality)

The VDI formed the core graphics subsystem responsible for executing low-level vector drawing commands. It delivered resolution-independent and coordinate-independent instructions accessible through a straightforward API. GDOS then directed these commands to suitable device drivers for rendering output on displays or printers, allowing effortless switching between output devices. This level of abstraction significantly reduced developer effort compared to implementing printing manually.

VDI’s architecture efficiently managed multiple devices and contexts by maintaining state information within each device rather than relying on memory-based methods as seen in Macintosh systems. This design enabled multitasking support without sacrificing control over resource access.

AES oversaw window management, user interface components, and overall graphical style. To optimize performance, many interface elements utilized character graphics, resulting in a more functional appearance compared to Macintosh’s refined visual design. While AES operations depended on VDI calls, applications typically treated them as distinct layers—AES controlled window behavior whereas VDI managed rendering inside those windows.

The Desktop functioned as a file manager and application launcher operating atop DOS variants (MS-DOS, DOS Plus, DR DOS) or GEMDOS/TOS. Unlike Macintosh’s interface, it displayed path names and supported wildcards, reflecting its DOS heritage and appealing primarily to technically inclined users. Although less polished visually, GEM offered features such as proportional sliders that enhanced usability.

Native GEM applications on PCs use the .APP file extension for executable programs; desktop accessories carry the .ACC extension. Numerous accessories and simple applications run unchanged under ViewMAX.

See also

References

{{Reflist|refs= [11] [32] [33] [34] [35] [36] [37] [38] [39] [40] <ref name="MyAES"> Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).

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

  1. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named DRI_1984_DD
  2. ↑ 2.0 2.1 Cite error: Invalid <ref> tag; no text was provided for refs named Wong_1984_GSX
  3. ↑ 3.0 3.1 Cite error: Invalid <ref> tag; no text was provided for refs named Elliott_GSX
  4. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named ANALOG_TCS_1
  5. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Lineback_GEM11
  6. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Seasip_GEM11
  7. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Seasip_Apricot
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CW_1985_CDOS
  9. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Markoff_1985
  10. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kisor_1985
  11. ↑ 11.0 11.1 11.2 Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  12. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named NYT_1985_GEM
  13. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Watt_1985_Apple
  14. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Watt_1986_Reorg
  15. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named GUI_History
  16. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named DRI_1984_MicroNotes2
  17. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Lineback_GEM20
  18. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Alsop_1988
  19. ↑ 19.0 19.1 Cite error: Invalid <ref> tag; no text was provided for refs named Schemenaur_1986
  20. ↑ 20.0 20.1 Cite error: Invalid <ref> tag; no text was provided for refs named Elliott_2013_GEMXM
  21. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named DR_1987_GEMXM
  22. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Harris_2001
  23. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Lineback_GEM311
  24. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named DR_1990_Artline_URG
  25. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CW_1990_Artline
  26. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Seasip_GEM4
  27. ↑ 27.0 27.1 Cite error: Invalid <ref> tag; no text was provided for refs named Krautter_1999
  28. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named DR_1990_Artline_IST
  29. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named DR_1990_Artline_GUG
  30. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named DR_1991_Artline_RN
  31. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Seasip_GEM5
  32. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  33. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  34. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  35. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  36. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  37. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  38. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  39. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  40. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).