ANSI.SYS je v rodině operačních systémů DOS ovladač zařízení, který umožňuje používat ANSI escape posloupnosti pro zpřístupnění různých funkcí systémové konzole. Většina řídicích posloupností, které ANSI.SYS podporuje, pochází z návrhu standardu pro ovládání textových terminálů vytvořeného technickým výborem X3 ANSI X3L2 pro kódy a znakové sady ().
Protože se ovladač ANSI.SYS neinstaloval implicitně a při výpisu textů byl velmi pomalý, využívala jej jen malá část softwaru; většina celoobrazovkových programů používala pro výstup na obrazovku nástroje nižších úrovní (od služeb BIOSu až po přímé ovládání hardwaru videokaret). Existovalo však několik alternativních ovladačů jiných dodavatelů, které fungovaly výrazně rychleji, např. ANSI.COM, NANSI.SYS a ANSIPLUS.EXE, které se snažily tuto situaci změnit.
Použití Pro použití ANSI.SYS v operačním systému DOS je třeba do souboru CONFIG.SYS (ve verzích Microsoft Windows založených na Windows NT do CONFIG.NT) přidat řádek:
DEVICE=disk:\cesta\ANSI.SYS parametry
kde disk: a cesta je označení diskové jednotky a cesta k adresáři, kde se nachází soubor ANSI.SYS. Ovladač ANSI.SYS může být také zaveden do Upper memory area použitím příkazu DEVICEHIGH/HIDEVICE. Jako parametry lze použít několik nepovinných přepínačů, které upřesňují chování ovladače:
/K používat rozšířené funkce BIOSu pro vstup z klávesnice (INT 16h) místo standardních /L počet řádků na obrazovce /R nastavuje scrollování řádků pro podporu screen readerů /S nebo /SCREENSIZE nastaví velikost obrazovky /X podpora předefinování rozšířených klávesových kódů nezávislých na standardních kódech
Funkčnost Pokud je ANSI.SYS zaveden, umožňuje používat řídicí posloupnosti pro formátování textového výstupu na obrazovku. S tímto ovladačem je možné při výpisu na standardní výstup používat až 16 barev textu a 8 barev pozadí dostupných v textových režimech adaptéru VGA, blikající text, měnit pozici kurzoru na obrazovce a mazat obrazovku. Ovladač také umožňuje změnit videorežim ze standardního textového režimu 80×25 (25 řádků po 80 znacích) na různé grafické režimy (například s 320×200 grafickými body; ANSI.SYS i v tomto režimu umožňuje výpis textu, ale neposkytuje služby pro ovládání nebo zobrazování jednotlivých pixelů).
Standardní ANSI.SYS byl pomalý, protože převáděl escape posloupnosti na volání BIOSu. Několik společností vytvořilo náhrady, které pracovaly přímo s Video RAM stejným způsobem jako většina programů pro DOS, které poskytovaly celoobrazovkové uživatelské rozhraní.
Interní příkaz DOSu CLS implicitně používá přímo volání funkce BIOSu pro smazání obrazovky, což významně narušuje jinak dodržovaný model hardwarové abstrakce. Pokud však COMMAND.COM v DR DOSu detekuje ANSI ovladač, nebude volat tuto funkci BIOSu, ale na zařízení plnící úlohu konzole pošle řídicí posloupnost definovanou v rezervované proměnné prostředí $CLS. Pokud tato proměnná prostředí není definována, zašle posloupnost ESC [ 2 J. Použitím jiných řídicích posloupností lze po smazání obrazovky příkazem CLS dosáhnout různých efektů. Při zadávání řídicích znaků lze zadat kód v osmičkové soustavě ve tvaru \nnn; např. pro ASCII terminály by bylo možné definovat řídicí posloupnost ESC + (1Bh 2Bh) pro smazání obrazovky takto:
SET $CLS=\033+
Tyto vlastnosti podporuje COMMAND.COM ve všech verzích systémů DOS Plus a DR DOS, ne však v MS-DOSu nebo PC DOSu. Jsou také podporovány příkazovými interprety v Concurrent DOS, Multiuser DOS a REAL/32, které však implicitně místo řídicích posloupností ANSI používají posloupnosti pro terminál VT52 (například ESC E).
Přemapování klávesnice Zajímavou vlastností ANSI.SYS je schopnost přemapovat libovolnou klávesu na klávesnici, aby generovala libovolnou posloupnost znaků. Použitím speciální escape posloupnosti může uživatel definovat, aby byl libovolný klávesový kód převeden na libovolnou posloupnost klávesových kódů. Tuto vlastnost však bylo možné zneužít pro vytvoření trojského koně, který díky escape sekvencím umístěným v souboru mohl přemapováním klávesnice provést nějakou škodlivou akci (tzv. „ANSI bomby“). Proto byly vyvinuty nástroje, které tomuto zneužívání zabraňují: Některé verze ANSI.SYS mají parametr příkazového řádku, který zakazuje přemapování kláves, např. NANSI.SYS ve FreeDOSu nebo Datalight ROM-DOS používá volbu /S (). Také jiné ANSI ovladače, např. ANSIPLUS lze zkonfigurovat, aby neumožňovaly předefinování kláves. Parametr CONFIG.SYS SCREEN=ANSI v PTS-DOSu poskytuje vestavěný ANSI ovladač, který nepodporuje přemapování klávesnice. Některé náhrady ANSI.SYS třetích stran byly úmyslně nepodporovaly přemapování klávesnice. Program PKSFANSI firmy PKWARE typu Terminate and Stay Resident odstraňuje escape kódy pro přemapování kláves ze standardního výstupu. Jeho výhodou je, že uživatel může načíst některá užitečná mapování z textového souboru a pak spustit PKSFANSI, který zabrání aktivaci dalších přemapování, která by mohla škodit.
Dostupnost Ovladač ANSI.SYS se objevil v MS-DOS 2.0, první verzi operačního systému, která podporovala ovladače zařízení, a byl dostupný ve všech následujících verzích MS-DOSu. Je také dostupný v mnoha systémech DOS jiných firem, například IBM PC DOS a DR DOS.
Některé programy vyžadovaly ovladač ANSI.SYS pro výpis textu na libovolné místo na obrazovce, nastavení pozice kurzoru a nastavování barev textu vypisovaného na obrazovku. Escape sekvence také umožňovaly nastavení barevné výzvy systému (prompt). Ovládání výstupu na obrazovku, které poskytoval ovladač ANSI.SYS, často používaly systémy BBS pro vytváření obrázků v textovém režimu a ovládání kurzoru způsobem, který se používal např. v různých online hrách.
Většina verzí Windows žádným užitečným způsobem ANSI escape kódy nepodporuje (v některých verzích však mohou být použity emulace MS-DOSu). Ve Windows 10 obsahuje podporu pro escape posloupnosti ve Win32 konzole (okno textového terminálu); musí být však aktivována použitím Windows API funkce nastavením příznaku .
Vlastnosti CSI () je zástupný znak pro běžné dvoubytové úvodní escape sekvence „ESC [“ (0x1B 0x5B). ANSI standard také definuje alternativní jednobytový CSI kód 0x9B, který není podporován v ANSI.SYS.
Standardní ovladače ANSI.SYS pro DOS podporují pouze následující podmnožinu ANSI escape posloupností:
Posloupnost Vliv ESC [ r Kurzor nahoru (CUU) ESC [ r B Kurzor dolů (CUD) ESC [ c C Kurzor vpravo (CUF) ESC [ c D Kurzor vlevo (CUB) ESC [ r;c f Horizontální a vertikální pozice (HVP) ESC [ r;c H Přesune kurzor na pozici c na řádku r (CUP;l pozice i řádky se číslují od 1) ESC [ n J Smazat obrazovku (ED) (n=0, 2 nebo n=0, 1, 2) ESC [ n K Smazat řádek (EL) (n=0 nebo n=0, 1, 2) ESC [ n m Vybrat grafické ztvárnění (SGR) (n=0..47) ESC [ 6 n (DSR) oznámí pozici kurzoru (CPR) ve tvaru (jako kdyby byla zadána z klávesnice) ESC[n;mR, kde n je řádek a m je sloupec ESC [ s Uložit pozici kurzoru (SCP) ESC [ u Obnovit pozici kurzoru (RCP)
Následující escape posloupnosti jsou specifické pro ANSI.SYS. Obecně nejsou podporovány ANSI konzolami v jiných operačních systémech:
Posloupnost Vliv ESC [ n hESC [ ?n hESC [ =n hESC [ >n h Přepne videorežim (SM) ESC [ n lESC [ ?n lESC [ =n lESC [ >n l Opustí videorežim (RM) ESC [ n q Povolí (n=1) nebo zakáže (n=0) podporu /X ESC [ L Vloží řádek (IL) ESC [ M Smaže řádek (DL) ESC $ ) 1 Přepne režim vstupu z klávesnice na korejštinu (Hangul) ESC ( 2 Přepne režim vstupu z klávesnice na angličtinu ESC [ + Povolí výstup na konzolu ESC [ – Zakáže výstup na konzolu ESC [ '';b'';… p Přemapování kláves (SKR/KR)
+ Videorežimy Režim Popis Režim Popis 0 40 × 25 monochromatický 1 40 × 25 barevný 2 80 × 25 monochromatický 3 80 × 25 barevný 4 320 × 200 barevný 5 320 × 200 monochromatický 6 640 × 200 monochromatický 7 Zalamování řádků 13 320 x 200 barevný (grafický) 14 640 x 200 barevný (16barevná grafika) 15 640 x 350 monochromatický (2barevná grafika) 16 640 x 350 barevný (16barevná grafika) 17 640 x 480 monochromatický (2barevná grafika) 18 640 x 480 barevný (16barevná grafika) 19 320 x 200 barevný (256barevná grafika) 114 640 x 480 barevný (16barevná grafika) 115 640 x 475 barevný (16barevná grafika) V některých implementacích DOSu nejsou video režimy nad 7 dokumentované. V Multiuser DOSu jediný platný argument ve spojení s PCTERM je 7.
Odkazy Poznámky
Reference
Literatura
Související články ANSI Escape sekvence
Externí odkazy
Kategorie:DOS