CWSDPMI a PMODE -=-=-=-=-=-=-=-=- The nice thing about standards is that there are so many of them to choose from. -- Andrew S. Tanenbaum Abych shrnul poznatky z předchozích odtavců. Pokud chcete mít program v protected módu, musíte zvládnout jeho inicializaci, V86 režim, VCPI a DPMI. To je důvod, proč bežně vznikaji extendery, což jsou externí programy, které se postarají o nastartování protected módu a spuštění 32 bitové aplikace. Ve Watcomu to je Dos4GW, v EMX/GCC to je EMX a RSX, ve starém DJGPP to bylo go32 apod. V DJGPP v2 se rozhodli to udělat jinak. Programy kompilované pod DJGPP jsou proste DPMI clienty. Používají DPMI jako "extender". V případě, že používáte Windows, nebo Qemm s DPMI, není tedy třeba žádný externí program. V případě, že DPMI server neběží, program se pokusí spustit externí program (cwsdpmi). Teprve v případě, že to nejde napíše hlášku o tom, že potřebuje DPMI a zkončí. Protože běžný extender musí běžet pod DPMI a může tedy obsahovat pouze podmnožinu jeho služeb, zdá se mi to jako dobré řešení. CWSDPMI je velmi kvalitní implementace DPMI - běží téměř všude, je relativně krátké (20KB) a umí velké množství DPMI volání. Neemuluje vůbec 16ti bitové DPMI, to ale v případě DJGPP není třeba. Důležitá věc je, že nesmíte zapomenout přibalit CWSDPMI ke všem programům. Je možné ještě použít mezi Watcomisty velmi rozšířeny tranův pmode. Ten je ještě kratší a o něco málo ryclejší. Existuje také utilitka, co ho přidá přímo do EXE souboru a proto ho hodně lidí používá. Neemuluje ale celé DPMI, je poměrně nesnášenlivý a neumí swapovat na disk. Proto ho nedoporučuju. Vlastní distribuce CWSDPMI obsahuje ještě dva programy. Prvním je CWSDPR0. Pokud použijete tento DPMI server, program běží v privilegovaném módu, proto je možné například použít pentiácké časovací instrukce. Ale pro běžné použití to je kničemu. Nemůže swapovat na disk, neodpovídá přesně DPMI specifikaci apod. Druhým programem je CWSPARAM. Ten umožňuje nastavit mnoho užitečných věcí. Jako první je cesta k swapovacímu souboru. Běžně se swapuje na c:, ale hodně lidí to potřebuje přenastavit. Další důležítá věc je položka "Minimum application memory desired before 640K paging". Běžně totiž DPMI programy vůbec nepoužívají paměť pod 640KB. Hodně lidí ale má přes téměř celou extendedku cache apod. Tato položka určuje minimální velikost XMS, kdy se ještě dolní paměť nepoužije. Pokud Váš program nepoužívá moc DOSácké paměti (nevolá nějaké DOSové utilitky apod.) Je dobré tuto hodnotu nastavit na to, kolik paměti potřebuje Váš program. Další položka určuje kolik paměti se má nechat pro DOS v případě, že se začne dolní paměť používat. Pokud nepoužíváte DMA, soubory atd., je možné tuto hodnotu nastavit dokonce na 0. Tento program spolu s dokumentací k CWSDPMI je take dobré přibalit k Vašemu programu. výheň