Graphics Environment Manager

**GEM** (**G**raphics **E**nvironment **M**anager) – buvo Digital Research kompanijos sukurta grafinė operacinė aplinka, skirta CP/M operacinei sistemai, veikusiai su Intel 8088 ir Motorola 68000 mikroprocesoriais. Vėlesnės versijos veikė kaip DOS operacinių sistemų grafinė aplinka.

GEM yra labiausiai žinoma iš Atari ST serijos kompiuterių, kuriuose buvo naudojama kaip pagrindinė grafinė vartotojo sąsaja (GUI), bei iš Amstrad kompanijos su IBM PC suderinamų kompiuterių, kuriuose GEM buvo įtraukiamas į standartinių programų sąrašą. Taip pat ši aplinka buvo pagrindas nedideliam kiekiui DOS programų, žymiausia iš jų – *Ventura Publisher*. Ji taip pat buvo perkelta į dalį kompiuterių, kurie anksčiau neturėjo grafinės sąsajos, tačiau neįgijo populiarumo juose. DRI taip pat buvo sukūrusi FlexGem savo FlexOS realaus laiko operacinei sistemai.

## Istorija

### GSX
GEM gyvenimas prasidėjo DRI kompanijoje kaip bendro naudojimo grafinė biblioteka, pavadinta GSX (**G**raphics **S**ystem e**X**tension) bei parašyta komandos, kuriai vadovavo *Lee Jay Lorenzen*. Jis buvo neseniai palikęs Xerox PARC kompaniją (vieta, kurioje gimė GUI). GSX buvo savita GKS kompiuterinės grafikos standarto, pasiūlyto 1977 metais, realizacija. GSX tikslas buvo palengvinti grafinių programų (pvz.: diagramų braižymo) kūrimą bet kuriai iš platformų, kuriuose veikia CP/M operacinė sistema. Kitaip šis uždavinys būtų reikalavęs didelių pastangų dėl didelių vaizdo aparatinės įrangos (ir jų koncepcijų) skirtumų tarp įvairių to laikmečio sistemų.

GSX susidėjo iš dviejų dalių: **GDOS** (Graphic Device Operating System) – nuo įrenginio nepriklausomos sąsajos grafikai ir **GIOS** (Graphic Input/Output System) – išvedimo/įvedimo sistemos, kuri susieja GDOS su konkrečiu įrenginiu (per įrenginio tvarkykles).

### GEM
GSX išsivystė į vieną dalį to, kas vėliau virto GEM sistema. Iš pradžių šis projektas buvo žinomas **Crystal** vardu, vėliau pavadinimas buvo pakeistas į **Gem**.

GEM sistemoje GSX tapo **GEM VDI** moduliu ir buvo atsakingas už žemo lygio grafiką ir jos paišymą. VDI pridėjo galimybę dirbti su įvairiais šriftais ir pasipildė taškinės grafikos komandomis (anksčiau buvo tik GKS paremta vektorinė grafika). VDI taip pat pridėjo daugybinį peržiūros sričių palaikymą. Tai buvo svarbiausias papildymas, reikalingas grafinių langų naudojimui.

Naujas **GEM AES** (**A**pplication **E**nvironment **S**ervices) modulis pateikė grafinių langų valdymo ir vartotojo sąsajos elementus. **GEM Desktop** naudojo abu modulius, Mac stiliaus grafinės vartotojo sąsajos sukūrimui. Pirmoji pilnos sistemos versija, skirta 8086 procesoriams, buvo demonstruojama *COMDEX* parodoje 1984 metų lapkričio mėnesį ir pradėta prekiauti 1985 vasario 28 GEM/1 vardu.

### Vėlesnės versijos
Po pirmos versijos išleidimo, Apple kompanija padavė DRI į teismą, kuris virto ilgu ginču dėl GEM/1 išvaizdos ir elementų elgesio (*look and feel*), kurie buvo beveik pilnai nukopijuoti nuo *Macintosh* sistemos (išskyrus keletą elementų, pasiskolintų iš ankstesnio Apple Lisa kompiuterio grafinės sąsajos). Pralaimėjus teismą, DRI buvo priversta pakeisti keletą pagrindinių sistemos savybių. Apple pratęsė teismus dėl panašių kaltinimų ir su kitomis kompanijomis.

Viso šio ginčo rezultatas buvo tai, kad GEM/2 darbalaukyje liko tik du fiksuoti langai (nors kitos programos galėjo jų pridėti kiek nori), buvo panaikintos piktogramos darbalaukyje ir atsisakyta langų animacijos, atidarant ir uždarant langus. Visais kitais požiūriais ši versija buvo panaši į GEM/1, bet joje buvo ištaisyta nemažai klaidų ir pridėti kosmetiniai patobulinimai.

Paskutinė komercinė versija buvo GEM/3, kurioje pagrindinės naujovės buvo nauji šrifto formatai ir nauja katalogų struktūra http://www.owenrudge.net/GEM/history, 3.1 versijoje atsirado Bezjė kreivių palaikymas http://www.seasip.info/Gem/versions.html. Su šia versija pasibaigė komerciniai GEM pardavimai, o programinis kodas tapo pasiekiamas įvairiems DRI klientams.

### Specifinės versijos
GEM/4 versija buvo pateikiama kartu su keletą grafinių programų, pavyzdžiui, su *Artline* vektorinės grafikos programa, kurią kūrė *CCP Systems* kompanija.

Kita GEM versija, pavadinta GEM/5, buvo sukurta GST kompanijos Timeworks Publisher 2.1 programai. Joje buvo atnaujinta išvaizda įvairiais 3D elementais, pridėtas kintamo dydžio šriftų palaikymas. Ši versija buvo sukurta GEM 3.13 versijos pagrindu.

### ViewMax
GEM Desktop taip pat buvo atskirtas į produktą, žinomą ViewMAX vardu. Ši versija buvo naudojama kaip failų tvarkyklė DR-DOS operacinėje sistemoje ir negalėjo savarankiškai paleisti GEM programų. Tai galėjo privesti prie keistos situacijos, kai vartotojas galėjo turėti keletą programų (įskaitant ir pačią ViewMAX) su savo integruotomis GEM sistemos kopijomis jų „viduje“. Tokios situacijos būdavo gana retos, nes nebuvo daug tokių GEM programų.

### GEM/XM
Per visą šį laikotarpį DRI dirbo prie GEM sistemos, gebančios dirbti daugiaprogramiu režimu. Projektas prasidėjo su X/GEM sistema, kuri buvo paremta GEM/1, tačiau ji reikalavo naudoti vieną iš daugiaužduotinių CP/M operacinės sistemos versijų. GEM/XM buvo atnaujinta GEM/2 versija, kuri turėjo daugiaprogramį režimą ir galėjo paleisti DOS programas komandinės aplinkos languose (taip, kaip dabar tai daro Windows operacinė sistema). Nė viena iš jų nepamatė dienos šviesos, tačiau GEM/XM kodas yra laisvai prieinamas pagal GNU GPL licenciją.

### Ventura Software
*Lee Lorenzen* paliko kompaniją greitai po GEM/1 išleidimo, kai tapo aišku, kad DRI neturi didelio suinteresuotumo kurti programas. Jis, kartu su kitu GEM programuotoju, *Dan Meyer*, įkūrė savo kompaniją, kurią pavadino *Ventura Software*. Jie sukūrė kompiuterio leidybos (*Desktop publishing*) *Ventura Publisher* programą, kuri vienu metu buvo tapusi labai populiari. Vėliau šią programą tobulino ir pardavinėjo Xerox, o galiausiai Corel kompanija.

### Atari versijos
Atari įsigijo GEM/1 ir CP/M 68k licencijas pagal sąlygas, kurios leido tęsti sistemos tobulinimą savaip (panašu, kad DRI nedomino 68k architektūra). To rezultatas tapo TOS operacinė sistema, kurią naudojo Atari ST asmeninis kompiuteris.

Kadangi TOS buvo paremta GEM/1 versija ir Atari niekada nebuvo tiesiogiai paduota į teismą, jie niekada nesuvaržė grafinės sąsajos taip, kaip tai buvo priversta padaryti DRI. GEM tobulinimas Atari kompanijoje pasisuko visiškai kita linkme. Iki 1990-tųjų GEM palaikė 24 bitų spalvas, konfigūruojamus langų elementus, prioritetinį daugiaužduotiškumą (*preemptive multitasking*) per UNIX paremtą MiNT branduolį (**M**int **i**s **N**ow **T**OS) ir daugybę kitų savybių.

Šiomis formomis GEM išgyveno iki DRI buvo nupirkta Novell kompanijos ir GEM tobulinimas buvo visiškai sustabdytas. Vėliau teises į DR-DOS ir GEM iš Novell nupirko *SCO Group* (tuo metu ji dar vadinosi *Caldera Thin Clients*) kompanija.

### Tolimesnis vystymasis
1999 metais *SCO Group* išleido GEM kodą pagal GNU/GPL licenciją. Sistema yra toliau tobulinama atviro kodo pagrindu. Šiuo metu egzistuoja OpenGEM ir FreeGEM distribucijos. GEM taip pat buvo dar kartą perkelta į Atari ST ir naudojama nemokame TOS klone – EmuTOS.

## Aprašymas
GEM sistema susidėjo iš trijų pagrindinių dalių:
# GEM VDI (Virtual Device Interface – virtuali įrenginių sąsaja)
# GEM AES (Application Environment Services – programinės aplinkos servisai)
# GEM Desktop (programa, suteikianti tempti ir padėti (drag - and - drop) stiliaus failų tvarkymą).

GEM **VDI** buvo viso GEM varikliuko grafinės sistemos pagrindas. Jis buvo atsakingas už „žemo lygio“ vaizdų piešimą „piešk liniją iš čia į ten“ stiliumi. VDI turėjo nuo ekrano raiškos ir koordinačių nepriklausomą vektorinės grafikos instrukcijų rinkinį, kurios buvo iškviečiamos iš programų gana paprasta sąsaja.

GEM **AES** pateikė langų sistemos bei kitų vartotojo grafinės sąsajos elementų bei jų valdymo funkcijų rinkinį. Siekiant geresnio vykdymo, dauguma GUI elementų buvo piešiami, naudojant simbolinę grafiką.

AES atlikdavo savo operacijas iškviesdamas VDI funkcijas, bet bendresne prasme, abi šios GEM sistemos dalys dažnai būdavo visiškai atskirtos programose. Programos paprastai kviesdavo AES komandas naujo lango sukūrimui, tačiau norint kažką nupiešti tame lange, kvietė VDI komandas.

GEM **Desktop** buvo programa, kuri naudojo AES failų tvarkymo ir paleidimo funkcijų suteikimui. Tai buvo tradicinė „darbalaukio“ aplinka, kokią vartotojai matydavo ir Macintosh kompiuteriuose, tačiau, kadangi ji dirbo virš DOS operacinės sistemos, turėjo šiai specifinių atvaizdavimo savybių. Nors GEM ir buvo mažiau draugiška paprastiems vartotojams nei Mac aplinka, tačiau vien praktiškai veikianti sistema virš DOS operacinės sistemos jau buvo nemažas pasiekimas.

## Nuorodos
* Informatyvi svetainė apie GEM, įskaitant įvairią dokumentaciją ir nuorodas į su GEM susijusius projektus
* John Elliot GEM tinklalapis