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ódigoSímboloDescripción
&07BELProduce un pitido.
&08BSRetroceso 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.
&0ALFAvance de línea. Se baja el cursor a la línea siguiente, desplazando la pantalla hacia arriba si es necesario.
&0DCRRetorno 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.)

SecuenciaDescripción
[ESC]0Desactiva 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]1Activa 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]ACursor arriba. Si ya está en la primera línea, ningún efecto.
[ESC]BCursor abajo. Si ya está en la última línea, ningún efecto.
[ESC]CCursor a la derecha. Si ya está en la última columna, ningún efecto.
[ESC]DCursor a la izquierda. Si ya está en la primera columna, ningún efecto.
[ESC]EBorrar 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]HCursor a la posición inicial. Lleva el cursor a la primera columna de la primera fila.
[ESC]IRetroceso de línea. Sube el cursor a la línea anterior, desplazando la pantalla hacia abajo si es necesario.
[ESC]JBorrar 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]KBorrar 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]LInsertar 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]MSuprimir 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]NSuprimir 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]dBorrar desde el principio de la página (hasta la posición del cursor inclusive). No se modifica la posición del cursor.
[ESC]eActiva 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]fInhibe el cursor.
[ESC]jAlmacenar la posición del cursor.
[ESC]kRestablecer la posición del cursor almacenada por [ESC]j.
[ESC]lBorrar línea. No se modifica la posición del cursor.
[ESC]oBorrar desde el principio de la línea (hasta la posición del cursor inclusive). No se modifica la posición del cursor.
[ESC]pActivar el modo de imagen invertida ("video inverso"). Los caracteres visibles se escriben con los colores de fondo y pluma invertidos.
[ESC]qDesactivar el modo de imagen invertida.
[ESC]rActivar el modo de subrayado. (No disponible en el CPC6128.)
[ESC]uDesactivar el modo de subrayado. (No disponible en el CPC6128.)
[ESC]vActiva 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]wDesactiva 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]xActiva 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]yDesactiva el modo 24x80. Se borra la pantalla.