Portál AbcLinuxu, 25. dubna 2024 18:50

Dosemu - II

7. 1. 2003 | Jan Marek
Články - Dosemu - II  

Instalace a konfigurace emulátoru DOSu. Čeština v účetnictví. Tisk.

Ačkoliv jsem nepočítal s tím, že budu psát seriál, byl jsem překvapen reakcemi a nakonec se mi sešlo několik témat, která jsem se rozhodl zpracovat do pokračování (první díl: České prostředí v okně xdosemu). Takže dnes se podíváme jednak na instalaci (x)dosemu a jeho konfigurační soubor a dále na tisk z aplikací provozovaných pod (x)dosemu.

Co je dosemu

Dosemu je program, který v rámci Linuxu připraví prostředí pro běh DOSových programů. Dnes dosemu umožňuje mapování klávesnice a různé znakové sady pro zobrazování na konzoli v X Window okně, ale také běh grafických programů (zejména her) jak v X Window, tak na textové konzoli, kterou umí přepnout do grafického režimu. Já sám tuto aplikaci používám pro provoz Abry (potažmo FoxPro prostředí), ale mám zprávy, že pod dosemu v prostředí konzoly jel graficky např. Wolfenstein3D, v dokumentaci se dočtete, že je možný běh Doomu, takže se zdá, že je toto prostředí opravdu univerzální. V dosemu.conf najdete i volby, které by měly zpřístupnit síť Novell. Tuto vlastnost jsem však nezkoušel, proto o ní nepíšu. Než se začnete těšit na běh svého oblíbeného programu pro DOS pod dosemu, prohlédněte si soubor EMUfailure.txt, kde najdete příklady programů s dosemu nespolupracující a také příčiny jejich nespolupráce. Stejně nakonec nezbude, než to prvně zkusit a pak se radovat ;-).

Instalace dosemu

Instalace dosemu se skládá ze dvou částí: jednak z instalace jakéhosi 'runtime', což je samotný balíček dosemu z vaší oblíbené distribuce. Do tohoto prostředí je však nutné doinstalovat ještě DOS. A zde máme na výběr ze tří variant:

  1. MS DOS: budeme k němu (asi) potřebovat licenci, avšak pokud jej vyhrabete někde z hromady starých (a možná i 5 1/4" palcových, ke kterým budete ještě muset sehnat mechaniku) disket (samozřejmě vč. licence), tak to bude asi dobrá volba...
  2. DrDOS aka OpenDOS, aka CalderaDOS: licence zní, že pro nekomerční použití je zdarma, pro komerční použití je zdarma 90 dní a pak je nutno zakoupit licenci. Více informací (včetně stahnutelných obrazů disket) najdete na www.drdos.org, www.drdos.com a www.drdos.net.
  3. FreeDOS: Tento DOS je zdarma a k nalezení na adrese www.freedos.org.

Alternativně lze pro provoz DOSu pod dosemu použít funkční starý harddisk, na kterém byl DOS nainstalován: pak je třeba akorát tento disk připojit do systému a vědět, na kterém oddílu (partition) je funkční DOS. Pro tento účel lze též použít DOS z (např.) Win95, kdy je ale nutné zaručit, že bude startovat pouze do DOSu a také bez úvodních grafických obrazovek. To se dá zařídit v souboru msdos.sys, kde do sekce [Options] zapíšeme tyto direktivy:

Logo=0
BootGUI=0

Pokud tato sekce v daném souboru neexistuje, pak ji samozřejmě vytvoříme.

Ještě poznámka k výběru samotného DOSu: Mám otestované poslední dva systémy, tj. FreeDOS a DrDOS. Zatímco FreeDOS mi občas spadl i s otevřenou Abrou a já jsem musel reindexovat soubory, tak asi před týdnem jsem nainstaloval na radu kamaráda DrDOS ve verzi 7.03, a zatím mi nespadl ani jednou. Zdá se, že má asi korektněji implementované nedokumentované funkce.

Po výběru ze škály různých DOS-ů vyvstává otázka, jak provést jejich instalaci do prostředí dosemu. Zde máme opět na výběr z několika možností:

  1. Na samostatný diskový oddíl.

    Tato volba bude aktuální, pokud budeme chtít provozovat dual-boot systém, případně máme starší počítač s nainstalovaným *-DOS-em apod. V tomto případě nastavíme v souboru dosemu.conf direktivu $_hdimage např. takto (předpokládejme, že máme nainstalovaný DOS na master disku na druhém kanálu IDE v oblasti 1):

    $_hdimage = "/dev/hdc1"
  2. Do adresáře na disku.

    Tuto možnost použijeme, pokud pro DOS nechceme vyčlenit samostatnou diskovou oblast, navíc se v podstatě nejjednodušeji připravuje. Do zvoleného adresáře (předpokládejme např. /var/lib/dos) totiž stačí prostě nakopírovat soubory potřebné k běhu DOS-u, upravit autoexec.bat a config.sys tak, ze se adresář bude chovat pro DOS jako disk C:\, dále najdeme adresář se soubory potřebnými pro dosemu (např. tím, že vyhledáme soubor exitemu.com, v Debianu je v adresáři /usr/lib/dosemu/commands), který pak nalinkujeme do našeho pomyslného disku C:\ příkazem:

    ln -s /usr/lib/dosemu/commands /var/lib/dos

    a nastavíme proměnnou PATH v souboru autoexec.bat tak, aby tento adresář také obsahovala. Tím je instalace adresáře hotova. Výsledný adresář celý nalinkujeme do adresáře, který nám určuje již zmiňovaná proměnná DOSEMU_LIB_DIR příkazem:

    ln -s /var/lib/dos /var/lib/dosemu

    (Pozor, toto platí pro Debian, který má proměnnou DOSEMU_LIB_DIR nastavenou právě na /var/lib/dosemu!)

    a nakonec nastavíme proměnnou $_hdimage takto:

    $_hdimage = "dos"

    (dos je zde jméno adresáře)

Tím jsme připravili všechny podmínky pro běh DOSu pod dosemu. Nicméně by bylo ještě vhodné zastavit se alespoň u několika proměnných ze souboru dosemu.conf. Takže jdeme na to...

Vybrané volby z dosemu.conf

To by bylo ve zkratce k hodnotám, na které bychom se měli zaměřit ještě před prvním spuštěním dosemu, abychom s jeho chováním byli maximálně spokojeni hned napoprvé. A nyní se již blížíme k tisku... ;-)

Tisk z aplikací pod dosemu

Možná existují aplikace, u kterých není nutné provozovat žádné papírové výstupy, např. hry. Nicméně pokud má dosemu sloužit jako základ pro účetnictví, pak se bez tisků rozhodně neobejdeme. Takže jak na to?

Při prohlížení voleb souboru dosemu.conf jsme si všimli, že dosemu umí emulovat pro samotný DOS hned tři zařízení pro tisk: LPT1-3. K těmto zařízením lze přiřadit jednotlivé fronty nadefinované v LPR(ng).

Pro definici front tak, aby nám vše tisklo opravdu česky, si však musíme uvědomit několik důležitých bodů:

  1. Formát úlohy

    Musíme si ujasnit, v jakém formátu budeme posílat do tiskové fronty úlohy, a podle toho nastavit správně filtr, který je bude zpracovávat do formátu srozumitelného naší tiskárně.

    Je jasné, že můžeme využít též přímý tisk na tiskárnu, pokud dokážeme vysvětlit DOSovskému programu, jakou tiskárnu používáme, jaké máme použité kódování češtiny apod., prostě stejně jako v DOS-u. Odměnou nám bude v případě jehličkové tiskárny tisk nejvyšší možnou rychlostí, protože nebude nutné, aby tiskárna jela v grafickém režimu.

    U laserových tiskáren si dovolím tvrdit, že je lhostejné, zda tiskárna tiskne v grafickém režimu, nebo v textovém, a proto bude nejschůdnější cesta přes rozumný, přenositelný formát: v našem případě asi PostScript. Jednak je to dostatečně přenositelný formát a jednak v GhostScriptu s vysokou pravděpodobností najdeme driver i pro naši tiskárnu.

    Zde ovšem narazíme na jedno omezení: zatímco u jehličkové tiskárny v raw režimu můžeme využít i různé formátovací sekvence, takže můžeme donutit tiskárnu k tisku různě širokého písma, zvýraznění apod., v případě, že se rozhodneme využít k tisku PostScript, budeme muset na takové vymoženosti zapomenout. Alespoň já jsem zatím nenašel interpretr, který by dokázal převést formátovací znaky pro byť i jeden typ tiskárny do PostScriptu a to spolu s textem...

  2. Kódování češtiny v tiskové úloze.

    Pokud dokážeme přinutit program, aby posílal stejné kódování, které umí zobrazit naše tiskárna, máme vyhráno a jedeme v raw módu. Pokud to nedokážeme, je třeba vybrat vhodné kódování a tomuto kódování následně přizpůsobit filtr, přes který budou data tisknuta.

Výběr SW pro tisk:

Osobně pro tisk používám LPRng, jako transformační program se mi osvědčil a2ps a pokud budeme potřebovat nějaká překódovávání, pak s úspěchem můžeme využít cstocs. Pro popis systému tisku budu předpokládat tuto softwarovou kombinaci.

Prvně si tedy ukážeme zmiňovanou raw frontu. Zápis v /etc/printcap bude vypadat např. takto:

raw:

:lp=/dev/lp0
:filter=
:sd=/var/spool/lpd/raw
:ah
:další_volby

Komentáře snad netřeba, upozorním však na dvě věci: tisk lze vyzkoušet tak, že místo :lp=/dev/lp0 (nebo jiného zařízení, na kterém máme tiskárnu) můžeme použít řádek :/tmp/vystup (tento soubor musí existovat a lpr musí mít pro něj právo zápisu, vytvoříme ho tedy pomocí příkazu touch a nastavíme mu práva 666). Lpr pak bude tisky místo odesílání na zařízení poslušně zapisovat do souboru, takže můžeme kontrolovat, zda celý systém front běží tak, jak má. V případě, kdy je cílový soubor binární, jako např. u tiskáren s PCL tiskovým jazykem, toho sice moc neuvidíme, ale alespoň odchytneme případné chybové hlášení filtru, které by jinak bylo nevratně vytištěno na papír.

Dále je pro odladění tisku (a neničení našich lesů) výborný uvedený parametr :ah. Tento parametr způsobí to, že tisk je pouze přijat do fronty, avšak je pozastaven do zásahu administrátora (lpc release jméno_fronty číslo_job-u). V adresáři fronty pak můžeme prohlédnout, co se vlastně snaží posílat DOSovský program na tiskárnu (tedy pokud je to k prohlížení vhodné). Já tento parametr používám i na svém notebooku, vytisknu si úlohy do fronty, pak přijdu k tiskárně, udělám lpc release jméno_fronty all a tisknu.

Pro složitější konfiguraci s PostScriptem budeme potřebovat několik věcí:

  1. Musíme nastavit DOSovský program, aby tiskl písmem o stejné šířce (resp. všechny řádky měly stejnou šířku), zvláště pokud v tisku používá i rámečky.
  2. Musíme tento program nastavit k tisku rozumného kódování, nejjednodušší pro další zpracování programem a2ps je (kupodivu) kódování CP1250 (Windows EE), další vhodné kódování je CP-852, tj. DOS-latin2. Kódování bří Kamenických jsem sice zkoušel, avšak výsledek nebyl v pořádku: rozhodil se mi tisk rámečků... Proč je vhodné právě kódování Windows-1250? a2ps s ním umí pracovat nativně. Pro ostatní kódování musíme předřadit filtr, který provede překódování do znakové sady, kterou a2ps ovládá.
  3. Nastavíme frontu pro tisk na tiskárnu. V příkladu budeme předpokládat, že výstupem naší fronty je PostScriptová tiskárna; pokud tomu tak nebude, jistě máme rozchozenou frontu pro tisk PostScript-u na tuto tiskárnu a tuto frontu využijeme.

Předpokládejme, že tisková fronta pro tisk PostScriptu na naší tiskárně má název ps. Pak záznam v /etc/printcap bude vypadat asi takto:

dos1:

:lp=ps@localhost
:sd=/var/spool/lpd/dos1
:filter=( varianty viz dále )
:lpd_bounce
:další parametry

Řádek s filtrem pak bude různý dle kódování, které se nám podaří vyloudit na DOS-ovém programu. Nejjednodušší to bude v případě již zmiňovaného Windows-1250:

:filter= ( /usr/bin/a2ps -X ms-cp1250 --borders no -o - )

V případě, že od DOS aplikace dostaneme kódování CP852, použijeme tento řádek:

:filter= ( cstocs pc2a il2 | /usr/bin/a2ps -X iso02 --borders no -o - )

No a to je snad dostatečný základ k tomu, abychom se vrhli do přemíry kombinací zde nastíněných, a svou vlastní tvořivostí dovedli k úspěšnému tiskovému výstupu téměř jakýkoli program pod dosemu. A nakonec:

Nad dopisy čtenářů ;-)

Jak jsem uvedl na začátku, sešlo se mi několik reakcí na můj článek. Část reakcí jsem doufám uspokojil tímto článkem, část bych snad měl ještě okomentovat zde.

Jako první bych se vrátil ke kódování Kamenických. Byl jsem upozorněn, že převodní tabulka je obsažena ve zdrojácích linksu a ty je možno stáhnout např. na atrey.karlin.mff.cuni.cz, případně si můžete stáhnout soubor kamen.cp s kódováním. Od téhož autora jsem dostal i zprávu s obrázkem, kde je zachycen funkční a hezky česky píšící program Money6 Free. K tomu však bylo ještě třeba upravit font speciálně pro tento program. Za tyto informace vděčím Jiřímu Dutkovi, kterému tímto děkuji. Pokud provozujete Money6 a chtěli byste mít takhle hezky vypadající obrazovku, tak mu zkuste napsat.

Money6 Free

Svým kolegou od nás z Pedagogické fakulty jsem byl upozorněn, že lze ze souboru ega.cpi vytáhnout hezký font v kódování CP852. Stáhnout si ho můžete zde: dosemu_vga852.bdf. Když jsem se ho ptal, jak ten soubor získal, odvětil mi, že prostě nastudoval formát souboru ega.cpi a napsal si prográmek. Já tedy děkuji za poskytnutý soubor, a pokud budete chtít napsat jeho tvůrci, můžete to zkusit na této adrese. Jím poskytnuté zdrojové texty programu pro vytáhnutí fontu z ega.cpi naleznete zde: dosemu_cpi.tar.bz2.

Ladislav Michl přidal pod první článek komentář o nesystémovosti přístupu. Má pravdu, v Debianu existují dokonce dva balíčky s fonty pro dosemu: xfonts-dosemu a xfonts-terminus-dos. A dále lze jednotlivé fonty nastavovat per-user v konfiguračním souboru ~/.dosemurc v adresáři každého uživatele, pokud mu to ovšem dovolíme v souboru dosemu.users. Takže tímto mu děkuji a připomínám, že slíbil dodat k sosnutí další hezké fonty.

A ještě poznámka k instalaci Abry pro Tomáše Tatouška: K jeho diskusnímu příspěvku pod prvním článkem jsem se dostal až při psaní tohoto článku, čímž se omlouvám za pozdní reakci... Matně si vzpomínám, že instalace Abry opravdu trpěla tím, že program nedokázal najít PKUNZIP. Pokud se dobře pamatuji, tak jsem nakonec vytvořený adresář smazal, vytvořil znovu prázdný, nakopíroval jsem do něj soubor PKUNZIP a přejmenoval na pkunzip.exe a to tuším instalačnímu programu Abry stačilo... Takže, ještě jednou se omlouvám za opominutí sledování diskusního fóra, a doufám, že tato rada pomůže. Koneckonců se dá do filesystému zasahovat i "zezadu", za běhu instalačního programu... Jsme v Unix-like operačním systému.

A to by snad bylo vše, těším se na oslavné ódy. Na závěr ještě obrazovka z české Abry.

Abra

Související články

České prostředí v okně xdosemu
Staré dobré hry

Odkazy a zdroje

www.dosemu.org

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.