Recent from talks
Contribute something
Nothing was collected or created yet.
GEM (desktop environment)
View on Wikipedia
| GEM | |
|---|---|
IBM PC displaying GEM desktop in EGA on a monochrome monitor | |
| Developers | Digital Research Lee Jay Lorenzen |
| Initial release | 28 February 1985[1] |
| Stable release | GEM/3 3.11
/ 3 November 1988 |
| Operating system | MS-DOS, Concurrent DOS, FlexOS, CP/M-68K, GEMDOS, TOS |
| Platform | Intel 8088, Motorola 68000 |
| Type | Windowing system |
| License | GPL-2.0-only |
| Website | www |
GEM (for Graphics Environment Manager[2]) is a discontinued operating environment released by Digital Research in 1985. GEM is known primarily as the native graphical user interface of the Atari ST series of computers, providing a WIMP desktop. It was also available for IBM PC compatibles[3][4] and shipped with some models from Amstrad. It was available on the BBC Master computer with an Intel 80186 co-processor. GEM is used as the core for some commercial MS-DOS programs, the most notable being Ventura Publisher. It was ported to other computers that previously lacked graphical interfaces, but never gained traction. The final retail version of GEM was released in 1988.
Digital Research later[when?] produced X/GEM for their FlexOS[3][5] real-time operating system with adaptations for OS/2 Presentation Manager[6][3] and the X Window System under preparation as well.[3]
History
[edit]GSX
[edit]

In late 1984, GEM started life at DRI as an outgrowth of a more general-purpose graphics library known as GSX (Graphics System Extension),[7] written by a team led by Don Heiskell since about 1982.[8] Lee Jay Lorenzen (at Graphic Software Systems) who had recently left Xerox (the birthplace of the modern GUI) wrote much of the code. 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 8-bit and 16-bit platforms CP/M-80, Concurrent CP/M, CP/M-86 and MS-DOS (NEC APC-III) would run on,[9] a task that otherwise would have required considerable effort to port due to the large differences in graphics hardware (and concepts) between the various systems of that era.[7]
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 (Graphics Device Operating System) and the latter as GIOS (Graphics Input/Output System),[10] a play on the division of CP/M into the machine-independent BDOS (Basic Disk Operating System) and the machine-specific BIOS (Basic Input/Output System).[7] GDOS was a selection of routines that handled the GKS drawing, while GIOS actually used the underlying hardware to produce the output.[7]
Known 8-bit device drivers
[edit]- DDMODE0 Amstrad CPC screen in mode 0
- DDMODE1 Amstrad CPC screen in mode 1
- DDMODE2 Amstrad CPC screen in mode 2
- DDSCREEN Amstrad PCW screen
- DDBBC0 BBC Micro screen in mode 0
- DDBBC1 BBC Micro screen in mode 1
- DDGDC, DDNCRDMV NEC μPD7220
- DDVRET VT100 + Retro-Graphics GEN.II (aka 4027/4010)
- DDTS803 TeleVideo screen
- DDHP26XX HP 2648 and 2627 terminals[11]
- DDQX10 QX-10 screen
- DDFXLR8 Epson lo-res, 8-bit
- DDFXHR8 Epson hi-res, 8-bit
- DDFXLR7 Epson and Epson-compatible printers
- DDCITOLR C. Itoh 8510A lo-res
- DDCITOH C. Itoh 8510A
- DD-DMP1 Amstrad DMP1 printer (aka Seikosha GP500M-2)
- DDSHINWA Printers using Shinwa Industries mechanism
- DDHP7470, DD7470 Hewlett-Packard HP 7470 and compatible pen plotters, HP-GL/2
- DD7220 Hewlett-Packard HP 7220, HP-GL
- DDGEN2 Retro-Graphics GEN.II (Ratfor source code in Programmer's Guide)
- DDHI3M Houston Instrument HiPlot DMP
- DDHI7M Houston Instrument HiPlot DMP
- DDMX80 Epson MX-80 + Graftrax Plus
- DDESP Electric Studio Light Pen (Amstrad PCW)
- DDOKI84 Oki Data Microline
- DDMF GEM metafile
- DDPS PostScript metafile
Known 16-bit device drivers
[edit]- DDLA100 DEC
- DDLA50 DEC
- DDNECAPC NEC APC
- NCRPC4 NCR DecisionMate V
- IBMBLMP2, IBMBLMP3 IBM CGA monochrome mode
- IBMBLCP2, IBMBLCP3 IBM CGA color mode
- IBMCHMP6
- IBMEHFP6, IBMEHMP6, IBMELFP6 IBM Enhanced Graphics Adapter
- HERMONP2, IBMHERP3, HERMONP6, Hercules Graphics Card (720×348)
- UM85C408AF UMC VGA Graphics[12]
- DDIDSM IDS Monochrome
- DDANADXM Anadex DP-9501 and DP-9001A
- DDCITOLR C. Itoh 8510A lo-res
- DDCNTXM Centronics 351, 352 and 353
- DDDS180 Datasouth
- DDOKI84 Oki Data Microline
- DDPMVP Printronix MVP
- DD3EPSNL IBM/Epson FX-80 lo-res Printer (see DDFXLR7 and DDFXLR8)
- DD3EPSNH IBM/Epson FX-80 hi-res Printer (see DDFXHR8)
- DD75XHM1 Regnecentralen RC759 Piccoline
- DDGSXM Metafile
- EPSMONH6
- IBMHP743 Hewlett-Packard 7470A/7475A Plotter (see DDHP7470 and DD7470)
- METAFIL6 Metafile
- PALETTE Polaroid camera[13]
The DOS version of GSX supports loading drivers in the CP/M-86 CMD format. Consequently, the same driver binary may operate under both CP/M-86 and DOS.[14]
GEM
[edit]Intel versions
[edit]The 16-bit version of GSX 1.3[7][9] evolved into one part of what would later be known as GEM, which was an effort to build a full GUI system using the earlier GSX work as its basis. Originally known as Crystal as a play on an IBM project called Glass, the name was later changed to GEM.
Under GEM, GSX became GEM VDI (Virtual Device Interface), responsible for basic graphics and drawing.[10] 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.[15]
A new module, GEM AES (Application Environment Services), provided the window management and UI elements, and GEM Desktop used both libraries in combination to provide a GUI.[16] The 8086 version of the entire system was first officially demoed at COMDEX in November 1984,[4][3] following a demonstration on the 80286-based Acorn Business Computer in September 1984 where the software had been attributed to Acorn,[17] and the system was shipped as GEM/1 on 28 February 1985.[1]
GEM/1
[edit]
GEM Desktop 1.0 was released on 28 February 1985.[1] GEM Desktop 1.1 was released on 10 April 1985 with support for CGA and EGA displays.[18][19] A version for the Apricot Computers F-Series, supporting 640×200 in up to 8 colors, was also available as GEM Desktop 1.2.[20]
Digital Research also positioned Concurrent DOS 4.1 with GEM as alternative for IBM's TopView.[21]
DRI originally designed GEM for DOS so that it would check for and only run on IBM computers, and not PC compatibles like those from Compaq, as the company hoped to receive license fees from compatible makers. Developers reacted with what BYTE described as "a small explosion"; it reported that at a DRI-hosted seminar in February 1985, more than half of the attendees agreed that GEM's incompatibility with Compaq was a serious limitation. Later that month the company removed the restriction.[22] Applications that supported GEM included Lifetree Software's GEM Write.[23]
At this point, Apple Computer sued DRI[24][unreliable source?] in what would turn into a long dispute over the "look and feel" of the GEM/1 system, which was an almost direct copy of Macintosh (with some elements bearing a closer resemblance to those in the earlier Lisa, available since January 1983). This eventually led to DRI being forced to change several basic features of the system.[25][26][27][28][24] (See also: Apple v. Digital Research.) Apple would later go on to sue other companies for similar issues, including their copyright lawsuit against Microsoft and HP.
In addition to printers the system also contained drivers for some more unusual devices such as the Polaroid Palette.[13]
GEM/2
[edit]
DRI responded with the "lawsuit-friendly" GEM Desktop 2.0, released on 24 March 1986, which eventually added support for VGA, sometime after its release in 1987.[29] It allowed the display of only two fixed windows on the "desktop" (though other programs could do what they wished), 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.
In 1988 Stewart Alsop II said that GEM was among several GUIs that "have already been knocked out" of the market by Apple, IBM/Microsoft, and others.[30]
GEM XM
[edit]GEM XM with "GEM Desktop 3.0" was an updated version of GEM/2 in 1986/1987 for DOS (including DOS Plus) which allowed task-switching and the ability to run up to ten GEM and DOS programs at once, swapping out to expanded memory (XM) through EMS/EEMS or to disk (including RAM disks, thereby also allowing the use of extended memory).[31][32][33][34] Data could be copied and pasted between applications through a clipboard with filter function (a feature later also found in TaskMAX under DR DOS 6.0).[32] Digital Research planned to offer GEM XM as an option to GEM Draw Plus users and through OEM channels.[31]
The GEM XM source code is now freely available under the terms of GNU General Public License.
GEM/3
[edit]
The last retail release was GEM/3 Desktop, released on 3 November 1988,[35] 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's leading customers.
While GEM/2 for the PC still provided a GSX API in addition to the GEM API; GEM/3 no longer did.[10]
GEM/4 for CCP Artline
[edit]GEM/4, released in 1990, included the ability to work with Bézier curves, a feature still not commonly found outside the PostScript world.[citation needed] This version was produced specifically for Artline 2, a drawing program from the German company CCP Development GmbH.[36][37][38][39][40][41][42]
The system also included changes to the font management system, which made it incompatible with the likes of Timeworks Publisher.
Artline 1 still ran on GEM 3.1.[39]
GEM/5 for GST Timeworks Publisher
[edit]Another version of GEM called GEM/5[43] was produced by GST Software Products for Timeworks' Publisher 2.1. It contained an updated look with 3D buttons, along with features such as on-the-fly font scaling. It came complete with all the standard GEM 3.1 tools. This version was produced from GEM 3.13 with only the Bézier handling taken from GEM/4.
ViewMAX for DR DOS
[edit]
GEM Desktop itself was spun off in 1990 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 a situation where a number of applications (including ViewMAX) could exist all with their own statically linked copy of the GEM system. This scenario was actually rare, as few native GEM programs were published. In 1991, ViewMAX 2 was released.
In these forms, GEM survived until DRI was purchased by Novell in June 1991[44][45] and all GEM development was cancelled.
X/GEM
[edit]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.[clarification needed] DRI also produced X/GEM for their FlexOS[3][5] real-time operating system with adaptations for OS/2 Presentation Manager[6][3] and the X Window System under preparation as well.[3]
Ventura Publisher
[edit]Lee Lorenzen left soon after the release of GEM/1, when it became clear that DRI had no strong interest in application development. He then joined with two other former DRI employees, Don Heiskell and John Meyer, to start Ventura Software. They developed Ventura Publisher (which was later marketed by Xerox and eventually by Corel), which would go on to be a very popular desktop publishing program for some time.
Atari versions
[edit]
Development of the production 68000 version of GEM began in September 1984, when Atari sent a team called "The Monterey Group" to Digital Research to begin work on porting GEM. Originally, the plan was to run GEM on top of CP/M-68K, both ostensibly ported to Motorola 68000 by DRI prior to the ST design being created. In fact, these ports were unusable and would require considerable development. Digital Research also offered GEMDOS (originally written as GEM DOS, it was also called "Project Jason"), a DOS-like operating system aimed to port GEM to different hardware platforms. It was available for 8086 and 68000 processors and had been adapted to the Apple Lisa 2/5 and the Motorola VME/10[46] development system.[47] Atari decided in January 1985[48] to give up on the existing CP/M-68K code and instead port DRI GEMDOS to the Atari ST platform, referring to it as TOS.[49]
As Atari had provided most of the development of the 68000 version, they were given full rights to continued developments without needing to reverse-license it back to DRI. As a result, the Apple-DRI lawsuit did not apply to the Atari versions of GEM, and they were allowed to keep a more Mac-like UI.
Over the next seven years, from 1985 to 1992, new versions of TOS were released with each new generation of the ST line. Updates included support for more colors and higher resolutions in the raster-side of the system, but remained generally similar to the original in terms of GKS support. In 1992, Atari released TOS 4, or MultiTOS, along with their final computer system, the Falcon030. In combination with MiNT, TOS 4 allowed full multitasking support in GEM.
Continued development
[edit]
When Caldera bought the remaining Digital Research assets from Novell on 23 July 1996,[50] initial plans were to revive GEM and ViewMAX technologies for a low-footprint user interface for OpenDOS in mobile applications[51][52] as Caldera View, but these plans were abandoned by Caldera UK in favour of DR-WebSpyder and GROW. Caldera Thin Clients (later known as Lineo) released the source to GEM and GEM XM under the terms of GNU GPL-2.0-only in April 1999.[52] The development of GEM for PC continues as FreeGEM and OpenGEM.
On the Atari ST platform, the original DRI sources were ported again to be used in the free and open source TOS clone EmuTOS. New implementations of the AES portions of GEM have been implemented from scratch in the form of XaAES, and MyAES,[53] both of which are fully re-entrant and support multitasking on top of the FreeMiNT multitasking extensions to TOS.
Description
[edit]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 file management)
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. VDI 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 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.
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.
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.
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 ran on top of DOS (MS-DOS, DOS Plus or DR DOS on the PC, GEMDOS/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. Otherwise, GEM has its own advantages over Mac OS such as proportional sliders.
Native PC GEM applications use the file extension .APP for executables, whereas GEM desktop accessories use the file extension .ACC instead.[54][55] All desktop accessories (and also a few simple applications) can be run under ViewMAX without modification.[54][55]
See also
[edit]References
[edit]- ^ a b c Malloy, C. E., ed. (1985-07-02) [1985-03-20]. "DRI Ships GEM". A.N.A.L.O.G. TCS #1. Newsgroup: net.micro.atari. ihlpa.704. Retrieved 2020-01-11.
Digital Research Inc.'s (DRI) new Graphics Environment Manager (GEM) system software was shipped as scheduled to original-equipment manufacturers (OEMs) February 28, the company announced March 11, 1985.
- ^ "Concurrent DOS - Powerful Multiuser Multitasking Operating Systems" (PDF). Digital Research Inc. 1988 [1987]. 1090-1411-002. Archived (PDF) from the original on 2019-11-26. Retrieved 2018-10-16.
- ^ a b c d e f g h Fitler, Bill (March 1989). "Writing portable applications with X/GEM - How does X/GEM compare with other windowing systems?". Dr. Dobb's Journal. Archived from the original on 2014-08-11. Retrieved 2016-11-24.
- ^ a b "Digital Research Announces GEM". Corporate Histories Collection - Computer History Museum. Archived from the original on 2011-07-25.
- ^ a b "Der GEM-Oldie von Digital Research läuft und läuft: Eine Benutzeroberfläche für diverse Rechnerarchitekturen". Computerwoche (in German). IDG Business Media GmbH. 1989-08-18. ISSN 0170-5121. Archived from the original on 2016-11-24. Retrieved 2016-11-24.
- ^ a b Barney, Douglas (1987-11-02). "Microbits: Waiting is hardest part". Computerworld. Vol. XXI, no. 44. CW Publishing, Inc. pp. 37, 45. ISSN 0010-4841. Archived from the original on 2020-01-11. Retrieved 2020-01-11.
- ^ a b c d e Wong, William G. (July 1984). "Digital Research's GSX: Graphics Portability". Microsystems. p. 74. GSX13ART.TXT. Archived from the original on 2019-10-20. Retrieved 2020-01-12.
- ^ "One man's drive to standardize GSX" (PDF). Digital Dialogue - Employee Newsletter of Digital Research Inc. Vol. 3, no. 4. Digital Research. August 1984. p. 3. Archived from the original (PDF) on 2015-06-16. Retrieved 2022-09-19.
- ^ a b "Language bindings available on data base services" (PDF). Micro Notes - Technical information on Digital Research products. Vol. 2, no. 3. Pacific Grove, California, USA: Digital Research, Inc. July 1984. p. 4. NWS-106-003. Archived (PDF) from the original on 2020-02-11. Retrieved 2020-02-11.
[…] Further documentation in the form of the GSX Language Reference manual is available for 16-bit DRI languages inside the GSX-86 Programmer's Toolkit. The product contains both versions of the newest GSX version 1.3 - one for CP/M-86 (including Concurrent CP/M) and the other for PC-DOS. […]
[1] - ^ a b c Elliott, John C., ed. (2014-07-07). "The Graphics System eXtension". Seasip.info. Retrieved 2020-01-13.
- ^ "New driver source". 2020. Archived from the original on 2020-07-28. Retrieved 2020-07-28.
- ^ "UMC UM85C408AF 16-bit ISA Dram VGA Drivers | Device Drivers". oemdrivers.com. 2020-07-27. Retrieved 2020-07-27.
- ^ a b "DRI promotes graphics standard" (PDF). Micro Notes - Technical information on Digital Research products. Vol. 2, no. 2. Pacific Grove, California, USA: Digital Research, Inc. May 1984. p. 12. NWS-106-002. Archived (PDF) from the original on 2020-02-11. Retrieved 2020-02-11.
[…] Polaroid Palette (part of the Presentation Master package from Digital Research), Diablo Cl30 Color InkJet printer, Transtar color printer, Houston Instruments CMP-29/40/41/42 plotter series. Strobe 100/260 plotter series, the Hewlett-Packard 7473A plotter and Philips GP 300L Hi and Lo Res printers. […]
[2] - ^ Lineback, Nathan. "GSX Screen Shots". Toastytech.com. Archived from the original on 2020-01-15. Retrieved 2020-01-15.
- ^ Elliott, John C., ed. (2014-07-07). "The Virtual Device Interface". Seasip.info. Retrieved 2020-01-13.
- ^ Elliott, John C.; H., Thomas, eds. (2014-07-07). "The Application Environment Services". Seasip.info. Retrieved 2020-01-13.
- ^ Kewney, Guy (January 1985). "Newsprint". Personal Computer World. p. 108. Retrieved 2021-03-19.
- ^ Lineback, Nathan. "GEM 1.1 screenshots". Toastytech.com. Archived from the original on 2019-12-25. Retrieved 2016-08-01.
- ^ Elliott, John C., ed. (2007-03-18). "Screenshots of GEM". Seasip.info. Archived from the original on 2019-05-21. Retrieved 2016-08-01.
- ^ Elliott, John C. (ed.). "Screenshots of Apricot GEM/1". Seasip.info. Archived from the original on 2019-04-04. Retrieved 2016-08-01.
- ^ "Concurrent DOS 4.1 in den USA angekündigt". Computerwoche (in German). IDG Business Media GmbH. 1985-06-21. ISSN 0170-5121. Archived from the original on 2017-01-18. Retrieved 2017-01-18.
- ^ Markoff, John Gregory; Robinson, Phillip (June 1985). "A GEM Seminar". BYTE. p. 455. Retrieved 2013-10-27.
- ^ Kisor, Henry (1985-11-16). "GEM Write Gives IBM Owners Apple-styled Word Processing". Orlando Sentinel. Archived from the original on 2019-02-13. Retrieved 2015-01-05.
- ^ a b Dilger, Daniel Eran (2007-09-10). "Office Wars 3 – How Microsoft Got Its Office Monopoly". RoughlyDrafted Magazine. San Francisco, California, USA. Archived from the original on 2013-08-19. Retrieved 2013-08-15.
- ^ "Digital Research To Modify GEM". The New York Times (National ed.). 1985-10-01. p. D-4. Archived from the original on 2018-09-30. Retrieved 2020-01-12.
- ^ Watt, Peggy (1985-10-07). "Apple forces rewrite of GEM". Computerworld. News. Vol. XIX, no. 40. Monterey, California, USA: CW Publishing, Inc. p. 2. ISSN 0010-4841. Archived from the original on 2020-02-12. Retrieved 2020-02-12.
- ^ Watt, Peggy (1986-10-27). "Digital Research tighens belt with layoffs, reorganization - Realign business units, product lines". Computerworld - The Newsweekly for the Computer Community. Computer Industry. Vol. XX, no. 43. Monterey, California, USA: CW Communications, Inc. p. 95. ISSN 0010-4841. Archived from the original on 2020-02-16. Retrieved 2020-02-16.
- ^ Reimer, Jeremy (2005-05-05). "A History of the GUI" (PDF). Ars Technica. Archived from the original (PDF) on 2011-07-19. Retrieved 2012-07-23. (28 pages)
- ^ Lineback, Nathan. "GEM 2.0 Screen Shots". Toastytech.com. Archived from the original on 2019-08-22. Retrieved 2016-08-01.
- ^ Alsop, Stewart II (1988-01-18). "WUI: The War Over User Interface" (PDF). P.C. Letter - the Insider's Guide to the Personal Computer Industry. 4 (2). PCW Communications Inc.: 1–4. ISSN 8756-7822. Archived (PDF) from the original on 2019-08-23. Retrieved 2020-01-11.
- ^ a b Schemenaur, P. J. (1986-10-27). "Digital Research to Unveil Gem Option That Switches Between Applications". InfoWorld - The PC News Weekly. Vol. 8, no. 42. Monterey, California, USA: Popular Computing, Inc. p. 5. ISSN 0199-6649. Retrieved 2018-09-12.
- ^ a b Elliott, John C. (2013). "GEM/XM screenshots". Seasip.info. Archived from the original on 2018-09-12. Retrieved 2018-09-12.
- ^ "GEM XM switches programs under DOS and DOS Plus" (PDF). European Review (20). Digital Research: 1. January 1987. Archived (PDF) from the original on 2022-10-09. Retrieved 2018-09-12.
- ^ Harris, Dylan, ed. (2000). "download - XM". Digital Research. Retrieved 2001-09-12.
GEM XM Desktop allows you to run several applications at once. You can switch at will between them and even pass data from application to application. No longer need you finish one job before starting another. No more errors in typing the output of one programme as input to the next. Even for DOS applications that were not specially written for GEM. These new capabilities are in addition to the easy–to–use GEM Desktop functions of organising and displaying the contents of your discs. All commands use drop–down menus so need no memorizing. Discs and files are represented by icons which are unambiguous and easy to select, especially with a mouse. GEM XM Desktop is delivered complete with the indispensable GEM Diary which has alarm clock, calendar, diary and card index functions constantly available.
- ^ Lineback, Nathan. "GEM 3.11 Screen Shots". Toastytech.com. Archived from the original on 2019-11-18. Retrieved 2016-08-01.
- ^ Digital Research Artline User Reference Guide (PDF) (2 ed.). Digital Research / CCP Development GmbH. November 1990 [1988]. 5161-2062-002. Archived (PDF) from the original on 2019-12-04. Retrieved 2020-01-10.
- ^ "Digital Research stellt Artline 2 vor - Unter GEM-Oberfläche illustrieren und präsentieren". Computerwoche (in German). Munich, Germany: IDG Business Media GmbH. 1990-02-09. ISSN 0170-5121. Archived from the original on 2020-01-12. Retrieved 2020-01-12.
- ^ Elliott, John C. (ed.). "Screenshots of GEM/4". Seasip.info. Archived from the original on 2019-06-10. Retrieved 2016-08-01.
- ^ a b Krautter, Thomas; Barnes, Chris J. (2006-06-14) [1999-12-29]. "GEM/4". GEM Development. Archived from the original on 2013-03-16. Retrieved 2020-01-12.
[…] In general, I like the idea of releasing Artline 1 and/or 2 to the public domain, given, some general things are discussed. […] comments on Artline, because the application all the time has been our own copyright, all code was written at CCP, the trademark has been Digital Research's (now it's ours) and the Artline 2 Operating System has been GEM/4. Artline 1 needs GEM 3.1, while all changes to GEM/4 have been made in cooperation with Lee Lorenzen and Don Heiskell to keep compatibility with ventura publisher. Bill Herndon is currently checking his archive to see, if he may contribute GEM/4 VDI and driver sources. […]
- ^ Digital Research Artline Installation / Startup (2 ed.). Digital Research / CCP Development GmbH. November 1990 [1988]. 5161-2052-002. Retrieved 2020-01-12.
- ^ Digital Research Artline Graphics Utilities Guide (1 ed.). Digital Research / CCP Development GmbH. August 1990 [1988]. 5161-2042-002. Retrieved 2020-01-12.
- ^ Artline Release Note (3 ed.). January 1991. 5161-1001-003. Archived from the original on 2020-01-12. Retrieved 2020-01-12. [3]
- ^ Elliott, John C. (ed.). "Screenshots of GEM/5". Seasip.info. Archived from the original on 2019-06-10. Retrieved 2016-08-01.
- ^ Scott, Karyl (1991-07-29). "Novell/DRI merger to reap better client management". InfoWorld. Networking. Vol. 13, no. 30. InfoWorld Publishing Co. p. 33. ISSN 0199-6649. Archived from the original on 2020-02-09. Retrieved 2017-01-21.
- ^ "Novell and Digital Research sign definitive merger agreement". Business Wire. 1991-07-17. Archived from the original on 2018-08-18. Retrieved 2017-01-24.
- ^ "Motorola VME/10 Microcomputer System Overview Manual" (PDF) (1 ed.). Motorola Inc. February 1984. M68KVSOM/D1. Archived (PDF) from the original on 2019-11-27. Retrieved 2020-01-11.
- ^ "Archived copy". Archived from the original on 2006-07-13. Retrieved 2018-09-12.
{{cite web}}: CS1 maint: archived copy as title (link) - ^ Dyer, Landon. "The Atari ST, Part 2". Archived from the original on 2018-10-10.
- ^ Daniels, Jeffrey (Summer 1988). "3 Years With the ST - An exclusive look inside Tramiel's Atari". STart - The ST Quarterly. START Magazine Archive. Vol. 3, no. 1. Antic Publishing. p. 22. Archived from the original on 2019-11-02. Retrieved 2020-01-11.
- ^ Leon, Mark (1996-07-29). "Caldera reopens 'settled' suit, buys DR DOS — Antitrust suit against Microsoft". InfoWorld. News. Vol. 18, no. 31. InfoWorld Publishing Co. p. 3. ISSN 0199-6649. Archived from the original on 2020-02-08. Retrieved 2020-02-08. [4]; Leon, Mark (1996-07-29). "Caldera reopens 'settled' suit, buys DR DOS — Microsoft's response: lawsuit is 'ironic and sad'". Computerworld New Zealand. IDG Communications. ISSN 0113-1494. CMPWNZ. Archived from the original on 2018-08-23. Retrieved 2018-02-13.
- ^ Morris, Joseph P., ed. (1997-05-23) [1997-05-19]. "Caldera Announces OEM Availability of "Web-TV"-like Functionality Using OpenDOS - Caldera WebSpyder Adds Customizable Inter/Intranet Functionality to OEM Solutions". Provo, Utah, USA: Caldera, Inc. Archived from the original on 2018-08-26. Retrieved 2018-08-26 – via www.delorie.com/opendos.
- ^ a b Jemmett, Ben A. L. (April 1999). "Caldera releases GEM under the GPL". Deltasoft - GEM News. Archived from the original on 2016-11-07. Retrieved 2016-11-07.
Caldera Thin Clients, Inc. released the source code for GEM and ViewMAX under the GNU General Public License in mid April, following years of speculation over GEM's future. Caldera bought the GEM sources from Novell along with the DR-DOS in 1996, at the time noting that they may develop GEM into a platform for mobile computers and thin clients. However, these plans were dropped, and GEM was instead released into the open-source community.
- ^ Landemarre, Olivier; Rivière, Vincent; Méquignon, Didier; Reboux, Eric; Bercegeay, Arnaud; Béréziat, Dominique; Zorro; Donzé, Philipp; Lemaire, Jean Francois; Sevin, Roland; Stocklausen, Jean-Marc; Boudet, Frédéric; Mandin, Patrice, eds. (2017-12-10) [2011]. "MyAES". Release: 0.97. Archived from the original on 2019-11-02. Retrieved 2020-01-11.
- ^ a b Paul, Matthias R. (1997-04-13) [1993]. DRDOS6UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von DR DOS 6.0. MPDOSTIP (in German) (60 ed.). Archived from the original on 2016-11-07. Retrieved 2016-11-07.
- ^ a b Paul, Matthias R. (1997-06-07) [1994]. NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP (in German) (85 ed.). Archived from the original on 2016-11-07. Retrieved 2016-11-07.
Further reading
[edit]- Apricot Portable - Technical Reference Manual. Vol. Section 3: Software. ACT (International) Limited. 1984. Retrieved 2020-01-13. [5][6] (228 pages)
- GSX Graphics Extension - Programmer's Guide (PDF) (2 ed.). Digital Research Inc. September 1983. 5000-2024. Archived (PDF) from the original on 2020-02-11. Retrieved 2020-01-13. [7][8][9]
External links
[edit]- GEM - history, documentation and links to various open-source GEM projects
- Afros - a distribution of Atari OS components (consisting of for example EmuTOS), aimed specifically at ARAnyM
- Aranym Atari Running on Any Machine: an open source emulator/virtual machine that can run Atari GEM applications
- "GEM : THE PROJECT".
- Creating of TOS (part 1) Archived 2011-05-12 at the Wayback Machine Landon Dyer, one of original member of "The Monterey Group"
- Creating of TOS (part 2) Archived 2010-09-21 at the Wayback Machine Landon Dyer, one of original member of "The Monterey Group"
- GEM demo 1985 Most of the program is about the MAC
- John C. Elliott. "Intel GEM main page".
GEM (desktop environment)
View on GrokipediaHistory
Origins in GSX
GSX, or Graphics System Extension, was developed by Digital Research as a device-independent graphics library to enable portable graphical applications across diverse hardware platforms. Initially released for the 8-bit CP/M-80 operating system in November 1982 through a collaboration with Graphic Software Systems, Inc., it laid the groundwork for standardized graphics output on early microcomputers. The 16-bit version, GSX-86, followed in July 1983 specifically for CP/M-86, targeting Intel 8086/8088-based systems like the IBM PC, and was bundled as an extension to provide enhanced graphics capabilities without hardware-specific coding.[4][5] At its core, GSX featured the Virtual Device Interface (VDI), a standardized set of function calls that abstracted graphics operations such as line drawing, text rendering, and area filling, allowing applications to issue device-agnostic commands. The VDI supported vector-based drawing for scalable output and included utilities like the Graphics Device Operating System (GDOS) for high-level interface management and the Graphics Input/Output System (GIOS) for loading device-specific drivers dynamically. While GSX primarily focused on graphics, it integrated with CP/M's file handling mechanisms, later evolving into GEMDOS for more robust disk and I/O operations in subsequent systems. This separation of graphics logic from hardware dependencies was pivotal, enabling developers to create portable software that functioned consistently on printers, plotters, and displays without recompilation.[4][5][6] GSX's portability was achieved through installable device drivers, which translated VDI calls into hardware-specific instructions. For 8-bit CP/M-80 systems, drivers targeted printers and plotters, supporting features like multiple line styles, marker sizes, text rotation in 90-degree increments, and hatch patterns. Known 8-bit drivers included:| Device Type | Example Driver | Supported Resolution (dpi or coordinates) | Key Features |
|---|---|---|---|
| Printer | Epson MX-80 | 960 x 2160 pixels | 6 character sizes, 5 line styles, polylines, fill areas |
| Plotter | HP 7220 | 1016 x 787 coordinates | Continuous scaling, 7 line styles, 8 pens, markers, text |
| Plotter | HP 7470A | 1219 x 787 coordinates | Unlimited pens, polylines, text |
| Plotter | Houston DMP-3/4 | 1016 x 787 coordinates | 5 character sizes, 9 line styles, 6 pens |
| Terminal | VT100 w/ Retrographics | 1023 x 779 pixels | 4 character sizes, 5 line styles, monochrome, fill areas |
| Device Type | Example Driver | Supported Resolution | Key Features |
|---|---|---|---|
| Monitor | IBM PC Color/Graphics Adapter | 320 x 200, 4 colors | Bitmap mode, text, polylines, fill areas |
| Monitor | IBM PC Monochrome | 640 x 200, 2 colors | Bitmap mode, high-resolution text |
| Monitor | Hercules Graphics Card | 720 x 348 monochrome | High-resolution bitmap, vector support |
| Printer | Epson High Res | 120 x 144 dpi | 12 character sizes, hatch patterns, rotation |
| Plotter | HP 7470A | Vector scalable | 182 marker sizes, 6 line styles |
Initial GEM Development
Digital Research announced GEM (Graphical Environment Manager) in September 1984, with a public demonstration at the COMDEX trade show in November of that year. The initial version, GEM 1.0, was released on February 28, 1985, as a graphical desktop environment compatible with both CP/M-86 and MS-DOS operating systems on Intel 8086-based personal computers.[7][1][8] Under the oversight of Digital Research founder Gary Kildall, the project was led by key developers including Lee Jay Lorenzen, who had prototyped an early graphical interface called "Crystal" in 1983 after joining the company from Xerox. Lorenzen's work integrated the Virtual Device Interface (VDI) from Digital Research's prior GSX graphics subsystem, enabling device-independent rendering and portability across hardware. Additional contributions came from team members such as Don Heiskell and Darrell Miller, focusing on the core architecture for the 8086 processor family.[8][1] GEM 1.0 introduced a menu-driven interface with drop-down menus accessible via a top menu bar, allowing users to navigate commands without command-line input. It supported windowing for overlapping or tiled application windows, enabling basic multitasking-like behavior, and featured icon-based file management on a desktop metaphor, where files and folders were represented by pictorial icons for intuitive drag-and-drop operations. These elements provided a WYSIWYG (what you see is what you get) experience with mouse control, high-resolution graphics, and color support where hardware permitted.[7][1] The licensing model emphasized OEM bundling, with Digital Research offering runtime licenses to hardware manufacturers for $500 per developer toolkit or $1,000 annually per product, facilitating widespread integration. GEM was bundled with systems such as the Atari ST series, Amstrad PC 1512, Apricot PCs, and Tandy computers, contributing to its rapid adoption as one of the first commercial GUIs for personal computing. Early challenges included hardware constraints on 8086 and 8088 processors, where the environment required about 128 KB of memory alongside DOS.[1][8][3]Platform-Specific Evolutions
Following the initial release of GEM 1.0 in 1985, which established the foundational event-driven model for graphical interfaces, subsequent versions introduced iterative enhancements to address hardware limitations and user feedback while navigating legal constraints. GEM 2.0, released in March 1986, incorporated bug fixes for stability issues, including improvements to file manager functionality and driver compatibility for emerging display adapters. These updates were partly driven by a 1986 settlement with Apple Computer, which required modifications to certain interface elements to avoid similarities with the Macintosh, resulting in a more restrained but reliable evolution of the desktop environment.[7][1][9] GEM 2.0 added support for dialog boxes to handle user interactions and warnings more effectively, alongside a simulated multitasking capability through desk accessories that allowed limited concurrent operations, such as background printing, provided sufficient RAM (at least 320 KB). The version also enabled desktop icons in compatible configurations for representing files, folders, and drives, enhancing intuitive file management despite the legal restrictions that limited overlapping windows and animations in some implementations. Minor updates followed, such as GEM 2.1 later in 1986, which refined the user interface with a new system font and further driver optimizations for better compatibility with PC hardware variations. These changes prioritized robustness over expansive features, reflecting Digital Research's focus on broadening adoption amid evolving DOS ecosystems.[7][1][2] By GEM 3.0, released on November 3, 1988, for MS-DOS systems, the environment evolved to leverage VGA graphics capabilities, supporting resolutions up to 640x480 and color palettes expandable to 256 colors through enhanced Virtual Device Interface (VDI) drivers. This version introduced font scaling options, allowing adjustable point sizes (from 8 to 72) in applications like GEM Write and GEM Draw, which improved text rendering across varying display and printer outputs. Additional minor releases, including GEM 3.1 in 1989, addressed compatibility with soft fonts and bit-mapped printing drivers, ensuring smoother integration with high-resolution peripherals while fixing residual issues in graphics rendering. These advancements maintained GEM's portability but highlighted ongoing challenges in optimizing performance on resource-constrained systems.[7][10][1] Cross-platform adaptations posed significant challenges, particularly in porting GEM's event-driven architecture to diverse CPU architectures like the 68000 processor in Atari ST systems. The VDI layer facilitated this by abstracting graphics and input handling, enabling GEM to run under TOS on Atari hardware with minimal code changes, though optimizations were needed to handle the 68000's addressing modes and interrupt structures differently from x86-based PCs. This portability supported overlapping windows and menu-driven interactions across platforms but required custom drivers to mitigate timing discrepancies in event processing, ensuring consistent responsiveness.[7][2] Official support for GEM declined by 1990, as competition from Microsoft's Windows 3.0 overshadowed its market position, leading Digital Research to shift focus toward integrated solutions like ViewMAX. Novell's acquisition of Digital Research in 1991 effectively ended active development, though the technology influenced later clones and ports.[1][9][2]Core Features
Graphical User Interface Elements
GEM's graphical user interface is founded on the WIMP (Windows, Icons, Menus, Pointer) paradigm, which facilitates mouse-driven navigation and interaction through visual elements rather than command-line inputs.[11] This model, inspired by earlier systems like the Xerox Star, emphasizes intuitive point-and-click operations enabled by a pointing device such as a mouse.[12] The menu bar employs a pull-down structure, where selecting a title reveals a list of options, supporting accelerator keys for keyboard shortcuts to enhance efficiency.[11] It accommodates up to 10 menu titles, with each menu holding as many as 30 items, allowing applications to organize commands hierarchically while maintaining a compact top-level bar.[11] The rightmost title typically serves as the desk accessory menu, providing quick access to utilities without disrupting primary workflows.[13] Window management in GEM supports overlapping and resizable windows, each featuring a title bar for identification and manipulation, vertical and horizontal scroll bars for content navigation, and a close button to terminate the view.[13] The system handles a maximum of eight windows simultaneously, including the desktop as handle zero, with users able to move windows by dragging the title bar, resize via corner boxes, and toggle full or partial views through dedicated controls.[13] These elements ensure flexible multitasking within the constraints of early personal computing hardware.[12] The icon system utilizes 32x32 pixel monochrome icons to represent files, folders, and applications on the desktop, promoting visual recognition over textual labels.[12] Drag-and-drop functionality allows users to launch programs by dragging icons to the desktop or move files between windows by dragging them directly, streamlining common operations like file management.[11] Dialog boxes in GEM come in modal varieties, which halt interaction until dismissed, and modeless types that permit continued work elsewhere, incorporating user input controls such as sliders for proportional adjustments, radio buttons for exclusive selections, and editable text fields for data entry.[13] These boxes, sized up to the full desktop extent, use resource files to define layouts and behaviors, ensuring consistent and responsive feedback across applications.[11]Application Integration
The Application Environment Services (AES) formed the core API layer of GEM, enabling developers to create graphical applications that interacted seamlessly with the desktop environment through a standardized set of functions for managing windows, menus, dialogs, and user events. AES was structured as a collection of 12 subroutine libraries, including those for applications, events, menus, and resources, which handled the higher-level aspects of user interface programming without delving into low-level graphics rendering. This API allowed applications to integrate with GEM's graphical user interface elements, such as icons and windows, by providing consistent mechanisms for event handling and inter-process communication.[13] Central to AES was its message passing system, which facilitated communication between the AES kernel, applications, and the desktop shell via a dedicated message pipe. Messages were fixed at 16 bytes in length, with the first three words specifying the message type, sender application ID, and length; predefined protocols includedWM_REDRAW (message code 20), which notified an application to redraw a specific window region following events like resizing or uncovering. The system maintained an event queue for processing inputs, including mouse movements (with X/Y coordinates), keyboard scan codes, button presses, and timer ticks in milliseconds; developers accessed these through functions like appl_read (opcode 11) to retrieve messages from the pipe and appl_write (opcode 12) to send them. For multi-event detection, the EVNT_MULTI function (opcode 25) allowed applications to wait on combinations of events, such as keyboard input (flag MU_KEYBD) or mouse buttons (flag MU_BUTTON), ensuring responsive behavior in the single-tasking environment.[13][7]
Resource files in the binary .RSC format were integral to application integration, storing structured data for user interface elements like menus, dialogs, and icons in object trees that could be tailored for different resolutions (e.g., 640x200 or 640x400 pixels). Developers loaded these files using RSRC_LOAD (opcode 110), retrieved addresses for components via RSRC_GADDR (opcode 112), and freed them with RSRC_FREE (opcode 111); the files contained data structures such as OBJECT for layout and TEDINFO for text fields. The GEM Resource Construction Set (RCS), a dedicated editor tool, enabled the design and compilation of these resources, allowing programmers to visually assemble dialogs and menus before generating the binary .RSC files for runtime use in applications and desk accessories.[13][7]
Basic AES integration began with initializing an application via appl_init (opcode 10), which set up the parameter block, established communication with the AES kernel, and returned an application ID (ap_id) for subsequent calls; a typical startup sequence might follow with wind_create (opcode 100) to define a window and wind_open (opcode 101) to display it. Sample code in C, such as that from the GEM Programmer's Toolkit demos like HELLO.APP, illustrated this process:
#include <aes.h>
int main() {
int ap_id;
ap_id = appl_init();
if (ap_id > 0) {
// Create and open a window
int handle = wind_create(0x0007, 0, 0, 200, 100); // NAME | MOVER | SIZER flags
wind_open(handle, 50, 50, [300](/page/300), 150);
// [Event loop](/page/Event_loop)
appl_exit();
}
[return 0](/page/Return_0);
}
#include <aes.h>
int main() {
int ap_id;
ap_id = appl_init();
if (ap_id > 0) {
// Create and open a window
int handle = wind_create(0x0007, 0, 0, 200, 100); // NAME | MOVER | SIZER flags
wind_open(handle, 50, 50, [300](/page/300), 150);
// [Event loop](/page/Event_loop)
appl_exit();
}
[return 0](/page/Return_0);
}
appl_exit (opcode 19) to cleanly terminate.[13][7]
Despite its strengths, AES operated in a fundamentally single-tasking framework, where only one foreground application could execute at a time, limiting true concurrency and requiring developers to manage state manually during event processing. Pseudo-multitasking was achieved through desk accessories—small, always-available utilities like a clock or calculator—limited to six simultaneous instances and requiring at least 128 KB of free RAM; these ran in the background via the AES kernel's dispatcher but could not perform complex operations without suspending the main application. This design constrained resource-intensive integrations, such as background printing, which needed 320 KB RAM and a hard drive for reliability.[13][7]
Device and Hardware Support
The Virtual Device Interface (VDI) in GEM serves as the core mechanism for device and hardware support, enabling device-independent interaction with peripherals through layered abstractions for input, output, and metafile handling. The input layer manages devices such as mice and keyboards via functions like locator requests for cursor positioning and key status queries, while also supporting valuator devices for analog inputs and string devices for text entry. Output layers handle raster operations for pixel-based rendering on screens and printers, as well as vector operations for line and shape drawing on plotters. Metafile devices facilitate the creation and storage of graphics in a portable, device-agnostic format, allowing output to be redirected or archived without hardware-specific dependencies. This architecture, building on Digital Research's earlier Graphics System Extension (GSX), ensures portability across supported platforms. GEM supports a variety of peripherals through VDI-compatible drivers, including impact printers like the Epson FX-80 and FX/LQ series for dot-matrix output, plotters such as the Hewlett-Packard 7470A for vector plotting, and digitizers including the Summagraphics MM Series tablets for precise input capture. These devices are interfaced via RS-232C serial ports (limited to COM1 and COM2) or parallel connections, with drivers translating high-level VDI calls into hardware commands for tasks like hardcopy printing or tablet coordinate sampling. Resolution and mode support in GEM adapt to the underlying hardware, ranging from basic monochrome modes at 320x200 pixels to color-capable configurations like 640x200 with 16 colors or 640x350 with up to 16 colors on enhanced graphics adapters. Higher-end systems, such as those with IBM EGA or Hercules cards, extend to 720x348 monochrome or 640x480 color modes. The VDI employs normalized device coordinates (spanning 0 to 32767 units per axis) for scalable rendering, with transformation modes allowing conversion to raster coordinates for direct pixel addressing, though aspect ratio distortions may occur on non-square pixel displays without compensation. GEM's driver architecture is modular and runtime-loadable, relying on files with .DRV or .SYS extensions (e.g., printer.sys) managed by the Graphics Device Operating System (GDOS) component within GEMVDI.EXE. These drivers, typically 30-40 KB in size, include variants for 8-bit and 16-bit processors to support systems like the Intel 8088 or 68000, and are configured via ASSIGN.SYS for device identification and loading into application memory space. Despite its flexibility, GEM exhibits known compatibility issues, such as screen flicker on interlaced displays—particularly observed in Atari ST implementations where video output instability affects the GEM desktop—and limited joystick support, treated as valuator input devices but often lacking full integration with application event handling or precise control in gaming scenarios.Implementations and Ports
Intel-Based Systems
GEM was initially implemented on Intel x86-based systems, targeting hardware such as the IBM PC and compatibles running CP/M-86 or MS-DOS. Released in 1985 by Digital Research, it provided a graphical shell environment atop these text-based operating systems, enabling point-and-click interaction with a mouse and icons on supported graphics adapters like the IBM Color Graphics Adapter or Hercules Graphics Card.[14] The core GEM/1 version functioned as a lightweight DOS shell, consuming approximately 127 KB of memory when combined with the underlying OS, allowing seamless integration with command-line applications like WordStar and Lotus 1-2-3 while launching GEM-based graphical tools.[1] Hardware requirements included at least 256 KB of RAM for MS-DOS 2.x systems, rising to 320 KB for MS-DOS 3.x, alongside compatibility with standard PC peripherals such as the Microsoft Mouse.[14] Subsequent versions enhanced performance and memory handling for evolving Intel processors. GEM was optimized for the 8086 and 8088 CPUs prevalent in early IBM PCs, leveraging the GSX graphics subsystem for efficient rendering within the 1 MB address space limit of real mode.[3] Later iterations, including GEM/3 released in 1988, introduced support for expanded memory via the EMS specification, utilizing a Virtual Memory Manager (VMM) to access additional RAM beyond conventional limits, which was crucial for resource-intensive tasks on systems with LIM EMS 3.2 or 4.0 hardware.[3] For 80286-based machines, GEM/XM (an extension of GEM/2 around 1986-1987) incorporated multitasking capabilities, enabling up to ten concurrent GEM and DOS programs through task-switching mechanisms that exploited the processor's protected mode for improved stability and memory segmentation, though still constrained by DOS's real-mode heritage.[1] Notable applications built directly on GEM's APIs exemplified its role in professional software on x86 platforms. Ventura Publisher, developed in 1985 by Ventura Software and later acquired by Xerox, relied on GEM's graphical kernel (trimmed to 24 KB for efficiency) for its desktop publishing features, including style sheets and page layout, making it a leading tool for long-document production under MS-DOS.[15] Similarly, GEM Draw, part of Digital Research's own application suite, utilized the VDI (Virtual Device Interface) APIs for vector-based illustration and diagram creation, integrating seamlessly with other GEM tools like GEM Write for word processing.[15] By 1986, GEM had gained significant traction among DOS users, with Digital Research projecting over a million installations amid competition from Microsoft's Windows 1.0, though exact market penetration varied by OEM bundling and hardware adoption.[16] Its peak popularity on Intel systems highlighted GEM's accessibility for transitioning PC users to graphical workflows before the dominance of later Windows versions.Atari ST Adaptation
The Atari ST adaptation of GEM formed the core of TOS (The Operating System), Atari's proprietary operating system released in 1985 alongside the debut of the Atari 520ST computer. TOS integrated GEM as its desktop shell, building on the original Intel-based GEM developed by Digital Research by porting it to the Motorola 68000 processor and tailoring it to Atari's hardware architecture. This adaptation combined GEM's graphical user interface with GEMDOS for file handling and a BIOS/XBIOS layer for low-level hardware access, enabling a seamless GUI experience directly from ROM.[17][18][19] GEM in TOS was specifically optimized for the Atari ST's diverse hardware configurations, providing native support for both color-capable models like the 520ST with its 320x200 resolution in 16 colors or 640x200 in 4 colors, and low-cost monochrome variants such as the 520STFM with a 640x400 monochrome display. The Virtual Device Interface (VDI) within GEM handled graphics rendering across these modes via Line A routines, ensuring consistent operation without requiring extensive application modifications. MIDI integration was a key hardware synergy, leveraging built-in MIDI ports connected to an MC6850 ACIA chip for real-time input/output, which XBIOS functions like Midiws() and Bconout() facilitated for music applications.[18][19][20] Later enhancements in TOS versions, such as 1.04 and beyond, capitalized on hardware upgrades like the dedicated blitter chip introduced in the 1986 Mega ST and 1989 STE models, which accelerated bit-block transfers for faster screen redraws and graphics operations through optimized Line A calls. The GEMDOS component extended file system capabilities to support Atari's double-sided 3.5-inch floppy disks with FAT-based clustering (1024-byte sectors) and hard drives, using functions like Rwabs() for low-level sector access and Dsetdrv() for multi-drive management, enabling reliable data handling up to 16 drives.[18][19] This adaptation made TOS and GEM integral to Atari's creative software ecosystem, powering music production tools like Cubase via MIDI interfaces and desktop publishing applications that exploited the ST's graphics modes. Third-party utilities, such as the NeoDesk file manager from Gribnif Software, enhanced GEM's desktop functionality with advanced drag-and-drop features and improved file operations, becoming a staple for users in graphics, CAD, and multimedia workflows.[21][20][22]Later Extensions and Clones
After official support for GEM ended in the early 1990s, several unofficial projects emerged to extend and recreate its functionality, leveraging source code releases and emulation technologies. These efforts preserved GEM's legacy on legacy hardware while adapting it to modern contexts, often focusing on open-source development and compatibility enhancements. The FreeGEM project, initiated in 1999, produced an open-source clone of GEM designed to run on MS-DOS and FreeDOS systems. Based on partial source code obtained from Caldera Thin Clients, Inc., it included a multitasking desktop environment that supported running multiple GEM and DOS applications simultaneously, with features like clipboard integration and a DOS menu accessible via keyboard shortcuts. FreeGEM also incorporated compatibility layers allowing it to operate within Windows 98 environments, enabling legacy GEM applications to function in DOS emulation modes on later PCs.[23] On the Atari platform, clones like Geneva extended GEM's capabilities beyond its original single-tasking limitations. Developed by Gribnif Software, Geneva is a multitasking GEM AES (Application Environment Services) replacement that supports unlimited GEM applications and desk accessories, allowing up to 256 windows open at once with background manipulation and 3D interface elements. It employs cooperative multitasking, requiring less than 200 KB of memory, and is compatible with Atari ST, TT, and Falcon hardware, including low-memory configurations starting at 1 MB; optionally, it integrates with the MiNT kernel for enhanced performance.[24] Modern emulations have further sustained GEM through software recreations in the 2010s and beyond. Emulators such as PCem accurately simulate IBM PC environments capable of running original GEM software on contemporary hardware, while Hatari provides cycle-accurate emulation of Atari ST systems, natively executing GEM-based applications and TOS (The Operating System). These tools, combined with ongoing source code distributions from projects like FreeGEM, have facilitated preservation and experimentation, with updates to the 1999 Caldera releases enabling compilation and modification for current platforms. Projects like OpenGEM continue to maintain and extend the codebase for modern DOS environments as of 2025.[25][26] The legal framework enabling these extensions stemmed from the transfer of Digital Research's intellectual property. Acquired by Novell in 1991 for $80 million, the DRI assets—including GEM—were sold to Caldera Systems in 1996. Caldera released the GEM source code under the GNU General Public License in mid-April 1999, allowing open-sourcing that spurred community-driven clones and ports. This release included core GEM components and some Atari-specific files, paving the way for derivatives like FreeGEM.[27][28][29]Technical Architecture
Graphics and Input Handling
The GEM Virtual Device Interface (VDI) provided a comprehensive set of over 100 function calls, serving as primitives for graphics rendering and input processing. These primitives encompassed a wide range of operations, including basic drawing elements such as lines, arcs, and ellipses, as well as more complex tasks like polygon filling and text rendering. For instance, thev_gtext() function enabled the output of text strings at specified coordinates, supporting various fonts and effects, while v_fillarea() allowed for the filling of polygons defined by an array of points using predefined patterns or solid colors.
The VDI employed a dual coordinate system to abstract hardware differences, distinguishing between logical coordinates in Normalized Device Coordinates (NDC) and physical coordinates in Raster Coordinates (RC). In NDC mode, the coordinate space ranged from (0,0) at the lower left to (32767,32767) at the upper right, providing a device-independent logical mapping that facilitated portability across resolutions. Physical RC used device-specific pixel units with an upper-left origin, directly corresponding to screen or printer raster. Transformations between these systems, including scaling and rotation, were handled via internal matrices set during workstation initialization, allowing applications to perform affine transformations without direct hardware access.
Input handling in the VDI focused on low-level event sampling to support interactive applications. Mouse tracking was achieved through functions like vq_mouse(), which queried the current button state and cursor position in real-time, enabling precise pointer management. For keyboard input, scancodes were retrieved using vq_key_s(), which sampled the keyboard state and returned key transition events, ensuring compatibility with diverse hardware layouts. These input primitives formed the foundation for higher-level event processing, with multi-event coordination often layered atop them in full GEM implementations.
Clipping and raster operations further enhanced rendering efficiency and flexibility within the VDI. Clipping was controlled via vs_clip(), which defined a rectangular region to confine all output primitives, preventing off-screen drawing and optimizing performance on limited hardware. Raster operations, particularly BitBlt-style transfers, were implemented through vro_cpyfm() for opaque copies and vrt_cpyfm() for transparent ones, supporting logical modes such as replace, XOR for non-destructive overlays, and AND for masking effects. These operations allowed efficient screen updates and image manipulations, with the VDI routing calls to underlying device drivers as the final output endpoint.
