Gloria
2016-07-08

Grafikus asztali környezet DOS rendszerekre

Egy - ma már - különlegesnek számító programozási projekt előkészítésébe vágtam bele.
Különlegesnek számít, hiszen kb. 30 évvel ezelőtt még lehetett volna értelme ilyenre szánni az időt és energiát, de ma már az idő jóval túlhaladt felette, és érdeklődésre aligha tarthat számot.

Mégis, mint feladatot, érdekes kihívásnak tartom.

Mi is (lesz) a Gloria? Egy DOS rendszerre (MS-DOS-ra, illetve a mai helyzetet figyelembe véve a FreeDOS-ra) épülő grafikus asztali környezet, ablakkezelő rendszer, azaz GUI (Graphical User Interface). Hasonló, mint az 1980-as években megjelent GEOS, GEM és társai. Nem önálló operációs rendszer, szükséges valamely MS-DOS kompatibilis rendszer előzetes fennléte.
Terv szerint képes lesz működni VGA módban (640x480-as felbontás, 16 szín), de elsősorban a VESA szabványban definiált hagyományos videomódokat támogatja (800x600, 1024x768, 1280×1024, illetve 32K, 64K, és 16.8M szín).
A felület gyorsbillentyűkkel és egérrel egyaránt kezelhető lesz, hasonlóan a megszokott Windows és Linux felületekhez. A jobb gombos környezeti menük és (remélhetőleg) a középső gomb (scroll) is támogatva lesznek.

A Gloria elsősorban többé-kevésbé a hagyományos Windows rendszerre emlékeztető környezetet fog nyújtani: Asztal (cserélhető háttérképpel és ikonokkal); Tálca, a megnyitott ablakok listájával, órával és fontosabb állapotjelzőkkel; Start gomb és Start menü, mely testreszabható; saját kisalkalmazások: fájlkezelő, egyszerű szövegszerkesztő, képnézegető, rajzolóprogram, számológép, naptár, hexa editor, óra, esetleg hanglejátszó programok.
Az ablakok átfedhetik egymást, és szabadon áthelyezhetőek és átméretezhetőek lesznek. Ebből természetesen következik, hogy a rendszer saját kisalkalmazásai párhuzamosan (kvázi "multitaszk") fognak futni.

Az a régi terv már nem tartható, hogy a Gloria akár egy 1 MB memóriával rendelkező, ősrégi gépen is elfusson. De már nem is lenne értelme erre optimalizálni. Ilyen régi gépnek már a beszerzése sem egyszerű, főleg nem Magyarországon, ahol ezekben az időkben az IBM kompatibilis PC-k még nem voltak elterjedve. Napjainkban egy régóta kidobott, pince mélyén talált konfiguráció is legalább Pentium 1 kategória, minimum 8-32 MB memóriával, és olyan grafikus kártyával, amely a nagyobb felbontású VESA üzemmódokat is támogatja.

A rendszer elsősorban Free Pascal fejlesztőkörnyezetben, Pascal és Assembly nyelven, MS-DOS illetve FreeDOS alatt készül.

Felmerülhet sokakban a kérdés, hogy mi értelme 2016-ban egy ilyen, ma már szinte semmilyen felhasználói kör által nem igényelt szoftver készítése, mely ráadásul egy már alig használt, elavult operációs rendszeren fut. Hiszen a most felnövekvő generáció talán soha nem látott már parancssort.
A válaszom erre csak az lehet: a feladat szépségéért. Egy grafikus ablakkezelőt írni nem kis programozói kihívás. Egyébként magát az alapgondolatot, az ablakozó rendszert mindig is egy zseniális ötletnek, és megvalósításait programozástechnikai bravúrnak éreztem. Számtalan gépközeli (memóriakezelési, hardverprogramozási) nehézséget, buktatót kell megoldania annak, aki ilyen fába vágja a fejszéjét. És ez csak az út első szakasza, hiszen a grafikus driverek, az ablakkezelő és rajzoló algoritmusok elkészítése után a soron következő lépés a kiterjedt objektum-hierarchia megtervezése és megírása, az eseménykezelő megszervezése - és a tényleges GUI programozás csak ezután következik.
A cél tehát önmagában az alkotás szépsége, és az elvégzett munka felett érzett öröm. Olyasmi ez, mintha egy rádióamatőr épít egy saját (adó)vevőt, pedig lehet, képességei elmaradnak a gyári készülékektől, de mégis a saját munkája, ezáltal egyedi, és megtervezése, megépítése során szaktudása és elmélyül az adott területen.
Általában elmondható, hogy az élet, pontosabban inkább a technika több területén többen barkácsolgatnak, alkotnak hobbiból valamit, annak ellenére, hogy hasonló funkciójú termék a kereskedelemben is megvehető, sokkal korszerűbb és a gyakorlatban használhatóbb formában. De itt a "retro" feeling irányában érzett rokonszenven kívül a saját alkotás öröme a fő inspiráció.

A rendszer készítésének főbb lépcsőfokairól ezen az oldalon fogok írni, kicsit blog-szerűen. Ha pedig lesz már letölthető és kipróbálható változat (talán egyszer odáig is eljutunk), akkor azok szintén elérhetőek lesznek itt, (elképzelésem szerint) bővebb leírásokkal kísérve.