e-mail    Debatní kniha    Mapa stránek    Hlavní  
 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 32-bitový 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 z 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 32. bitový 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 32-bitový DOS-protekt. Tím pádem se otvírá téma DOSových extenderů. A sysmpatická 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



Pascal - hlavní
Překladače
Vlastní články
Převzaté články
Věci na stáhnutí
Odkazy k tématu
BP7 buglist
Chyba Run-time 200

BASIC