Různé programy psané v Pascalu

Kalkulátory, editory, jednoúčelové utilitky na zpracování souborů, hlavolamy a podobně. Prostě všechno, co se nevejde do škatulek "jednotky" a "hry".

Editory

ZIP AlmostCAD 2007 - editor na vektorové obrázky (*.MAC) pro jednotku UMAC 3. Běží v 800x600 s kreslicí plochou 640x480, ale vizuální rozměry obrázku jsou omezeny prakticky jen rozsahem typu integer použitým na souřadnice. Formát MAC neobsahuje paletu, načíst ji můžete z externího souboru (*.PAL, viz program PaTvor 2) buď v dialogovém okně, nebo ho zadat jako druhý parametr programu (první parametr určuje MAC soubor k otevření, oba parametry jsou nepovinné). GIF Fotka zde.

ZIP Editor na fonty - na tvorbu a editaci jednobarevných neproporcionálních rastrových fontů *.FNT pro jednotku VESA. Balík obsahuje i několik hotových fontů.
Na konverzi standardních CHR fontů do FNT jsem napsal ZIP tenhle progámek. Nic extra, ale základní tvary fontu celkem vystihne. Rastrový Defaultfont načte přesně a bez problémů, u vektorových počítejte s několika pokusy na nastavení parametrů převodu a následnou ruční úpravou v editoru.

ZIP Kurnik - program na tvorbu a úpravy kurzorů pro jednotku Myš 4 (*.KUR). Pár kurzorů je u něj přibaleno.

ZIP Kompilátor definic kláves pro jednotku Klavesy2 - protože datlovat ASCIIkódy přes konstanty by bylo moc pracné a pro uživatele bez TP nepoužitelné, vytvořil jsem na to jednoduchý pseudojazyk, který pak tenhle program přeloží do formátu, jaký zmíněná jednotka potřebuje. Popis syntaxe je uveden na začátku souboru KOMPKLAV.PAS, přiloženo je i pár ukázkových souborů a samozřejmě spustitelný EXE.

ZIP PaTvor 2 - editor na 256barevné palety pro jednotku Paleta 2 (*.PAL). Umožňuje u každé barvy přímo měnit jednotlivé složky (červenou, zelenou a modrou), vytvářet plynulé přechody (gradienty) mezi barvami a hledat duplicity.

ZIP PGFE - editor barevných proporcionálních rastrových fontů *.DAT pro hru Panzer General. Původně zamýšlený jako jednoúčelovka pro potřeby překládání PG do češtiny, ale stačí upravit ukládání, načítání a barevnou paletu a půjde využít i na jiné formáty. Uživatelské rozhraní je na moje poměry docela propracované, poprvé jsem ve velkém využil grafická tlačítka a dynamické přepínání jazyků. ZIPZdrojáky zde (234 kB, komplet včetně jednotek a pomocných souborů), GIF fotka1, GIF fotka2.

U všech výše uvedených editorů se dá zadat jméno upravovaného souboru jako parametr programu, takže si třeba můžete příslušnou koncovku asociovat s editorem a datové soubory pak ve Windows otevírat dvojklikem.

ZIP PaTvor - starší editor na 16barevné palety pro jednotku Paleta. Načítá a ukládá přímo z a do zdrojového kódu (*.PAS).

Utilitky pro práci se soubory

ZIP SAKS neboli Skládač A Konvertor Souborů. Určený je především pro textové soubory (hlavním cílem bylo automatizovat vkládání hlaviček a meníček do webových stránek), ale zvládne i binárky. Pracuje podle skriptu zadaného přes parametr a na jedno spuštění může zpracovat neomezené množství vstupů i výstupů. Navíc umí v souborech nahrazovat určité kódy zadanými hodnotami a zobrazovat nebo vynechávat vybrané části textu.

ZIP Porovnávač textových souborů - program, který řádek po řádku projde dva soubory a vypíše, čím se navzájem liší: které řádky přibyly, které ubyly, kde se jenom změnilo odsazení a kde došlo k úpravám textu. Navíc kolem každé nalezené změny vypíše i několik okolních řádků, aby se ve výpisu lépe orientovalo. Celkem užitečná věcička vhodná (a primárně určená) především pro porovnávání zdrojových kódů.
Program neobsahuje žádné interaktivní dialogy, ovládá se z příkazového řádku. V zipu najdete českou a anglickou verzi.

ZIP Převaděč BMP - program na převod souborů typu BMP z truecolor (24 bitů na pixel) do 256 nebo 16 barev (8 nebo 4 b/px). Funguje jenom na takové obrázky, které neobsahují víc různých barev než kolik se vejde do cílové palety. Výhodou je, že barvy zachová přesně a beze změny. Také umí převzít paletu z jiného obrázku nebo odfiltrovat pixely s RGB jinými než 0 nebo 255. Ovládá se přes parametry, takže jde integrovat do Windows.
Všechny grafické editory, které jsem kdy vyzkoušel, si při zmenšování bitové hloubky barvy nespočítají a vždycky rozjedou algoritmy na tvorbu palety, které všechny barvy trochu změní a zmenší jejich počet víc, než by bylo nutné. A právě proto jsem si napsal tenhle jednoúčelový prográmek.

ZIP Ořezávač BMP - další jednoúčelová utilitka na úpravy souborů typu BMP. V konfiguračním souboru si nastavíte, o kolik pixelů na kterých stranách chcete obrázky ořezávat, přes parametr zadáte soubor a spustíte. Program může oříznout buď jeden obrázek, nebo všechny, které v daném adresáři najde. Jako vstup bere pouze BMP v 24 bpp (truecolor). Oříznuté obrázky ještě navíc převádí do 16 barev (podobně jako předchozí prográmek). Jak tak koukám, zapomněl jsem to ve vysvětlivkách popsat, takže je to nedokumentovaná vlastnost :-).
Program byl původně určen k hromadnému ořezávání okrajů oken na screenshotech emulátoru terminálu 3270, kterých jsem do jedné prezentace potřeboval strašně moc, a ušetřil mi velkou spoustu práce.

ZIP Recoder - prográmek pro převod kódování české diakritiky v textových souborech (Latin 2, Windows 1250, ISO 8859-2 a další). Využívá funkce z jednotky Řetězce (viz sekci Unitky). Převádí POUZE písmena s českou diakritikou, nic jiného.

ZIP Měnič formátu konce řádků - dva prográmky na převod textových souborů z unixovského formátu LF nebo macovského CR na dosovský CRLF a naopak. Soubor se dá zadat buď v dialogu nebo jako parametr (takže si pak třeba můžeme v typech souborů ve Windows nadefinovat pro textové soubory akci "převést na CRLF").

ZIP Skládač - starší program na skládání souborů, určený především pro binární data. Je jednodušší než SAKS (neumí v souborech nic upravovat a má jenom jeden výstup), jediná výhoda je v tom, že umí vypsat pozice (ofsety), na které se jednotlivé soubory dostaly.

ZIP Řezník - program, který naopak umí rozkrájet soubor na libovolně malé kousky. Vstupní soubor a požadovanou velikost kousků zadáte buď jako parametry nebo z klávesnice. Výše uvedeným Skládačem můžete nakouskovaný soubor případně opět složit do původní podoby.
Vhodné např. pro přenos velkých souborů po disketách nebo po nekvalitní síti, když není po ruce vhodný archivátor nebo když potřebujeme nějakou nestandardní velikost.

ZIP Kill Read-Only! - když tenhle program spustíte, zruší všem souborům ve všech podadresářích od jeho aktuálního umístění atribut "jen pro čtení" (soubory ve stejném adresáři jako on ovlivněny nebudou). Zip obsahuje spustitelný exáč (pozor, na nic se neptá a rovnou pracuje) a až trapně krátký zdroják (všechno podstatné je v jednotce Disk).

ZIP Slideshow - miniaturní program pro postupné zobrazování obrázků ve formátu PCX v SVGA rozlišení, vhodný pro různé prezentace apod.. Úspěšně otestován při obhajobě diplomky :-). Návod k použití je uveden ve zdrojáku.

PAS Prohlížeč obrázků - do třetice všeho jednoúčelového :-). Zalíbil se mi grafický formát CUT, který ovšem má jednu drobnou nevýhodu: jediný editor, který ho zvládá, je Paintshop. Ten je sice dobrý na úpravy jednotlivých obrázků, ale na rychlé procházení a prohlížení hromad sprajtů je nepoužitelný. Tak jsem si napsal tohle. Jméno obrázku se mu zadá přes parametr a on ho zobrazí a umožní procházet mezi dalšími obrázky ve stejném adresáři, podobně jako třeba IrfanView. Umí formáty CUT, PCX, BMP a ORF a prochází vždycky jenom ty koncovky, jakou měl ten vybraný obrázek.
Prográmek jsem psal dost prasácky na míru svému prostředí, takže si budete muset zdroják napřed trochu přizpůsobit. Proto ani nepřikládám zkompilovaný EXE. Jo, a ještě budete potřebovat font MSDFLT.FNT - stáhnout se dá s výše uvedeným editorem fontů nebo s jednotkou Woknows.

Matematika a geometrie

ZIP Grafák - program na kreslení grafů funkcí jedné nebo dvou proměnných (3D plochy kreslí v izometrické projekci) a hledání nulových bodů funkcí jedné proměnné (sháníte program na vyřešení nějaké odporně složité rovnice typu f(x)=0? Právě jste ho našli). Běží v rozlišení 800x600, mluví česky a anglicky (vybírá se to při prvním spuštění) a úrovní dokumentace by měl vyhovovat i základoškolákům bez znalosti programování. Fotky jsou GIF tady a GIF tady.

ZIP Mandelbrouk - zase jeden zobrazovač Mandelbrotovy množiny. Zajímavý je tím, že vykresluje ve čtyřech krocích a postupně zjemňuje rozlišení, takže přibližné tvary vidíme prakticky hned a i na pomalejších počítačích si tak můžeme zoomovat relativně rychle. Navíc se v něm dá za chodu míchat paleta z červené, zelené a modré sinusovky.
Běží v 256barevném rozlišení 640x480 (nebo jiném, když si to ve zdrojáku přepíšete) a ovládá se myší a klávesnicí (nápověda je na začátku a pak už ne, tak si ji dobře zapamatujte). Veškerá použitá teorie je popsaná ve zdrojáku.

ZIP Izometrie - víceméně úspěšný pokus o izometrické zobrazení stínovaného kopcovitého terénu. Jde jenom o technologické demíčko, praktické využití zatím neplánuji. Obsah: jedna procedurka pro generování krajiny a jedna pro vykreslení políčka. Ovládání: Escape končí, všechny ostatní klávesy vytvářejí náhodně umístěné kopce. 800x600, VESA.

ZIP Langtonův mravenec - malé demíčko na téma deterministického chaosu. Máme přísně deterministický matematický model "světa" kompletně popsaný dvěma jednoduchými pravidly, takže chaos v něm teoreticky nemá jak vzniknout. Skutečnost je ovšem poněkud jiná...
Program běží ve VGA grafice (rozlišení 320x200).

Následuje sbírka modelářských kalkulátorů. K prvním dvěma existuje samostatná windowsovská verze (v sekci Od vás), zbylé tři obsahují exáče pro DOS i Windows.

ZIP KuželMaker - prográmek na výpočty rozvinů plášťů komolých kuželů. Zadejte požadovanou výšku a průměry podstav kužele a on vypočítá potřebný tvar rozvinu pláště, který pak stačí narýsovat na papír, vystřihnout a slepit.

ZIP Cool Wheels - vlastně jenom rozšíření předchozího: počítá rozviny plastických boků pneumatik.

ZIP Válcořez - prográmek pro rozvinutí válce šikmo seříznutého rovinou. Výstupem je tabulka bodů, podle které si rozvinutý plášť narýsujete.

ZIP Průnikátor - rozvinutí pláště válce protnutého jiným válcem v obecné poloze. Narozdíl od tří předchozích exportuje výsledek přímo do tisknutelného obrázku typu BMP, kromě toho si také pamatuje minule zadané hodnoty.

ZIP Moták - a poslední počítadlo, které řekne, jak dlouhý proužek papíru budete potřebovat, aby po namotání na trn vytvořil váleček o daném průměru.

Ostatní

ZIP Ovládací rozhraní pro sériový port - jednoduchý prográmek, který zobrazuje stav přímo čitelných vstupních linek portu (DCD, DSR, CTS a RI) a umožňuje ručně přepínat výstupní linky (TXD, DTR a RTS). Nevyužívá sériovou komunikaci, pracuje jenom s okamžitými logickými hodnotami na drátech. Vhodný pro řízení různých elektronických udělátek (diody, relátka, měřicí obvody apod.) a jako základ pro složitější programy - celou řadu jich najdete v elektrotechnické sekci.

PAS Sériový port podruhé - tenhle prográmek umí skoro totéž co předchozí (kromě přímého přepínání TXD) a navíc i sériovou komunikaci: přijatá data z RXD vypisuje na obrazovku a texty zadané z klávesnice odesílá na TXD. Moc jsem se s ním nepáral, takže číslo portu, parametry komunikace a formát výstupů jsou nakódované natvrdo ve zdrojáku - před spuštěním si je upravte podle potřeby.

ZIP Seřizovač hodin - pokud vám hodiny v počítači jdou "podle plotu" a nemáte možnost synchronizovat je přes internet, můžete odchylky kompenzovat touhle utilitkou. O kolik vteřin za kolik dnů se vaše hodiny předbíhají nebo zpožďují je jediná věc, kterou musíte změřit a zadat ručně, dál už všechno pracuje automaticky.

ZIP TXTCAP - rezidentní program pro DOS na ukládání screenshotů v textovém režimu. Největší problém je nereentrantní int 21h, kvůli kterému rezidenty nemohou normálně pracovat se soubory. Zkoušel jsem využít nedokumentované přerušení int 28h "DOS idle" (neúspěšně, vůbec se nevolá) nebo pověsit na int 21h něco, co by mi hlásilo, kdy je bezpečné ho z rezidentu zavolat (taky neúspěšně, int 21h nejde přesměrovat). Nakonec jsem problém obešel tak, že obrazovky ukládám jenom do paměti a zápis na disk nechávám na jiném programu.
Pozn.: jde o experimentální výtvor bez záruky stability, jediným cílem bylo ten proces vůbec nějak rozchodit. Námětům na vylepšení se nebráním.

ZIP Sudoku - program na řešení sudoku. Používá vylučovací metodu a když ta selže, tak i pokus/omyl. Zatím jsem nenarazil na žádného sudoka, kterého by nedokázal vyluštit.

ZIP Nurikabe - program na řešení vybarvovacích hlavolamů nurikabe: několik nevybarvených "ostrůvků" o dané velikosti v souvislém vybarveném "moři", cílem je přijít na jejich tvar. Opakovaně zkouší několik různých taktik tak dlouho, dokud hlavolam nevyřeší nebo dokud všechny neselžou (druhá možnost nastává poměrně často, protože program nezvládá žádné složitější logické úvahy).

ZIP Osm královen - když už jsme u těch hlavolamů... Tenhle prográmek rozmístí osm královen na jednu šachovnici, aniž by se navzájem ohrožovaly. Algoritmus je jednoduchá hrubá síla.

ZIP Hlídač - jednoduchý prográmek zaznamenávající do souboru aktuální datum a čas. Když se nechá volat z Autoexec.bat, může sloužit ke sledování spouštění počítače.

ZIP Obrázek klávesnice. Občas je potřeba nakreslit na obrazovce klávesnici a třeba ještě některé klávesy barevně zvýraznit (např. když chceme uživateli názorně předvést, čím se něco ovládá). Technicky nic složitého, jenom spousta mravenčí práce, kterou si stažením tohoto souboru můžete ušetřit. Balík obsahuje dva programy: jeden z ručně naťukaných konstant vyrobí soubor s parametry kláves, druhý ho načte a všechno zobrazí.
Jsou potřeba jednotky VESA a Klávesy (nebo si grafické příkazy přizpůsobte jednotce, kterou zrovna používáte).

ZIP Matrix monitor - textové demíčko. Po obrazovce se shora dolů plazí zelené sloupečky náhodných znaků - prostě kódovaný výstup z Matrixu, všichni to známe, ne? Použil jsem tu mimo jiné manipulaci s paletou (pro postupné mizení zobrazených znaků) a přímý zápis do videopaměti.

PAS Ordtest - sice poněkud historický, ale stále užitečný prográmek na výpis ordinálních čísel ASCII tabulky a čtení kódů kláves.

Zbytky a trosky

ZIP Eddie 7.4 - editor na rastrové obrázky. Obsahuje nástroje tužka, štětec, sprej, plechovka, kopírování výřezu, text, čára, elipsa, obdélník, zoom a další. Načítá a ukládá do a z mého neoficiálního formátu *.OBR, který už nikde nepoužívám a nepodporuji, ale teoreticky není problém příslušné procedury přepsat.
Nechávám ho tu jen tak pro zajímavost. Časem možná napíšu něco lepšího.

ZIP Turbopad (jakž takž funkční alfa verze, neručím za něj) - rozpracovaný superrychlý textovo-grafický editor. Šlo mi o vytvoření něčeho, v čem by se daly dostatečně rychle a pohodlně psát poznámky ve škole. Funkční základ je hotový, ale chybí spousta dost zásadních věcí, např. editace napsaného textu nebo řecká abeceda a matematické symboly. Jak to funguje? Vtip je v kurzoru, který funguje zároveň jako myší i jako textový. Kam umístíte myš, tam píšete a kurzor se normálně posouvá. Enter ho hodí pod začátek předchozího řádku, End na konec posledního napsaného (odkudkoli), šipky nahoru a dolů nastavují úroveň horního nebo dolního indexu (šipka doprava pak všechny indexy ruší), Backspace, Delete a šipky vlevo a vpravo fungují při psaní jako obvykle, ale jen v rámci jednoho řádku. Kreslí se kliknutím levým myšítkem (tím se od kurzoru začne táhnout čára) a ukončí se pravým myšítkem (tím se zadá poslední bod čáry). Ukládá se dost zvláštním způsobem - co stránka, to soubor, a co sešit, to adresář. Z použitého formátu dat se časem vyvinul MAC, se kterým pracuje AlmostCAD. Program jede ve standardní BGI grafice (Graph).
Na GIF fotce vidíte část zápisků z jedné přednášky (musel jsem zmenšit rozlišení, aby to printscreen zvládnul, proto je napsaný text trochu ořezaný).
Zajímavé triky: integrování dvou BGI ovladačů a možnost nastavení rozlišení za chodu. Zbytek už je "jenom" piplačka.

Reklamy: