Návody
-
Dosemu - II
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í. 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 DOS-ový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 Doom-u, takže se zdá, že je toto
protř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:
- 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...
- 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
- FreeDOS: Tento DOS je zdarma a k nalezení na adrese www.freedos.org
Alternativně lze pro provoz DOS-u 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 DOS-u 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 DOS-u: 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í:
- 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"
- 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 DOS-u 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
- volba $_debug
Tato volba nám dává možnost ovlivnit rozsáhlost chybových
výpisů. Možné volby můžeme najít v man dosemu.bin
pod volbou -D. Do tohoto souboru se však zapisují bez znaku D,
takže nastavení $_debug = "-a" je ekvivalentní
přepínači -Da na příkazové řádce.
- volby $_cpu a $_mathco
Umožňuje nám zvolit typ procesoru, který bude dosemu emulovat
pro DOS. Je možno použít hodnoty 80[345]86. Je zvláštní, že pokud
jsem nastavil jinou hodnotu, než 80386, odmítal se mi rozjet
runtime FoxPro. Čili doporučená hodnota je $_cpu =
"80386" a k ní dále $_mathco = (on) , která
způsobí emulaci matematického koprocesoru.
- volby $_xms, $_ems, $_ems_frame, $_dpmi, $_dosmem
Tyto volby se týkají různých paměťových módů, které bude
dosemu emulovat pro DOS. Upozorňuji především na volbu
$_dpmi : bez ní se nerozjede nejen FoxPro, ale ani
žádný jiný program, který pracuje s PharLap extenderem. Napadá mě
AutoCAD, ale ten jsem pod dosemu nezkoušel. V EMUfailure však
najdete, že verze 12c1 pro DOS nepojede, neb používá starší
PharLap extender. Takže spíš novější verze, pokud existuje. Moje
funkční sada pro provoz Abry (FoxPro) je tato:
$_xms = (1024)
$_ems = (2048)
$_ems_frame = (0xe000)
$_dpmi = (8192)
$_dosmem = (640)
- volby $_term_char_set a $_layout
Tady začíná nastavování národního prostředí. Nastavením
$_term_char_set = "latin2" říkáme dosemu, že náš
terminál ovládá tuto znakovou sadu a dále budeme potřebovat
nastavit rozložení klávesnice: to nastavíme např. takto:
$_layout = "cz-qwerty" , příp. máme ještě na výběr
volbu cz-qwertz.
- volby $_X_keycode a $_X_font
Tyto volby jsou pokračováním nastavení národního prostředí
pro xdosemu, tedy pro X Window System. Zde se mi osvědčilo toto
nastavení:
$_X_keycode = (on)
$_X_font = "vga"
První volbou nutíme xdosemu používat klávesnici nadefinovanou
volbou $_layout . Je zde trošku problém, protože
takto nadefinované klávesnice se nelze zbavit, což dělá problém
zejména při psaní backslash-e. Ale dá se to přežít . Význam
druhé volby jsme probírali v minulém článku: definuje se jí
používaný font pro zobrazování.
- volba $_X_updfreq
Touto volbou se definuje rychlost odezvy xdosemu na
klávesnici. Doporučuji ji nastavit na menší hodnotu (mám
nastavenu hodnotu "1"), protože někdy bylo dosemu poměrně dost v
závěsu...
- volby $_printer a $_printer_timeout
Těmito volbami nastavujeme chování tisku pod dosemu. První
volbou definujeme jednotlivé tiskové fronty tak, jak mají být
postupně přiřazeny k LPT1, 2 a 3 a druhou volbou definujeme
timeout, po jehož vypršení je úloha předána ke zpracování frontě.
Já jsem ponechal defaultní hodnotu 20, je ale možné, že budete
tuto hodnotu potřebovat zvýšit.
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ů:
- 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 DOS-ovské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...
- 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 softwareovou 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 DOS-ovský 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í:
- musíme nastavit DOS-ovský 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.
- 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á.
- 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 links-u
a ty je možno stáhnout např. zde, 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.

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. 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.
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.

Diskuse k tomuto článku
Po instalaci xdosemu do redhatu 6.2 (a 7.1) se mi pokazde zhroutil xfontserver... Co s tim? :)
Ze by smazat RH a nainstalovat si Debian?
Nevim, co vedlo xfs k padu, ale xdosemu hleda standardne font vga (lze upravit v konfiguraku dosemu.conf direktivou $_X_font)
Honza Marek
Zdravím,
je nějak možné přinutit dosemu, aby "uměl" i disky D:, E:, .....
Nějak jsem to nikde nenašel.
Pokud jsem nekoho uvedl do varu hloupou otazkou, omlouvam se....
v dosemu.conf nebo v dosemurc volbou $_hdimage - seznam oddělený mezerami.
Např: $_hdimage = "c.img /dev/hda1 /dev/hdd2:ro"
Pajosh
Je to mozne resit taky primo za behu dosemu, ale pouze, pokud chcete pripojit konkretni adresar v Linuxu (treba taky disketovou mechaniku, kterou mate nekde namountovanou apod.): je na to prikaz lredir.
zkuste: lredir help
Zdravi
Honza Marek
Vytvoř si pouze odkazy k souborům
Děkuji za nakopnutí. Drobná poznámka: PKUNZIP.EXE se musí nakopírovat do adresáře
/abragold/____.tmp. Tento vlastně vznikne při první násilně přerušené instalaci v důsledku chybějícího 'PKUNZIP'. Při další instalaci se sice objeví hláška znovu, ale po odentrování se instalace rozběhne. V configu musí být nutně
DOS=UMB,HIGH, jinak se to nerozjede.
Poprosil bych o radu. Ve freedos mi tisk například programem edit.exe funguje. Abru ale zaboha nemohu přinutit cokoli tisknout. Chyba bude asi někde v nastaveni abry /tiskové definice/definice tiskáren atd. Nevim jakou tiskarnu ze seznamu vybrat, popřípadě si jí nadefinovat. Díky.
|