ANSI.SYS - ANSI.SYS

ANSI.SYS este un driver de dispozitiv din familia de sisteme de operare DOS care oferă funcții suplimentare de consolă prin secvențe de evacuare ANSI . Se bazează parțial pe un subset al standardului de control al terminalului text propus de Comitetul tehnic ANSI X3L2 pentru coduri și seturi de caractere („Comitetul X3”).

Deoarece nu a fost instalat în mod implicit și era notoriu lent, puține programe au profitat de acesta și au recurs la manipularea directă a hardware-ului IBM PC. Au fost create o serie de alternative ale unor terțe părți care au rulat la o viteză rezonabilă, cum ar fi ANSI.COM , NANSI.SYS și ANSIPLUS.EXE pentru a încerca să schimbe acest lucru.

Utilizare

Pentru a utiliza ANSI.SYS sub DOS, o linie este adăugată la fișierul CONFIG.SYS (sau CONFIG.NT în versiunile Windows bazate pe Windows NT ) care citește:

DEVICE = unitate: \ path \ ANSI.SYS opțiuni

unde unitate: și cale sunt litera unității și calea către directorul în care se găsește fișierul ANSI.SYS , iar opțiunile pot fi un număr de comutatoare opționale pentru a controla comportamentul. ANSI.SYS poate fi, de asemenea, încărcat în memoria superioară prin DEVICEHIGH / HIDEVICE .

  • / K utilizează funcții extinse de BIOS pentru tastatură ( INT 16h ) mai degrabă decât funcții standard
  • / L forța număr de linii
  • / R reglați derularea liniei pentru a susține cititoarele de ecran
  • / S sau / SCREENSIZE setează dimensiunea ecranului
  • / X acceptă redefinirea codurilor de chei extinse, independent de codurile standard

Funcționalitate

Odată încărcat, ANSI.SYS permite secvențelor de cod să aplice diverse caracteristici de formatare a textului. Folosind acest driver, programele care scriu la ieșirea standard pot utiliza cele 16 culori de prim-plan text și 8 culori de fundal disponibile în modul de text compatibil VGA , pot clipi textul, pot schimba locația cursorului pe ecran și pot goli ecranul . De asemenea, permite schimbarea modului video de la modul text standard 80 × 25 la un număr de moduri grafice diferite (de exemplu, modul grafic 320 × 200 cu text desenat ca pixeli, deși ANSI.SYS nu oferă apeluri pentru a transforma individual pixeli activi și dezactivați).

ANSI.SYS standard este relativ lent, deoarece mapează secvențe de evacuare la apelurile echivalente BIOS . Mai multe companii au făcut înlocuiri de la terțe părți care interacționează direct cu memoria video , într-un mod similar cu majoritatea programelor DOS care au o interfață cu ecran complet.

În mod implicit, comanda DOS internă CLS funcționează apelând direct funcția BIOS corespunzătoare pentru a șterge ecranul, încălcând astfel în mod vizibil modelul de abstractizare hardware menținut altfel. Cu toate acestea, dacă un driver ANSI este detectat de DR-DOS COMMAND.COM , acesta va trimite în schimb secvența de control definită în variabila de mediu rezervată $ CLS către dispozitivul de consolă atașat. Dacă variabila de mediu este nedefinită, ea va reveni pentru a trimite secvența ESC [2 J în schimb. Specificarea altor secvențe poate fi utilizată pentru a controla diferite setări ale ecranului după un CLS . Datorită dificultăților de definire a variabilelor de mediu care conțin date binare, COMMAND.COM acceptă o notație specială \ nnn pentru numerele octale . De exemplu, pentru a trimite o secvență de control alternativă precum ESC + (pentru 1Bh 2Bh așa cum este utilizată de terminalele ASCII ), s-ar putea defini variabila după cum urmează:

SET $ CLS = \ 033+

Aceste caracteristici sunt acceptate de COMMAND.COM în toate versiunile de DOS Plus și DR-DOS , dar nu în MS-DOS sau PC DOS. Acestea sunt, de asemenea, acceptate de interpreții de comandă în DOS simultan , DOS multiusor și REAL / 32 , deși utilizează VT52 mai degrabă decât secvențe de control ANSI în mod implicit (de exemplu, ESC E ).

Remaparea tastaturii

O caracteristică interesantă a ANSI.SYS este capacitatea de a remapa orice tastă de pe tastatură pentru a efectua comenzi rapide sau macrocomenzi pentru instrucțiuni complexe. Folosind secvențe speciale de evadare, utilizatorul poate defini orice apăsare de tastă care are o mapare a codului de caractere pentru a simula o secvență arbitrară a acestor apăsări de taste. Această caracteristică a fost de asemenea folosită de răufăcători pentru a crea troieni simpli din fișiere text dantelate cu remapuri nefaste ale tastaturii, cunoscute sub numele de „bombe ANSI”. Au fost lansate mai multe produse pentru a proteja utilizatorii împotriva acestui lucru:

  • Unele versiuni ale ANSI.SYS acceptă un comutator de linie de comandă pentru a dezactiva caracteristica de remapare a tastelor, fe opțiunea / S (Secure) în ANSI.SYS din Datalight ROM-DOS sau NANSI.SYS din FreeDOS . Alte drivere ANSI, cum ar fi ANSIPLUS, pot fi configurate pentru a dezactiva și redefinirea cheilor.
  • Setarea CONFIG.SYS SCREEN = ANSI în PTS-DOS oferă un driver ANSI încorporat care nu acceptă funcțiile de remapare a tastaturii.
  • Unele dintre înlocuirile ANSI.SYS de la terți au fost proiectate în mod deliberat pentru a nu suporta niciodată funcțiile de remapare a tastaturii.
  • PKWARE a produs un program TSR , PKSFANSI (PK Safe ANSI), care filtrează codurile de evadare a remapării tastaturii pe măsură ce sunt scrise la ieșirea standard. Acest lucru are avantajul că utilizatorul poate încărca unele remapări utile dintr-un fișier text și apoi poate rula PKSFANSI pentru a preveni remapările ulterioare, posibil rău intenționate.

Apariție

ANSI.SYS a apărut în MS-DOS 2.0 , prima versiune a sistemului de operare care acceptă driverele de dispozitiv. Acesta a fost acceptat de toate versiunile următoare de MS-DOS. Este, de asemenea, prezent în multe sisteme care nu sunt Microsoft DOS, de exemplu IBM PC DOS și DR-DOS .

ANSI.SYS a fost obligat să ruleze unele programe care foloseau cursorul și funcțiile de control al culorii. Ar putea fi, de asemenea, utilizat pentru a activa coduri de culori elaborate în promptul COMMAND.COM . Aceste utilizări au fost umbrite de utilizarea ANSI.SYS în BBSes ; Secvențele de evadare ANSI au fost utilizate pentru a permite BBS-urilor să trimită grafică text mai elaborată decât arta ASCII și pentru a controla cursorul în moduri utilizate în mai multe jocuri online și funcții similare.

Majoritatea versiunilor de Windows nu au acceptat codurile de evacuare ANSI în niciun mod util (ar putea fi folosite de emulare MSDOS în unele versiuni). În Windows 10, suportul pentru secvențe de evadare similare a fost încorporat în consola Win32 (fereastra terminalului text), dar trebuie activat utilizând funcția API WindowsSetConsoleMode prin setarea ENABLE_VIRTUAL_TERMINAL_PROCESSINGsemnalizatorului.

Caracteristici

CSI ( Control Sequence Introducer ) este un substituent pentru secvența de plumb comun de evacuare pe doi octeți " ESC [ " (adică 0x1B 0x5B ). Standardul ANSI definește, de asemenea, un cod CSI alternativ cu un singur octet 0x9B , care nu este acceptat de ANSI.SYS.

Driverele standard DOS ANSI.SYS acceptă doar următorul subset de secvențe de evacuare ANSI:

Secvenţă Efect
ESC [ r A Cursor sus ( CUU )
ESC [ r B Cursor jos ( CUD )
ESC [ c C Cursor forward ( CUF )
ESC [ c D Cursorul înapoi ( CUB )
ESC [ r ; c f Poziție orizontală și verticală ( HVP )
ESC [ r ; c H Poziția cursorului ( CUP )
ESC [ n J Afișare ștergere ( ED ) (n = 0, 2 sau n = 0, 1, 2)
ESC [ n K Ștergeți în linie ( EL ) (n = 0 sau n = 0, 1, 2)
ESC [ n m Selectați redarea grafică ( SGR ) (n = 0..47)
ESC [6 n Raportul de stare a dispozitivului ( DSR ) solicită poziția cursorului,
returnat ca raport de poziție a cursorului ( CPR ):
ESC [ r ; c R
ESC [s Salvați poziția cursorului ( SCP )
ESC [u Restabiliți poziția cursorului ( RCP )

Există, de asemenea, câteva secvențe de evadare specifice implementării ANSI.SYS . În general, acestea nu sunt acceptate de consolele ANSI în alte sisteme de operare.

Secvenţă Efect
ESC [ n h
ESC [? n h
ESC [= n h
ESC [> n h
Setați modul ecran ( SM )
ESC [ n l
ESC [? n l
ESC [= n l
ESC [> n l
Resetați modul ecran ( RM )
ESC [ n q Activați (n = 1) sau dezactivați (n = 0) / X suport
ESC [L Inserare linie ( IL )
ESC [M Ștergeți linia ( DL )
ESC $) 1 Comutați modul de introducere a tastaturii în coreeană ( Hangul )
ESC (2 Comutați modul de introducere a tastaturii în engleză
ESC [+ Activați ieșirea consolei
ESC [ - Dezactivați ieșirea consolei
ESC [ a ; b ; ... p Setați redefinirea cheii ( SKR / KR )
Moduri ecran
Mod Descriere Mod Descriere
0 40 × 25 monocrom 1 40 × 25 culori
2 80 × 25 monocrom 3 80 × 25 culori
4 320 × 200 culori 5 320 × 200 monocrom
6 640 × 200 monocrom
7 Înfășurați la sfârșitul liniei
13 320 x 200 color (grafică) 14 640 x 200 culori (grafică cu 16 culori)
15 640 x 350 monocrom (grafică 2 culori) 16 640 x 350 color (grafică cu 16 culori)
17 640 x 480 monocrom (grafică în 2 culori) 18 640 x 480 color (grafică cu 16 culori)
19 320 x 200 color (grafică 256-color)
114 640 x 480 color (grafică cu 16 culori) 115 640 x 475 culori (grafică cu 16 culori)

În unele implementări DOS, modurile video peste 7 nu sunt documentate. Sub DOS Multiuser , singurul argument valid în legătură cu PCTERM este 7.

Vezi si

Note

Referințe

linkuri externe