ANSI.SYS
ANSI.SYS to sterownik urządzenia w rodzinie systemów operacyjnych DOS , który udostępnia dodatkowe funkcje konsoli poprzez sekwencje specjalne ANSI . Jest częściowo oparty na podzbiorze terminala tekstowego zaproponowanego przez Komitet Techniczny ANSI X3L2 ds. Kodów i Zestawów Znaków („Komitet X3”).
Ponieważ nie był instalowany domyślnie i był notorycznie powolny, niewiele programów korzystało z niego i zamiast tego uciekało się do bezpośredniego manipulowania sprzętem IBM PC. Stworzono szereg alternatyw innych firm, które działały z rozsądną prędkością, takich jak ANSI.COM , NANSI.SYS i ANSIPLUS.EXE , aby spróbować to zmienić. [ wymagane zewnętrzne źródło ]
Stosowanie
Aby użyć ANSI.SYS w systemie DOS, do pliku CONFIG.SYS (lub CONFIG.NT w wersjach systemu Windows opartych na systemie Windows NT ) dodawana jest linia, która brzmi:
- URZĄDZENIE = dysk: \ ścieżka \ opcje ANSI.SYS
gdzie dysk: i ścieżka to litera dysku i ścieżka do katalogu , w którym znajduje się plik ANSI.SYS , a opcje mogą być pewną liczbą opcjonalnych przełączników kontrolujących zachowanie. ANSI.SYS można również załadować do górnej pamięci poprzez DEVICEHIGH / HIDEVICE .
- /K używa rozszerzonych funkcji BIOS-u klawiatury ( INT 16h ) zamiast standardowych
- /L wymusza liczbę linii
- /R dostosuj przewijanie linii do obsługi czytników ekranu
- /S lub /SCREENSIZE ustawia rozmiar ekranu
- /X obsługuje redefinicję rozszerzonych kodów klawiszy niezależnych od standardowych kodów
Funkcjonalność
Po załadowaniu ANSI.SYS umożliwia sekwencjom kodu stosowanie różnych funkcji formatowania tekstu. Za pomocą tego sterownika programy, które zapisują na standardowe wyjście , mogą wykorzystywać 16 kolorów pierwszego planu tekstu i 8 kolorów tła dostępnych w trybie tekstowym zgodnym z VGA , powodować miganie tekstu, zmieniać położenie kursora na ekranie i wygaszać ekran . Pozwala również na zmianę trybu wideo ze standardowego trybu tekstowego 80 ×25 na wiele różnych trybów graficznych (na przykład tryb graficzny 320×200 z tekstem rysowanym jako piksele, chociaż ANSI.SYS nie zapewnia wywołań do włączania indywidualnych włączanie i wyłączanie pikseli).
Standardowy ANSI.SYS jest stosunkowo powolny, ponieważ odwzorowuje sekwencje ucieczki na równoważne wywołania BIOS-u . Kilka firm dokonało zamienników innych firm, które łączą się bezpośrednio z pamięcią wideo , w podobny sposób jak większość programów DOS, które mają pełnoekranowy interfejs użytkownika.
Domyślnie wewnętrzne polecenie CLS systemu DOS działa poprzez bezpośrednie wywołanie odpowiedniej funkcji systemu BIOS w celu wyczyszczenia ekranu, tym samym wyraźnie naruszając utrzymywany w inny sposób model abstrakcji sprzętu. Jeśli jednak sterownik ANSI zostanie wykryty przez DR-DOS COMMAND.COM , zamiast tego wyśle sekwencję kontrolną zdefiniowaną w zarezerwowanej zmiennej środowiskowej $CLS do podłączonego urządzenia konsoli. Jeśli zmienna środowiskowa jest niezdefiniowana, zamiast tego wysyła sekwencję ESC [ 2 J. Określenie innych sekwencji może być użyte do sterowania różnymi ustawieniami ekranu po CLS . Ze względu na trudności w definiowaniu zmiennych środowiskowych zawierających dane binarne COMMAND.COM akceptuje również specjalną \nnn dla liczb ósemkowych . Na przykład, aby wysłać alternatywną sekwencję kontrolną, taką jak ESC + (dla 1Bh 2Bh używanej przez terminale ASCII), można zdefiniować zmienną w następujący sposób:
- USTAW $CLS=\033+
Te funkcje są obsługiwane przez COMMAND.COM we wszystkich wersjach DOS Plus i DR-DOS , ale nie w MS-DOS ani PC DOS. Są one również obsługiwane przez interpretery poleceń w Concurrent DOS , Multiuser DOS i REAL/32 , chociaż domyślnie używają sekwencji sterujących VT52 zamiast ANSI (np. ESC E ).
Zmiana mapowania klawiatury
Ciekawą funkcją ANSI.SYS jest możliwość ponownego mapowania dowolnego klawisza na klawiaturze w celu wykonywania skrótów lub makr dla złożonych instrukcji. Korzystając ze specjalnych sekwencji ucieczki, użytkownik może zdefiniować dowolne naciśnięcie klawisza, które ma odwzorowanie kodu znaku w celu symulacji dowolnej sekwencji takich naciśnięć klawiszy. Funkcja ta była również wykorzystywana do tworzenia prostych trojanów z plików tekstowych zawierających nikczemne remapy klawiatury, znane jako „bomby ANSI”. Szereg produktów zostało wydanych w celu ochrony użytkowników przed tym:
- Niektóre wersje ANSI.SYS obsługują przełącznik wiersza poleceń, aby wyłączyć funkcję ponownego mapowania klawiszy, np. opcję /S (Secure) w ANSI.SYS w Datalight ROM-DOS lub NANSI.SYS w FreeDOS . Inne sterowniki ANSI, takie jak ANSIPLUS, można również skonfigurować tak, aby wyłączały redefinicję kluczy.
- Ustawienie CONFIG.SYS SCREEN = ANSI w PTS-DOS zapewnia wbudowany sterownik ANSI, który nie obsługuje funkcji ponownego mapowania klawiatury.
- Niektóre zamienniki ANSI.SYS innych firm zostały celowo zaprojektowane tak, aby nigdy nie obsługiwały funkcji ponownego mapowania klawiatury.
- PKWARE wyprodukowało program rezydentny typu „terminuj i pozostań” , PKSFANSI (PK Safe ANSI), który odfiltrowuje kody specjalne mapowania klawiatury, gdy są one zapisywane na standardowe wyjście. Ma to tę zaletę, że użytkownik może załadować kilka przydatnych mapowań z pliku tekstowego, a następnie uruchomić PKSFANSI, aby zapobiec dalszym, potencjalnie złośliwym mapowaniom.
Występowanie
ANSI.SYS pojawił się w MS-DOS 2.0 , pierwszej wersji systemu operacyjnego obsługującej sterowniki urządzeń. Był obsługiwany przez wszystkie kolejne wersje MS-DOS. Jest również obecny w wielu systemach innych niż Microsoft DOS, np. IBM PC DOS i DR-DOS .
ANSI.SYS był wymagany do uruchomienia oprogramowania, które wykorzystywało jego funkcje sterowania kursorem i kolorem. Można go również użyć do włączenia skomplikowanych kodów kolorów w COMMAND.COM . Zastosowania te zostały przyćmione przez użycie ANSI.SYS w BBSach ; Sekwencje ucieczki ANSI zostały użyte, aby umożliwić BBSom wysyłanie grafiki tekstowej bardziej rozbudowanej niż grafika ASCII oraz kontrolowanie kursora w sposób używany w wielu grach online i podobnych funkcjach.
Większość wersji systemu Windows nie obsługiwała kodów ucieczki ANSI w żaden użyteczny sposób (w niektórych wersjach mogła być używana przez emulację MSDOS). W systemie Windows 10 obsługa podobnych sekwencji ucieczki została wbudowana w konsolę Win32 (okno terminala tekstowego), ale należy ją aktywować za pomocą funkcji Windows API SetConsoleMode
, ustawiając flagę ENABLE_VIRTUAL_TERMINAL_PROCESSING
.
Cechy
CSI ( Introducer sekwencji kontrolnej ) jest symbolem zastępczym dla wspólnej dwubajtowej sekwencji wprowadzającej ucieczki „ ESC [ ” (czyli 0x1B 0x5B ). Standard ANSI definiuje również alternatywny jednobajtowy kod CSI 0x9B , który nie jest obsługiwany przez ANSI.SYS.
Standardowe sterowniki DOS ANSI.SYS obsługują tylko następujący podzbiór sekwencji specjalnych ANSI:
Sekwencja | Efekt |
---|---|
ESC [ r A | Kursor w górę ( CUU ) |
ESC [ r B | Kursor w dół ( CUD ) |
ESC [ c C | Kursor do przodu ( CUF ) |
ESC [ c D | Kursor wstecz ( CUB ) |
ESC [ r ; do f | Pozycja pozioma i pionowa ( HVP ) |
ESC [ r ; c H | Pozycja kursora ( CUP ) |
ESC [ n J | Wyczyść ekran ( ED ) (n=0, 2 lub n=0, 1, 2) |
ESC [ n K | Wymaż w linii ( EL ) (n=0 lub n=0, 1, 2) |
ESC [ n m | Wybierz odwzorowanie graficzne ( SGR ) (n=0..47) |
ESC [ 6 pkt |
Raport o stanie urządzenia ( DSR ) żąda pozycji kursora, zwracany jako raport pozycji kursora ( CPR ): ESC [ r ; c r |
ESC [ r | Zapisz pozycję kursora ( SCP ) |
ESC [ u | Przywróć pozycję kursora ( RCP ) |
Istnieją również pewne sekwencje ucieczki specyficzne dla implementacji ANSI.SYS . Na ogół nie są obsługiwane przez konsole ANSI w innych systemach operacyjnych.
Sekwencja | Efekt |
---|---|
ESC [ n h ESC [ ? n h ESC [ = n h ESC [ > n godz |
Ustaw tryb ekranu ( SM ) |
ESC [ n l ESC [ ? n l ESC [ = n l ESC [ > n l |
Zresetuj tryb ekranu ( RM ) |
ESC [ n q | Włącz (n=1) lub wyłącz (n=0) obsługę /X |
ESC [ l | Wstaw wiersz ( IL ) |
ESC [ m | Usuń wiersz ( DL ) |
ESC $ ) 1 | Przełącz tryb wprowadzania klawiatury na koreański ( Hangul ) |
ESP (2 | Przełącz tryb wprowadzania klawiatury na angielski |
ESC [ + | Włącz wyjście konsoli |
WYJŚCIE [ - | Wyłącz wyjście konsoli |
ESC [ a ; b ;... str | Ustaw ponowne zdefiniowanie klucza ( SKR / KR ) |
Tryb | Opis | Tryb | Opis |
---|---|---|---|
0 | 40 × 25 monochromatyczny | 1 | Kolor 40 × 25 |
2 | 80 × 25 monochromatyczny | 3 | Kolor 80 × 25 |
4 | Kolor 320 × 200 | 5 | 320 × 200 monochromatyczny |
6 | 640 × 200 monochromatyczny | ||
7 | Zawiń na końcu linii | ||
13 | 320 x 200 kolor (grafika) | 14 | 640 x 200 kolorów (grafika 16-kolorowa) |
15 | 640 x 350 monochromatyczny (grafika dwukolorowa) | 16 | 640 x 350 kolorów (grafika 16-kolorowa) |
17 | 640 x 480 monochromatyczny (grafika dwukolorowa) | 18 | Kolor 640 x 480 (grafika 16-kolorowa) |
19 | 320 x 200 kolorów (grafika 256 kolorów) | ||
114 | Kolor 640 x 480 (grafika 16-kolorowa) | 115 | 640 x 475 kolorów (grafika 16-kolorowa) |
W niektórych implementacjach DOS tryby wideo powyżej 7 nie są udokumentowane. W Multiuser DOS jedynym prawidłowym argumentem w połączeniu z PCTERM jest 7.
Zobacz też
Notatki
Linki zewnętrzne
- „Jak w systemie DOS mogę zmienić monit lub kolor ekranu?” . Uniwersytet Indiany . 2010-10-25. Zarchiwizowane od oryginału w dniu 11.09.2017 . Źródło 2017-09-11 .
- Cambus, Frederic (2017-04-19). „Zestaw narzędzi do konwersji plików ANSi/BiN/ADF/iDF/TUNDRA/XBiN na obrazy PNG” . Zarchiwizowane od oryginału w dniu 11.09.2017 . Źródło 2017-09-11 .