int21h
Překladače pascalu
Když se řekne pascal, tak se každému v prvé řadě vybaví
Turbo pascal od firmy
Borland. Na rozdíl od takového C, je tato firma jeho téměř jediný vývojář.
Použil jsem přítomný čas, protože i když už nevydávají přímo pascal, ale nahradili ho vývojovými prostředí Delphi a Kylix, tak jazyk jako takový nadále nazývají
Object pascal.
Je to náš známý turbo pascal rozšířenou syntaxí objektového programování.
Za neoficiální normu tohoto jazyka je mezi programátory považována poslední DOSová verze Turbo pascal 7(TP7) či Borland pascal 7(BP7).
TP7 je osekaná a levnější verze BP7. TP7 vytváří pouze DOSové programy pro reálný režim. BP7 překládá pro tři prostředí: reálný režim DOS, chráněný 16-bitový režim DOS a 16-bitové programy pro windows. A myslím, že knihovna
Turbo vision je jenom v BP.
Abych nepsal jenom jalový cinty, tak tady máte odkaz na ROZŠÍŘENOU VERZI
Borland pascalu 7 včetně zdrojových kódů všech unitů.
Odkazy na jednotlivé archívy jsou vespodu stránky pod obrázky s disketami. Celkem zabírají asi 14MB.
Napsal jsem, že toto je poslední verze pascalu od firmy Borland, která vytváří DOSové programy. Vlastně to není úplně pravda. DOSové aplikace umí totiž tvořit i Delphi 1.
Nedělám si srandu. Skoro nikdo to neví, ale Delphi 1 mají nedokumentované přepínače pro překlad do DOS-real i DOS-protekt (protekt=chráněný režim).
Tak jednoduché to ale není. To totiž nic nemění na tom, že Delphi 1 nemají žádné DOSové unity. Dokonce ani jednotku
System. Nicméně, pokud máte zdrojové kódy těchto jednotek, což díky odkazu výše máte, tak je můžete v Delphi přeložit a získáte tak Borland pascal 8. Když na tom zamakáte ještě trochu více, tak se vám povedou pro DOS přeložit i delphácké jednotky
SysUtils, Classes a
TypInfo. Celý postup je popsán (anglicky)
zde.
Další verze Delphi už žádné nedokumentované přepínače nemají :-(
Nicméně i přes to s nimi lze tvořit DOSové programy pro 32bitový chráněný režim. Věřte nebo ne, ale Delphi lze modifikovat (vlastně hacknout) tak, aby vytvářely DOSovou hlavičku EXE a místo windowsích jednotek používaly DOSové. A toto patchnutí je dokonce mnohem jednodušší než pro Delphi 1, protože skupina vývojářů pro to vytvořila specializovaný nástroj. V poslední době jim nějak blbne hlavní stránka jejich serveru, tak tam lezte
tudy. Bohužel tu, zdá se, neodkazují na nejnovější verzi balíku. Ten si raději stáhněte ze
Sourceforge
Nejlepší na tom je, že nadále pracujete v prostředí Delphi, programujete vizuálně, malujete tlačítka a okénka (děláte přesně to, o čem v INT21h nepíšeme), pak přeložíte program a Delphi vygenerují DOSovou aplikaci se všemi udělátky, která jste zadefinovali. Sice to nevypadá úplně stejně, neboť aplikace běží v textovém režimu a vypadá jako kdyby byla napsána pomocí Turbo vision, ale přesto to je jako zázrak.
Tyto modifikace jsou nesmírně zajímavé, ale tím jak se o nich tak strašně málo ví, tak neseženete nikoho, kdo by vám mohl poradit. Neexistují přídavné knihovny, nemáte na míru dělané zdrojáky, ze kterých byste se mohli učit.
Proto si povíme o jiných překladačích pascalu se silnějším zázemím.
Budeme se věnovat těmto třem:
Virtual pascal(VP), TMT pascal(TMT) a Free pascal(FP)
Všechny tři překládají pro 32bitový chráněný režim. Navzájem se liší množstvím podporovaných rozšíření dialektu
Object pascalu, zapracováním assembleru a ošetřením DOSově specifických záležitostí jako je správa konvenční paměti, práce s přerušeními a podobně. Pokud se ve zdrojovém kódu vyskytuje assembler nebo tyto dosařiny, tak ho bez úpravy patrně nepřenesete. Musíte udělat různé ruční změny, což může být v některých případech banální, jindy dost pracné.
Virtual pascal
V "surovém stavu" překládá jenom pro windows a pro OS/2. Naštěstí pro něj existuje rozšíření, které přidává platformu DOS-protekt.
Instalace tohoto rozšíření je podivuhodně bezproblémová a nová platforma se krásně integruje do IDE. Bohužel samotné vývojové prostředí, ač vypadá stejně jako IDE BP7, je pro windows. Během programování tedy budete muset holt být ve windows, ovšem vytvořené EXE jsou plnohodnotné DOSové programy.
Budete tedy moci tvořit aplikace pro 32bitový DOS-protekt. Tím pádem se otvírá téma DOSových extenderů. A sympatická vlastnost VP je, že si můžete vybrat snad z deseti. Namátkou DOS4GW, WDOSX, DOS32a, PMODE a další.
Virtual pascal je vynikající a vyzrálý produkt s kvalitním IDE. Překlad je skoro stejně rychlý jako u TP a generované programy mají rozumnou velikost a snad i dosti kvalitní kód. Překladač samotný je psaný hlavně v assembleru (proto je tak rychlý). To je bohužel taky důvod, proč už není dále vyvíjen. Údržba assemblerových programů je totiž obtížná a je svízelné přidávat nové vlastnosti nebo nedejbože udělat rozsáhlejší přepis.
TMT pascal
...je kontroverzní překladač. V současné době (červen 2006) se distribuje ve dvou verzích:
TMT pascal 5.00 multitarget
a starší
TMT 3.90 Lite for DOS. U multitarget verze je pro mě těžko skousnutelným aspektem cena: činí 349 dolarů a to je opravdu pálka.
Lite verze je zdarma a je to velmi slušný překladač. Jeho problém v současnosti ale je velice slabá podpora jak ze strany
TMT corporation, tak i nezávislých vývojářů. Dříve byl dost oblíbený u ruských programátorů, ale i ti už přešli k jiným překladačům.
Uživatelské rozhraní má Lite verze více jak mizerné - horší než normální Edit. Můžete ho ale nahradit třeba editorem
SetEdit. Multitarget má windowsové a prý pěkné.
Kvalita kódu je slušná, TMT podporuje instrukční sady 386, MMX, 3Dnow! i SSE a ve verzi 5.00 se pouští i do vyšších optimalizací.
Během psaní tohoto článku jsem se podíval na stránky TMT a koukám, že odstranili odkaz na stažení verze 3.90 - už je to jenom pro školy či co...
Nic si z toho nedělejte, můžete si ho stáhnout
tady.
Free pascal
Nevím, jestli platí, že nejlepší jsem nechal na konec. Každopádně tento překladač znám zdaleka nejlépe a je to můj "domovský" pascal. Free pascal má silné zázemí mezi programátory, má otevřený kód a je v intenzivním vývoji.
Existuje na spoustu platforem - nás (mě) ale zajímá DOS. Jak je to s ním? DOS je podporovaný hned dvakrát. Buďto skrze extender CWSDPMI nebo prostřednictvím verze pro OS/2. Verze pro OS/2 je totiž založena na prostředí EMX/RSX, které kromě OS/2 funguje i v DOSu.
EMX verze ale není příliš vhodná pro některé programy - třeba pro hry. Podpora DOSu je zde totiž jenom jako takový přívěsek a hlavně to není dobře zdokumentováno. Zaměřme se raději na opravdovou DOSovou verzi.
Ještě si ujasněme, že Free pascal podporuje "křížovou kompilaci". Verzí FP pro jednu platformu můžete překládat programy pro jinou platformu. Např. DOSovou verzí můžete dělat windowsové a snad i linuxové programy.
V současnosti jsou k dispozici stabilní verze
2.0.2 a vývojové 2.0.3 a 2.1.1 Také jdou ale stáhnout starší verze řady 1.0.x Poslední jedničková je verze
1.0.10
Proč se tak obšírně zmiňuji o verzích?
Protože FP 1.0.10 je stabilní a předvídatelný překladač. Je v něm sice pár bugů a omezení, ale ty jsou známé a tudíž neškodné. Přechodem na dvojkovou řadu byl celý kompilátor v podstatě přepsán, a teď trpí řadou dětských chyb. Nejhůř to odneslo prostředí Turbo vision a tudíž i vývojové prostředí.
S IDE 2.0.2 se nemá smysl vůbec trápit, použijte místo něho SetEdit.
Free pascal 2.0.2 je totiž napsán ve Free pascalu 2.0.2. A podpora DOSu se postupně utlumuje... Zná prakticky všechna rozšíření Object pascalu, umí solidně optimalizovat kód, ale překládá dost pomalu. Těžko přijatelné pro mě také je, že se změnil způsob volání funkcí.
V praxi to znamená, že assemblerové procedury z verze 1.0.10 nebudou fungovat ve 2.0.2. Teoreticky sice verze 2.0.2 podporuje direktivu kompilátoru
{$calling oldfpccall}, po které by se měl assembler chovat stejně jako v jedničkové řadě, leč není tomu tak :-(
Zkrátka a dobře, já jsem zůstal u 1.0.10 a totéž zatím radím i vám.
Pro všechny mé zdrojáky pro FP na INT21h proto platí, že jsou odzkoušeny ve FP 1.0.10 (pokud není uvedeno jinak)
Free pascalu se samostatně chci věnovat v jiném článku. Tohle je jenom přehled kompilátorů.
Verzi 2.0.2 si stáhněte
zde.
A verzi 1.0.10
tady.
Ještě existují další pascaly (dosti známý je třeba GNU pascal) s velmi rozdílnou kvalitou.
Na této stránce je ke
stažení mnoho různých překladačů včetně všech verzí Turbo pascalu. Dokonce i
Turbo pascal 1.0 nebo
Microsoft quick pascal 1.0