# Codi ESC ANSI

La norma de codis d'escapament ANSI X3.64 o ECMA-48 és la norma de l'American National Standards Institute (ANSI) impulsada per Bob Bemer a la dècada de 1970 i definida com l'estàndard de control de terminals basat en seqüències d'escapament emprades com caràcters de control per mostrar els caràcters en pantalla. La majoria dels emuladors de terminal actuals són compatibles amb el VT100 i per tant, apliquen aquesta norma. Cal tenir en compte però, que els diferents fabricants de terminals han dut a terme ampliacions de molts dels codis en el seva implementació particular.

## Seqüencies d'escapament

Les Seqüencies d'escapament ANSI definides inicialment per Bob Bemer, s'utilitzen per donar format a la sortida d'un terminal de text i es basen en l'estàndard ANSI, ANSI X3.64 (també anomenat ECMA-48). Quan s'intenta representar un codi d'escapament el terminal ho intercepta i actua en funció d'aquest codi, canviant el color o movent el cursor. Les possibilitats de les seqüències d'escapament són molt variades i s'utilitzaven per donar format i canviar l'aspecte del que es volia mostrar en la pantalla del terminal.
La majoria dels codis ANSI X3.64-control comencen amb el codi de control ASCII ESC (27 decimal, hexadecimal 1B), al que generalment segueix un claudàtor obert [ i uns quants codis de control:
* Esborrament de pantalla: ESC [2 J
* Moure el cursor: ESC [ mn fila F, columna H (posicionament de fila i columna)
* Regular el: ESC [1 m
* Tots els formats de: ESC [0 m
La majoria de llenguatges de programació d s'utilitzen els codis de control per a la impressió directament al terminal, que sol ser estàndard. Per exemple, el llenguatge C per esborrar el text de la pantalla del terminal -compatible ANSI X3.64 empra el següent codi:

## PC-DOS

El sistema operatiu IBM PC-DOS empra el controlador ANSI.SYS que té com el seu propi nom indica, una gran part de la norma ANSI X3.64, però també inclou alguns codis de factura pròpia. Potser la part incorporada més significativa és la possibilitat d'utilitzar codis de colors, sovint anomenats incorrectament "codis de color ANSI". Amb aquests codis, per a cada caràcter es poden triar i establir clarament vuit opcions per al color del text i vuit per al color del fons de manera que les opcions són pràcticament 16 caràcters ASCII gràfics, utilitzats en les targetes gràfiques de 8 bits del PC d'IBM emprant codis de control "tipus ANSI", que van ser especialment populars a la dècada de 1990.
A MS-DOS era necessari instal·lar el controlador ANSI.SYS, ANSI.COM o NANSI.SYSque permetia interpretar aquests codis. Tots els codis d'escapament comencen pels caràcters ESC (caràcter ASCII número 27 decimal, 1B en hexadecimal) seguit del caràcter [ .

## Atari ST

L'Atari ST va utilitzar un sistema d'ordres adaptat a partir del VT52 amb algunes expansions per al suport de color, en lloc de donar d'utilitzar els codis d'escapament ANSI.

## Amiga-OS

L'Amiga-OS no només interpreta les seqüències de codi ANSI per a la sortida de text a la pantalla, sinó que el controlador d'impressora Amiga-OS també les interpreta (amb extensions pròpies d'Amiga-OS) i les tradueix als codis necessaris per a cada impressora concreta que estigui connectada físicamentt.

## Taula de seqüències d'escapament ANSI

Alguns codis d'escapament :
| Seqüència | Acció |
| ESC [ n A | Mou el cursor cap amunt n files. Si el cursor es trobava a la part superior de la pantalla, no tenia cap efecte. Si no s'especificava n el cursor pujava una fila. |
| ESC [ n B | Mou el cursor n files cap avall. Igual que amb el desplaçament cap amunt, si el cursor es trobava a la part inferior de la pantalla el cursor no es movia, i si no s'especificava n baixava una fila. |
| ESC [ n C | Mou el curosr n columnes cap a la dreta. Si el cursor es troba en l'última columna aquesta comandament no té efecte. Si no s'especifica n el desplaçament és d'una columna. |
| ESC [ n D | Mou el cursor n columnes a l'esquerra, llevat que es trobi a la primera columna, en aquest cas no té efecte. Si n no s'especifica pren el valor d'1. |
| ESC [ n ; m f | Mou el cursor a la fila n i columna m . Si n no s'especifica el cursor es mou a la primera fila. |
| ESC [ n J | Esborra part de la pantalla. Si n val 0 s'esborra des del cursor fins al final de la pantalla. En cas que n valgui 1 s'esborra fins al principi de la pantalla des de la posició del cursor. Si n val 2 s'esborra tota la pantalla (i utilitzant ANSI. SYS de MS-DOS el cursor va al principi de la pantalla) |
| ESC [ n K | Esborra part de la línia. Si n és zero, des del cursor al final de la Lienas, en cas que valgui 1 s'esborra fins al principi. Si n val 2 s'esborra tota la línia. |
| ESC [ codi ; paràmetre [; paràmetre ] p | Amb aquesta comandament es redefineix el comportament d'una tecla. |
| ESC [s | Desa la posició actual del cursor. |
| ESC [o | Posar el cursor a la posició guardada anteriorment. |

## Colors

Taula de colors :
| Intensidad | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Normal | Negre | Vermell | Verd | Groc | Blau | Magenta | Cian | Blanc |
| Clar | Negre | Vermell | Verd | Groc | Blau | Magenta | Cian | Blanc |
| | Nom del color | Color estàndard VGA | CMD de Windows XP | Terminal.app | PuTTY | mIRC | xterm | CSS/HTML | X |
| Normal | Negre | 0, 0, 0 | 0, 0, 0 | 0, 0, 0 | 0, 0, 0 | 0, 0, 0 | 0, 0, 0 | 0, 0, 0 | 0, 0, 0 |
| Normal | Vermell | 170, 0, 0 | 128, 0, 0 | 194, 54, 33 | 187, 0, 0 | 127, 0, 0 | 205, 0, 0 | 255, 0, 0 | 255, 0, 0 |
| Normal | Verd | 0, 170, 0 | 0, 128, 0 | 37, 188, 36 | 0, 187, 0 | 0, 147, 0 | 0, 205, 0 | 0, 255, 0 | 0, 128, 0 |
| Normal | Marró/groc | 170, 85, 0 | 128, 128, 0 | 173, 173, 39 | 187, 187, 0 | 252, 127, 0 | 205, 205, 0 | 255, 255, 0 | 255, 255, 0 |
| Normal | Blau | 0, 0, 170 | 0, 0, 128 | 73, 46, 225 | 0, 0, 187 | 0, 0, 127 | 0, 0, 238 | 0, 0, 255 | 0, 0, 255 |
| Normal | Magenta | 170, 0, 170 | 128, 0, 128 | 211, 56, 211 | 187, 0, 187 | 156, 0, 156 | 205, 0, 205 | 255, 0, 255 | 255, 0, 255 |
| Normal | Cian | 0, 170, 170 | 0, 128, 128 | 51, 187, 200 | 0, 187, 187 | 0, 147, 147 | 0, 205, 205 | 0, 255, 255 | 0, 255, 255 |
| Normal | Gris | 170, 170, 170 | 192, 192, 192 | 203, 204, 205 | 187, 187, 187 | 210, 210, 210 | 229, 229, 229 | 255, 255, 255 | 255, 255, 255 |
| Clar | Gris fosc | 85, 85, 85 | 128, 128, 128 | 129, 131, 131 | 85, 85, 85 | 127, 127, 127 | 127, 127, 127 | | |
| Clar | Vermell | 255, 85, 85 | 255, 0, 0 | 252,57,31 | 255, 85, 85 | 255, 0, 0 | 255, 0, 0 | | |
| Clar | Verd | 85, 255, 85 | 0, 255, 0 | 49, 231, 34 | 85, 255, 85 | 0, 252, 0 | 0, 255, 0 | 144, 238, 144 | 144, 238, 144 |
| Clar | Groc | 255, 255, 85 | 255, 255, 0 | 234, 236, 35 | 255, 255, 85 | 255, 255, 0 | 255, 255, 0 | 255, 255, 224 | 225, 255, 224 |
| Clar | Blau | 85, 85, 255 | 0, 0, 255 | 88, 51, 255 | 85, 85, 255 | 0, 0, 252 | 92, 92, 255 | 173, 216, 230 | 173, 216, 230 |
| Clar | Magenta | 255, 85, 255 | 255, 0, 255 | 249, 53, 248 | 255, 85, 255 | 255, 0, 255 | 255, 0, 255 | | |
| Clar | Cian | 85, 255, 255 | 0, 255, 255 | 20, 240, 240 | 85, 255, 255 | 0, 255, 255 | 0, 255, 255 | 224, 255, 255 | 224, 255, 255 |
| Clar | Blanc | 255, 255, 255 | 255, 255, 255 | 233, 235, 235 | 255, 255, 255 | 255, 255, 255 | 255, 255, 255 | | |

## Referències

* ↑ computerhope.com
* ↑ «Withdrawn FIPS Listed by Number», 15-12-2016. [Consulta: 2 gener 2022].
* ↑ «The Great Curly Brace Trace Chase». Computer History Vignettes. Bob Bemer, 07-07-2002. Arxivat de l'original el 2013-07-29. [Consulta: 11 octubre 2009].
* ↑ Heathkit Company. «Heathkit Catalog 1979». Heathkit Company, 1979. Arxivat de l'original el 2012-01-13. [Consulta: 4 novembre 2011].
* 1 2 Frank da Cruz; Christine Gianone Using C-Kermit. Digital Press, 1997, p. 278. ISBN 978-1-55558-164-0.
* ↑ «ANSI.com: Download It Here». PC Magazine, 07-02-1989 [Consulta: 10 agost 2011].
* ↑ «Nansi and NNansi – ANSI Drivers for MS-DOS». Dan Kegel's Web Hostel, 28-02-1999. [Consulta: 10 agost 2011].
* ↑ «Printer and terminal escape codes». Arxivat de l'original el 20 setembre 2016. [Consulta: 22 juny 2020].
* ↑ «Amiga Printer Command Definitions». Commodore. [Consulta: 10 juliol 2013].
* ↑ ; Gildea, Stephen; Dickey, Thomas«XTerm Control Sequences (ctlseqs)», 2019.
* ↑ ; Gildea, Stephen; Dickey, Thomas«XTerm Control Sequences (ctlseqs)», 2019.
* ↑ «color-spaces.pl (a copy of 256colors2.pl from xterm dated 1999-07-11)». KDE, 06-12-2006.

## Enllaços externs

* Estàndard ECMA-48. Llista de codis de control definida al juny de 1991.