OS/2

                           OS/2 + PC/2 = happy user/2

              Toto   je  nativní  platforma  EMX,  tudíž  je  detailně
          rozpracována  co  se týče jak podpory OS/2, tak i vývojového
          prostředí.  Některé  utility  již byly zmíněny v úvodu, jako
          např.  Presentation  Manager  verze gdb, mezi dalšími můžeme
          uvést  například gcc zavaděč, který po jistou dobu ponechá v
          paměti gcc kompiler, aby se potom rychleji zaváděl - to může
          značně  urychlit  překlad  rozsáhlých  knihoven. Programy se
          většinou  píší  v  editoru EPM (free editor od IBM), emacsu,
          resp.  se  vyvinou  v  nějakém  více user-friendly IDE a pod
          emx/gcc se jenom přeloží, protože gcc/emx je znám jako jeden
          z  výpočetně  nejrychlejších  překladačů. Visual Development
          Tools pro emx jsou též dostupné.

              Při  překladu  je možné zvolit výsledný .exe soubor hned
          několika   způsoby.   Jednak   "nativní   emx",   vyžadující
          dynamickou  knihovnu emx.dll, ovšem s tou výhodou, že tentýž
          .exe lze spustit i pod DOSem či Windowsy, kde si automaticky
          natáhne  patřičný  extender. Dále je možné program slinkovat
          standardním  IBM linkerem LINK386 namísto GNU linkeru. Pokud
          chceme  zmenšit  velikost  výsledného  přeloženého  programu
          (anebo  ho  slinkujeme  emx  linkerem, ale nechceme, aby byl
          daný  program  používán  pod  DOSem),  můžeme využít podpory
          jádra  OS/2 pro zavádění a multitaskování komprimovaných exe
          souborů  a  přejet  ho  programem lxlite (kompresní poměr je
          většinou 1:2).

              Aplikace  pod  OS/2  mohou  být typu textové (windowed i
          full-screen),   workplace  shell  (WPS)  anebo  Presentation
          Manager,  včetně statických i dynamických DLL knihoven. Jsou
          k  dispozici  všechny  hlavičkové  soubory  OS/2  a je možné
          linkovat  a  volat  všechny  16ti i 32bitové funkce. Dále je
          možné  překládat  aplikace  pro  XFree86-OS2,  tj.  pro free
          X-Windows pro OS/2.

                                   DOS

                      Tatí! Co znamená FORMATING DRIVE C?

              V  DOSu  běhají  32bitové  emx  programy  pod extendery.
          Používají se dva: EMX, který zařizuje podporu protected mode
          sám,  a  RSX,  který  funguje jako DPMI klient. Ten první je
          menší  a  rychlejší,  RSX zase funguje v situacích, kde není
          možné  procesor  přepnout do supervisorského režimu pod DPMI
          serverem  (DOS  prompt v OS/2 anebo Windows, QEMM, Novell či
          jiný  DPMI  server).  Jejich  funkce  je  přibližně stejná a
          program   si  při  spuštění  sám  vybere  ten  správný.  EMX
          podporuje  VCPI,  XMS2.00 a pozdější, normální nebo fast A20
          gate, některé nestandardní obstarožní mainboardy a ramdisky,
          takže  by  s ním snad neměly být potíže. Umí využít veškerou
          dostupnou  fyzickou  pamět  a v případě nutnosti swapovat na
          disk.  Pokud  není  k dispozici koprocesor, pokusí se zavést
          přídavný  emulátor  koprocesoru  (emxfpemu).  Existuje  také
          rozšířená  verze  s  debuggerem.  Extender  je  navíc  možné
          zaintegrovat do .exe souboru (tzv. bounded executable).

              RSX  má  o něco méně práce, protože 32bitový DPMI server
          je  již  spuštěn. Přesto je RSX ze záhadných důvodů o celých
          50  KB  větší než EMX. Emulaci koprocesoru má zaintegrovanou
          do  samotného  extenderu  na rozdíl od debuggeru, o který se
          stará  zvláštní  program.  Funguje  spolehlivě pod OS/2 (dos
          box),  Windows,  cwsdpmi a qdpmi. Naopak mohou nastat potíže
          pod  Dosemu  a  pmode,  jelikož  oba  mají  pouze  částečnou
          implementaci  DPMI.  Dokumentace  také  říká, že funguje pod
          386max a umí spouštět Win32 console apps (aplikace pro Win95
          využívající   emulaci   terminálu).   Má  také  podporu  pro
          kompatibilitu  s  DJGPP 1.1. Podporuje dlouhé názvy u Win95.
          Pokud  není DPMI server k dispozici, umí nastartovat program
          jménem  CSX  (krycí  název  pro CWSDPMI) - oba jsou součástí
          distribuce  RSX.  Toto  řešení  je  však  o  něco pomalejší.
          Poslední    verze   také   obsahuje   experimentální   verzi
          scheduleru, takže funguje například i gcc -pipe.

              Rozhodl  jsem  se také udělat srovnání s DJGPP. Zajímala
          mě  rychlost  extenderů,  tedy jaké zpomalení přináší převod
          volání  EMX  jádra  na  volání  cílového operačního systému.
          Proto  jsem  udělal  jednoduchý  program,  který  má za úkol
          zaměstnat extendery a DOS tím, že 1000krát otevře soubor, po
          jednotlivých  bytech  tam  zapíše  100  nul a potom jej zase
          uzavře.

          +------------+-------------+-----------+-------------------+
          |DPMI server | čas v DJGPP | čas v EMX | použitý extender  |
          +------------+-------------+-----------+-------------------+
          |cwsdpmi     | 4.88        | 6.37      | rsx               |
          |pmode       | 2.91        | ----      |                   |
          |bez DPMI    | ----        | 3.52      | emx               |
          |Win DOS     | 6.04        | 6.15      | rsx               |
          |Windows     | ----        | 8.51      | rsxwin            |
          |QDPMI       | 6.81        | 9.78      | rsx               |
          +------------+-------------+-----------+-------------------+
                      Výstedky testu (časy jsou v sekundách)

              Z  testů  je  vidět,  že cena za extender je cca 24% pod
          DOSem.  To  není málo, ale na druhou stranu většina aplikací
          není  natolik  závislá  na  rychlosti  systémových voláních.
          Pokud    pracujete   se   soubory,   používáte   bufferovaný
          vstup/výstup  -  stdio.  Verze  programu pro stdio už trvala
          oběma pouze 0.66 sekundy. Zajímavé je, že nebuffrovaná verze
          byla  na BC výrazně rychlejší (2.86) - cena za protected mod
          je   minimálně   10%.  Stdio  (bufferovaná)  verze  už  byla
          pomalejší  (0.71)  -  cena  za  neoptimalizující  kompiler a
          špatně  napsané knihovny. Zajímavé také je, že Windows verze
          je  pomalejší  oproti DOSové běžící v DOS promptu. Zklamáním
          pro  mně  byla  také  rychlost  EMX  extenderu,  kterou jsem
          očekával  o něco lepší než u DPMI, protože implementace DPMI
          je  komplikovanější.  Pouze pro zajimavost: Pod Linuxem test
          trval 0.66 sekund a stdio verze pouze 0.25 sekund.

              EMX programy také potřebují o něco delší čas ke spuštění
          než  DJGPP programy, protože musí zavádět extender. Jedná se
          ale  pouze  o  několik  setin  sekundy, takže se to většinou
          neprojeví.

                                   Windows 3.1

            Pozor padá nápis:"Pozor padá nápis:"Pozor padá omítka!"!"!

              O podporu Windows 3.1 se stará extender rsxwin. Klasické
          textové  aplikace se tam startují v okně, které se objeví po
          prvním  použití  vstupně  výstupních  funkcí a vypadá trochu
          jako  okna  různých  telnetů pro Windows. Běžně zkompilované
          programy  pod  EMX  nezavádí  rsxwin  automaticky a je třeba
          použít  rsxwin jméno_programu, použít jiný zavaděč, programy
          startovat   z   okna  rsshellu  (to  je  jakýsi  command.com
          zkompilovaný  pod  EMX), nebo použít program rsxwlink, který
          umožňuje  vytvořit startovací program (nové .EXE), který sám
          nastartuje  rsxwin a navíc programu předá zvolené parametry.
          Pod  Windows95  rsxwin  také  podporuje  dlouhé názvy. Modul
          RSXIO.DLL umí emulovat textové výstupní funkce, včetně VT100
          escape sekvencí.

              Programy  jsou 32bitové, ale nepotřebují žádné rozšíření
          do  Windows (jako Win32) a používají 16ti bitové API. Pomocí
          balíku  jménem rsxwdk můžete vyvíjet i plnohodnotné Windowsí
          aplikace.  Je  možné  používat  DLL  knihoven, psát nové DLL
          knihovny  i  linkovat  aplikace  tak, že nepotřebují rsxwin.
          Potřebujete   k   tomu  ale  soubor  windows.h,  který  je k
          dispozici  ve  většině komerčních kompilerů. Jeho freewarový
          přepis  je  obsažen  ve Wine (Windows emulator pro UNIX) ale
          nemusí  být  100%  spolehlivý.  Navíc  potřebujete  resource
          compiler.  GNU  resource compiler je obsažen v novější verzi
          tohoto  balíku pro Win32. Nevím, jestli je použitelný i zde.
          Volání 16ti bitových funkcí Windows je poněkud komplikované,
          protože   je  nutné  převádět  ukazatele  a  formát  dat  na
          zásobníku  je  odlišný.  Toho  se  dociluje  pomocí několika
          maker.  Pro  hlavní funkce (z user.exe, gdi.exe, kernel.exe,
          sound.drv  a  keyboard.drv)  jsou  udělány  knihovní funkce.
          Stejným způsobem je ale možné přidat další.

              Vlastní  WDK  není  úplně  free.  Pokud  chcete vytvářet
          komerční  programy,  je  nutné jej za 55 registrovat. To je
          stále ale méně než cena většiny komerčních překladačů.

                                     Win32

           Ale ne Bille, to není XT, jenom jsme testovali Windows NT

              Tento  port  vychází z portu pro Windows3.1, proto o něm
          platí   většina  toho,  co  jsem  napsal  v  předcházejících
          odstavcích.  Balík  se  jmenuje  RSXNT,  je  o  něco větší a
          obsahuje  navíc  například  i  jednoduché  IDE nebo resource
          compiler. Stále jsou ale třeba headery z WinSDK (nebo Wine).
          Používá  se tu extender jménem rsxwin32. Také existuje verze
          RSXNTDJ, kterou je možné použít s DJGPP.


            výheň