ANSI.SYS es un controlador de dispositivo de la familia de sistemas operativos DOS que proporciona funciones de consola adicionales a través de secuencias de escape ANSI . Se basa parcialmente en un subconjunto del estándar de control de terminal de texto propuesto por el Comité Técnico de Códigos y Conjuntos de Caracteres de ANSI X3L2 (el "Comité X3").
Como no estaba instalado de forma predeterminada y era notoriamente lento, un pequeño software lo aprovechó y en su lugar recurrió a manipular directamente el hardware de la PC de IBM. Se crearon varias alternativas de terceros que se ejecutaron a una velocidad razonable, como ANSI.COM , [1] NANSI.SYS [2] y ANSIPLUS.EXE [3] para intentar cambiar esto. [se necesita una fuente de terceros ]
Uso
Usar ANSI.SYS en DOS, se agrega una línea al CONFIG.SYS (o CONFIG.NT enversiones de Windows basadasen Windows NT ) que dice:
- DISPOSITIVO = unidad: \ ruta \ opciones ANSI.SYS
donde unidad: y ruta son la letra de la unidad y la ruta al directorio en el que se encuentra el archivo. Se encuentra ANSI.SYS y las opciones pueden ser varios modificadores opcionales para controlar el comportamiento. ANSI.SYS también se puede cargar en la memoria superior a través de DISPOSITIVO ALTO / HIDEVICE .
- / K usa funciones extendidas del BIOS del teclado ( INT 16h ) en lugar de las estándar [4]
- / L fuerza número de líneas
- / R ajusta el desplazamiento de línea para admitir lectores de pantalla [4]
- / S o / SCREENSIZE establecer tamaño de pantalla
- / X admite la redefinición de códigos de teclas ampliados independientemente de los códigos estándar [4]
Funcionalidad
Una vez cargado, ANSI.SYS permite que las secuencias de código apliquen varias funciones de formato de texto. Con este controlador, los programas que escriben en la salida estándar pueden utilizar los 16 colores de primer plano del texto y los 8 colores de fondo disponibles en el modo de texto compatible con VGA , hacer que el texto parpadee, cambiar la ubicación del cursor en la pantalla y dejar la pantalla en blanco. . También permite el cambio de modo de vídeo de 80 × 25 estándar modo de texto a un número de diferentes modos gráficos (por ejemplo, 320 × 200 modo de gráficos con el texto dibujado como píxeles, aunque ANSI.sys no proporciona llamadas para convertir individuo píxeles encendidos y apagados).
El estandar ANSI.SYS es relativamente lento ya que asigna secuencias de escape a las llamadas de BIOS equivalentes . Varias empresas hicieron reemplazos de terceros que interactúan directamente con la memoria de video , de manera similar a la mayoría de los programas de DOS que tienen una interfaz de usuario de pantalla completa.
Por defecto, el comando interno de DOS CLS funciona llamando directamente a la función de BIOS correspondiente para borrar la pantalla, violando así de manera prominente el modelo de abstracción de hardware que de otro modo se mantendría. Sin embargo, si DR-DOS detecta un controlador ANSICOMMAND.COM , en su lugar, enviará la secuencia de control definida en la variable de entorno reservada$ CLS al dispositivo de consola adjunto. [5] Si la variable de entorno no está definida, retrocede para enviar la secuencia. ESC [2 J en su lugar. [5] La especificación de otras secuencias se puede utilizar para controlar varios ajustes de pantalla después de un CLS . Debido a las dificultades para definir variables de entorno que contienen datos binarios, COMMAND.COM también acepta una \ nnn notación para números octales . [5] Por ejemplo, para enviar una secuencia de control alternativa como ESC + (para 1Bh 2Bh como lo usan los terminales ASCII ), se podría definir la variable de la siguiente manera:
- ESTABLECER $ CLS = \ 033+
Estas funciones son compatibles con COMMAND.COM en todas las versiones de DOS Plus y DR-DOS , pero no en MS-DOS o PC DOS. También son compatibles con los intérpretes de comandos en DOS concurrentes , DOS multiusuario y REAL / 32 , aunque utilizan secuencias de control VT52 en lugar de ANSI de forma predeterminada (p. Ej. ESC E ). [5]
Reasignación de teclado
Una característica interesante de ANSI.SYS es la capacidad de reasignar cualquier tecla del teclado para realizar atajos o macros para instrucciones complejas. Utilizando secuencias de escape especiales, el usuario puede definir cualquier pulsación de tecla que tenga una asignación de código de caracteres para simular una secuencia arbitraria de dichas pulsaciones. [6] Esta característica también fue utilizada por los malhechores para crear troyanos simples a partir de archivos de texto mezclados con malignas asignaciones de teclado, conocidas como "bombas ANSI". Se lanzaron varios productos para proteger a los usuarios contra esto:
- Algunas versiones de ANSI.SYS admiten un modificador de línea de comando para deshabilitar la función de reasignación de teclas, con la opción / S (Seguro) en ANSI.SYS de Datalight ROM-DOS [7] o NANSI.SYS [2] de FreeDOS . También se pueden configurar otros controladores ANSI como ANSIPLUS para deshabilitar la redefinición de claves. [3]
- Configuración de CONFIG.SYSSCREEN = ANSI en PTS-DOS proporciona un controlador ANSI incorporado que no admite las funciones de reasignación de teclado. [8] [9]
- Algunos de los reemplazos de ANSI.SYS de terceros se diseñaron deliberadamente para no admitir nunca las funciones de reasignación de teclado.
- PKWARE produjo un programa TSR , PKSFANSI (PK Safe ANSI), que filtra los códigos de escape de reasignación de teclado a medida que se escriben en la salida estándar. [10] Esto tiene la ventaja de que el usuario puede cargar algunas reasignaciones útiles desde un archivo de texto y luego ejecutar PKSFANSI para evitar futuras reasignaciones, posiblemente maliciosas.
Ocurrencia
ANSI.SYS apareció en MS-DOS 2.0 , la primera versión del sistema operativo que admite controladores de dispositivo. [11] Fue compatible con todas las siguientes versiones de MS-DOS. También está presente en muchos sistemas DOS que no son de Microsoft, por ejemplo, IBM PC DOS y DR-DOS . [12]
Se requirió que ANSI.SYS ejecutara algún software que usara sus funciones de cursor y control de color. [12] También podría utilizarse para habilitar códigos de color elaborados en el Mensaje de COMMAND.COM . Estos usos fueron eclipsados por el uso de ANSI.SYS en BBSes ; Se utilizaron secuencias de escape ANSI para permitir que los BBS enviaran gráficos de texto elaborados más elaborados que el arte ASCII y para controlar el cursor de formas que se usaron en varios juegos en línea y características similares.
La mayoría de las versiones de Windows no admitían códigos de escape ANSI de ninguna manera útil (podría ser utilizado por la emulación MSDOS en algunas versiones). En Windows 10, se incorporó soporte para secuencias de escape similares en la consola Win32 (la ventana del terminal de texto), pero debe activarse mediante la función API de WindowsSetConsoleMode
configurando la ENABLE_VIRTUAL_TERMINAL_PROCESSING
marca. [13]
Características
CSI ( Control Sequence Introducer ) es un marcador de posición para la secuencia de entrada de escape común de dos bytes " ESC [ "(es decir, 0x1B 0x5B ). [12] El estándar ANSI también define un código CSI alternativo de un solo byte. 0x9B , que no es compatible con ANSI.SYS.
DOS estándar Los controladores ANSI.SYS solo admiten el siguiente subconjunto de secuencias de escape ANSI: [12]
Secuencia | Efecto |
---|---|
ESC [ r A | Cursor arriba ( CUU ) |
ESC [ r B | Cursor abajo ( CUD ) |
ESC [ c C | Cursor adelante ( CUF ) |
ESC [ c D | Cursor atrás ( CUB ) |
ESC [ r ; c f | Posición horizontal y vertical ( HVP ) |
ESC [ r ; c H | Posición del cursor ( CUP ) |
ESC [ n J | Borrar pantalla ( ED ) (n = 0, 2 o n = 0, 1, 2) [nb 1] |
ESC [ n K | Borrar en línea ( EL ) (n = 0 o n = 0, 1, 2) [nb 1] |
ESC [ n m | Seleccionar reproducción gráfica ( SGR ) (n = 0..47) |
ESC [6 n | El informe de estado del dispositivo ( DSR ) solicita la posición del cursor, devuelto como informe de posición del cursor ( CPR ): ESC [ r ; c R |
ESC [s | Guardar posición del cursor ( SCP ) |
ESC [u | Restaurar la posición del cursor ( RCP ) |
También hay algunas secuencias de escape específicas para la implementación de ANSI.SYS . Generalmente no son compatibles con las consolas ANSI en otros sistemas operativos.
Secuencia | Efecto |
---|---|
ESC [ n h ESC [? n h ESC [= n h ESC [> n h [nb 2] | Establecer el modo de pantalla ( SM ) [nb 2] |
ESC [ n l ESC [? n l ESC [= n l ESC [> n l [nb 2] | Restablecer el modo de pantalla ( RM ) [nb 2] |
ESC [ n q | Habilitar (n = 1) o deshabilitar (n = 0) / X soporte [nb 3] |
ESC [L | Insertar línea ( IL ) [nb 4] |
ESC [M | Eliminar línea ( DL ) [nb 4] |
ESC $) 1 | Cambiar el modo de entrada del teclado a coreano ( hangul ) [nb 5] |
ESC (2 | Cambiar el modo de entrada del teclado a inglés [nb 5] |
ESC [+ | Habilitar la salida de la consola [nb 6] |
ESC [ - | Inhabilitar la salida de la consola [nb 6] |
ESC [ a ; b ; ... p | Establecer redefinición de claves ( SKR / KR ) |
Modo | Descripción | Modo | Descripción |
---|---|---|---|
0 | 40 × 25 monocromo | 1 | 40 × 25 colores |
2 | 80 × 25 monocromo | 3 | 80 × 25 colores |
4 | 320 × 200 colores | 5 | 320 × 200 monocromo |
6 | 640 × 200 monocromo | ||
7 | Envuelva al final de la línea [nb 7] | ||
13 | 320 x 200 colores (gráficos) | 14 | 640 x 200 colores (gráficos de 16 colores) |
15 | 640 x 350 monocromo (gráficos de 2 colores) | dieciséis | 640 x 350 colores (gráficos de 16 colores) |
17 | 640 x 480 monocromo (gráficos de 2 colores) | 18 | 640 x 480 colores (gráficos de 16 colores) |
19 | 320 x 200 colores (gráficos de 256 colores) | ||
114 | 640 x 480 colores (gráficos de 16 colores) [nb 8] | 115 | 640 x 475 colores (gráficos de 16 colores) [nb 8] |
En algunas implementaciones de DOS, los modos de video por encima de 7 no están documentados. En DOS multiusuario , el único argumento válido junto con PCTERM es 7.
Ver también
- Secuencia de escape ANSI
Notas
- ^ a b Los argumentos 0, 1, 2 solo son compatibles y se distinguen por las versiones japonesas de MS-DOS y PC DOSANSI.SYS . Problemas occidentales de ANSI.SYS no los admitirá ni los distinguirá. Sin embargo, también son compatibles con Multiuser DOS .
- ^ a b c d El prefijo de entrada '>' solo es compatible con las versiones japonesas de MS-DOS , PC DOS y DR-DOSANSI.SYS para acceder a modos especiales de visualización en japonés.
- ^ Esta secuencia de escape no estándar solo es compatible con MS-DOS y PC DOSANSI.SYS . Se puede usar para habilitar o deshabilitar el soporte de teclado extendido en tiempo de ejecución similar al ANSI.SYS/ X opción de inicio.
- ^ a b Estas secuencias de escape y no estándar para insertar y eliminar líneas solo son compatibles con las versiones japonesas de MS-DOS y PC DOS . También son compatibles con las versiones occidentales de Multiuser DOS , pero no con DR-DOS.
- ^ a b Estas secuencias de escape no estándar para cambiar entre los modos de entrada de teclado coreano e inglés solo son compatibles con las versiones coreanas de MS-DOS , PC DOS y DR-DOSANSI.SYS .
- ^ a b Estas secuencias de escape no estándar para deshabilitar y volver a habilitar cualquier salida al dispositivo CON: son compatibles con ANSI.SYS de DR-DOS 7.02 y superior únicamente. Se utilizan para silenciar la salida de la consola durante el arranque, por ejemplo, junto con los disquetes de arranque DR-WebSpyder .
- ^ Se usa un valor de 7 para habilitar (con SM ) o deshabilitar (con RM ) el ajuste al final de las filas. Si está habilitada, la opción hace que los caracteres adicionales se ajusten a la siguiente línea, mientras que estos caracteres se perderán si el ajuste está deshabilitado.
- ^ a b Los modos de vídeo 114 y 115 solo son compatibles con las versiones japonesas de DOS / V de ANSI.SYS se encuentra en DR DOS 6.0 , Novell DOS 7 y superior.
Referencias
- ↑ Mefford, Michael (7 de febrero de 1989). "ANSI.com: Descárguelo aquí" . Revista de PC . Consultado el 10 de agosto de 2011 .
- ^ a b Kegel, Daniel; Almy, Tom; Auer, Eric (28 de febrero de 1999). "NANSI - un controlador de consola mejorado de MS-DOS" . 4.0. Web Hostel de Dan Kegel. Archivado desde el original el 19 de mayo de 2018 . Consultado el 10 de agosto de 2011 .
- ^ a b Sweger, Kristofer (2007) [2000]. "Configuración de ANSIPLUS" . Archivado desde el original el 4 de octubre de 2018 . Consultado el 4 de octubre de 2018 .
- ^ a b c "Guía para usar ANSI.SYS" . Archivado desde el original el 23 de junio de 2007 . Consultado el 11 de septiembre de 2017 .
- ^ a b c d Paul, Matthias R. (30 de julio de 1997) [1 de mayo de 1994]. NWDOS-TIPs - Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds . MPDOSTIP . Release 157 (en alemán) (3 ed.). Archivado desde el original el 10 de septiembre de 2017 . Consultado el 6 de agosto de 2014 . (NB. NWDOSTIP.TXT es un trabajo completo sobre Novell DOS 7 y OpenDOS 7.01, que incluye la descripción de muchas características y elementos internos no documentados. Es parte del La colección MPDOSTIP.ZIP se mantuvo hasta 2001 y se distribuyó en muchos sitios en ese momento. El enlace proporcionado apunta a una versión anterior convertida en HTML del Archivo NWDOSTIP.TXT .) [1]
- ^ "Códigos de teclado ANSI - Clave ANSI.SYS y códigos de tecla extendidos" . µVGA - Interfaz de microcontrolador VGA . SECONS Ltd. 2012. Archivado desde el original el 11 de septiembre de 2017 . Consultado el 11 de septiembre de 2017 .
- ^ Datalight, Inc .; GPvNO (abril de 2005) [1999]. "Guía del usuario de Datalight ROM-DOS" (PDF) . Datalight, Inc. 3010-0200-0716 . Consultado el 16 de septiembre de 2018 .
- ^ "Manual de usuario de PTS-DOS 2000 Pro" (PDF) . Buggingen, Alemania: Paragon Technology GmbH . 1999. Archivado (PDF) desde el original el 12 de mayo de 2018 . Consultado el 12 de mayo de 2018 .
- ^ Günther, Jens; Ernst, Tobias (25 de abril de 2004) [1996]. Ellsässer, Wolfgang (ed.). "Inoffizielle deutschsprachige PTS-DOS-FAQ (PTS / FAQD)" [Preguntas frecuentes no oficiales de PTS-DOS en alemán] (en alemán) . Consultado el 2 de octubre de 2018 .
- ^ Massingill, Michael D. Pearson, Dave (ed.). "PK SAFE ANSI (PKSFANSI.COM)" . Archivado desde el original el 11 de septiembre de 2017 . Consultado el 11 de septiembre de 2017 .
- ^ Field, Tim (noviembre de 1983). "Controladores de dispositivos instalables para PC DOS 2.0 - Dentro de la PC IBM" . BYTE . 8 (11): 188-196 . Consultado el 19 de marzo de 2016 .
- ^ a b c d "Capítulo 9: Configuración del sistema" . Caldera, Inc. 1998. Archivado desde el original el 10 de septiembre de 2017 . Consultado el 10 de septiembre de 2017 . (NB. Documentación de usuario de DR-DOS 7, descripción de Secuencias de escape ANSI.SYS (incompletas))
- ^ "Secuencias de Terminal Virtual de Consola" . Consola de Windows .
enlaces externos
- "En DOS, ¿cómo puedo modificar mi mensaje o el color de la pantalla?" . Universidad de Indiana . 2010-10-25. Archivado desde el original el 11 de septiembre de 2017 . Consultado el 11 de septiembre de 2017 .
- Cambus, Frederic (19 de abril de 2017). "Un conjunto de herramientas para convertir archivos ANSi / BiN / ADF / iDF / TUNDRA / XBiN en imágenes PNG" . Archivado desde el original el 11 de septiembre de 2017 . Consultado el 11 de septiembre de 2017 .