Capítulo 7. Para su referencia
Parte 16: Emulador de consola CP/M Plus
Contenido:
En la parte 1 de este capítulo hemos dado una tabla de caracteres de control con la descripción de sus efectos. Tales efectos son los que se producen cuando se envían los caracteres a la pantalla de texto desde BASIC o desde CP/M 2.2. Estas acciones han sido elegidas con los criterios de sencillez y de conseguir que ilustren algunas de las funciones disponibles en el bloque de "Text VDU" (pantalla de texto) del firmware. Estas funciones son peculiares de los ordenadores Amstrad, y por lo tanto los programas deben ser amoldados a ellas.
En el contexto de las aplicaciones comerciales que se programan para CP/M Plus, es normal esperar que los ordenadores dispongan de ciertas funciones estándar de control de la pantalla de texto, de modo que los programas sean fácilmente "trasladables" de una máquina a otra. La implementación de CP/M Plus en el CPC6128 incluye un emulador de consola que proporciona funciones de control similares a las del terminal Zenith Z19/Z29. El procedimiento de instalación de los programas escritos para CP/M Plus incluirá normalmente una opción para terminales de este tipo.
Entre las funciones incorporadas en el emulador de consola de CP/M Plus se encuentran muchas de las antes ofrecidas en el grupo "Text VDU" del firmware, aunque con diferentes códigos de control. Pero en CP/M Plus se dispone de un número considerable de operaciones nuevas y más complejas.
Los caracteres del margen de &20 a &FF se exhiben en la pantalla en la posición actual del cursor. Además, si el cursor no está en la última columna, se lo desplaza una posición a la derecha; si el cursor está en la última columna y está activada la continuidad de las líneas, se lo coloca en la primera columna de la línea siguiente, desplazando la pantalla hacia arriba si es necesario.
Los caracteres del margen de &00 a &1F se interpretan como códigos de control, según la siguiente tabla:
Código | Símbolo | Descripción |
---|---|---|
&07 | BEL | Produce un pitido. |
&08 | BS | Retroceso del cursor. Mueve el cursor una posición hacia la izquierda. Si el cursor está en la primera columna (pero no en la primera fila) y está activada la continuidad de las líneas, se lo coloca en la última columna de la fila anterior. |
&0A | LF | Avance de línea. Se baja el cursor a la línea siguiente, desplazando la pantalla hacia arriba si es necesario. |
&0D | CR | Retorno del carro. Lleva el cursor a la primera columna de la fila actual. |
Se ignoran todos los demás códigos de control.
El emulador de consola reconoce las siguientes secuencias de "escape". Todos los demás caracteres son exhibidos en la pantalla (con el consiguiente avance del cursor) aunque vayan precedidos del código de escape. Gracias a esta característica es posible enviar a la pantalla los caracteres visibles correspondientes a los códigos de control del &00 al &1F. (Obsérvese, no obstante, que en muchas aplicaciones se reinterpreta el código de control &09 (TAB) para que signifique cierto número de espacios; en tales casos la secuencia [ESC][TAB] no visualizará el carácter &09.)
Secuencia | Descripción |
---|---|
[ESC]0 | Desactiva la línea indicadora de estado. Los mensajes del sistema de disco aparecen en la pantalla principal, en la cual puede utilizar también la última línea. |
[ESC]1 | Activa la línea de estado. Los mensajes del sistema de disco aparecen en la última línea de la pantalla. |
[ESC]2<n> | Selecciona un juego de caracteres (véase la parte 17 de este capítulo). <n> es el parámetro selector de idioma, que se enmascara con &07. La acción consiste en intercambiar ciertas matrices de caracteres del margen de &20 a &7F con otras del margen de &80 a &FF; es muy similar a la que se realiza con impresoras que disponen de varios juegos de caracteres seleccionables por programa. <n>=0 EE.UU. <n>=1 Francia <n>=2 Alemania <n>=3 Reino Unido <n>=4 Dinamarca <n>=5 Suecia <n>=6 Italia <n>=7 España |
[ESC]3<m> | Selecciona el modo de pantalla. <m>=modo+&20. El valor se enmascara con &3 para limitarlo al margen de 0 a 2. El modo 3 se ignora. Se borra la pantalla, pero no se modifica la posición del cursor. |
[ESC]A | Cursor arriba. Si ya está en la primera línea, ningún efecto. |
[ESC]B | Cursor abajo. Si ya está en la última línea, ningún efecto. |
[ESC]C | Cursor a la derecha. Si ya está en la última columna, ningún efecto. |
[ESC]D | Cursor a la izquierda. Si ya está en la primera columna, ningún efecto. |
[ESC]E | Borrar página. La posición del cursor no se modifica. Esta secuencia borra la página entera, aunque se haya seleccionado el modo de 24x80. (Hay otros códigos de escape que sólo afectan al área 24x80 cuando está seleccionado este modo.) |
[ESC]H | Cursor a la posición inicial. Lleva el cursor a la primera columna de la primera fila. |
[ESC]I | Retroceso de línea. Sube el cursor a la línea anterior, desplazando la pantalla hacia abajo si es necesario. |
[ESC]J | Borrar hasta el final de la página (incluido el carácter que está en la posición del cursor). No se modifica la posición del cursor. |
[ESC]K | Borrar hasta el final de la línea (incluido el carácter que está en la posición del cursor). No se modifica la posición del cursor. |
[ESC]L | Insertar línea. La línea en la que está el cursor y todas las siguientes se desplazan hacia abajo; se borra la línea del cursor; la posición de éste no se modifica. |
[ESC]M | Suprimir línea. La línea en la que está el cursor se pierde; todas las siguientes se desplazan hacia arriba; se borra la última línea; la posición del cursor no se modifica. |
[ESC]N | Suprimir carácter. Todos los caracteres que están a la derecha del cursor, en su misma línea, se desplazan una posición hacia la izquierda. El carácter de la última columna queda en blanco. |
[ESC]Y<l><c> | Lleva el cursor a la posición especificada. Si esa posición sobrepasa algún borde de la pantalla, el cursor se queda en el borde correspondiente. <l>=línea+&20; <c>=columna+&20. El extremo superior izquierdo es línea 0, columna 0. |
[ESC]b<pc> | Establece color de pluma. Afecta a todos los caracteres presentes en la pantalla. El parámetro de color, <pc>, se enmascara con &3F y luego se lo interpreta como tres números de 2 bits que especifican las intensidades de los tres colores primarios: los bits 0 y 1 para el azul, los bits 2 y 3 para el rojo y los bits 4 y 5 para el verde. El 6128 proporciona tres niveles de intensidad, que se especifican de la siguiente forma: Bits para cada color: - Intensidad nula: 00 (binario) - Intensidad media: 01 o 10 (binario) - Intensidad máxima: 11 (binario) |
[ESC]c<pc> | Establece color de fondo. Afecta tanto al fondo como al borde de la pantalla. Los colores se especifican como en la secuencia anterior. |
[ESC]d | Borrar desde el principio de la página (hasta la posición del cursor inclusive). No se modifica la posición del cursor. |
[ESC]e | Activa el cursor. Para evitar el molesto parpadeo que de otra forma se produciría, el cursor está inhibido durante la escritura normal del texto y sólo se lo activa una décima de segundo después de escribir el último carácter. |
[ESC]f | Inhibe el cursor. |
[ESC]j | Almacenar la posición del cursor. |
[ESC]k | Restablecer la posición del cursor almacenada por [ESC]j. |
[ESC]l | Borrar línea. No se modifica la posición del cursor. |
[ESC]o | Borrar desde el principio de la línea (hasta la posición del cursor inclusive). No se modifica la posición del cursor. |
[ESC]p | Activar el modo de imagen invertida ("video inverso"). Los caracteres visibles se escriben con los colores de fondo y pluma invertidos. |
[ESC]q | Desactivar el modo de imagen invertida. |
[ESC]r | Activar el modo de subrayado. (No disponible en el CPC6128.) |
[ESC]u | Desactivar el modo de subrayado. (No disponible en el CPC6128.) |
[ESC]v | Activa la continuidad de las líneas. Cuando los caracteres enviados a la pantalla sobrepasan la última columna de una línea, siguen apareciendo al principio de la línea siguiente. |
[ESC]w | Desactiva la continuidad de las líneas. Cuando los caracteres enviados a la pantalla sobrepasan la última columna de una línea, se los ignora. |
[ESC]x | Activa el modo 24x80. Algunos programas requieren la pantalla estándar de 24 filas por 80 columnas. Esta secuencia selecciona esa pantalla, independientemente de cuál sea el tamaño total de la pantalla (que depende de la máquina), del país y de si la línea de estado está activada o desactivada. Se borra la pantalla. |
[ESC]y | Desactiva el modo 24x80. Se borra la pantalla. |