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ň