ANSI.SYS
Author
Albert FloresANSI.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). +more 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 +moreSYS'>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. +more 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. +more S tímto ovladačem mohou programy používající standardní výstup používat až 16 barev textu a 8 barev pozadí dostupných v VGA-kompatibilní textový režim, 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 umožňuje i v tomto režimu 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. +more 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 +moreCOM'>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. +more 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ů. +more 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. +more0, 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. +more 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 h ESC . n h ESC =n h ESC >n h | Přepne #Videorežimy|videorežim (SM) |
ESC n l ESC . +moren l ESC =n l ESC >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) |
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) |