| Artículos | 01 ENE 1995

Portapapeles múltiple para DOS

Tags: Histórico
Herramienta que se ofrece con código fuente en C y ensamblador
César Alonso-Cortés.

Utilidad de portapapeles múltiple para DOS que permite almacenar y compartir información entre aplicaciones o ventanas de una aplicación. Está enfocado básicamente para hacer más llevaderas las labores de edición.

El concepto de macro nació ante la necesidad de automatizar procesos redundantes. Si se redacta un estudio de sistemas distribuidos, por ejemplo, llamará la atención el número de veces que se necesita teclear los términos ordenador, cliente, servidor, mainframe, Windows, Unix, etc. Si se resume un capítulo del Quijote, se necesitará teclear repetidamente Don Quijote, Sancho Panza, el caballero de la ilustre figura, Dulcinea, Rocinante, etc. Si se está programando en C, se cansará de emplear #define, #include, case ...:, break;, etc. En definitiva, cualquier actividad relacionada con el ordenador exige teclear muchos términos repetitivos en múltiples contextos de trabajo, un gran número de veces.

Es aquí donde cobra importancia el concepto de macros de teclado. Por su parte, la herramienta del portapapeles surge cuando hace falta compartir datos entre aplicaciones o entre distintas ventanas de una misma aplicación. Por ejemplo, muchos editores de texto, por no decir todos, tienen la posibilidad de programar macros de teclado por una parte, y tienen la posibilidad de almacenar y procesar bloques de información por otra, al estilo de un portapapeles.

El programa PORTAP que se presenta en este artículo es capaz de hacer las dos cosas: almacenar macros de teclado y almacenar bloques de información para luego ser reproducidos. Estas dos tareas pueden entenderse en realidad como una sola. El programa PORTAP tiene tres formas de capturar la información, según se verá. Los tres modos funcionan bajo programas que trabajen con pantallas en modo de texto, y el tercero de ellos puede emplearse también para los programas que trabajen en algún modo gráfico.

Además, hay otras herramientas incorporadas a PORTAP, que le facilitan las labores de edición. Dispone de un localizador de cursor, muy útil sobre todo para ordenadores portátiles, y tiene un detector de la tecla BloqMayús que le avisa visual y acústicamente del estado de esta tecla.

La posible coexistencia de PORTAP con otros gestores de macros le hace aun más potente e invisible. Al ser residente, puede complementar a cualquier programa de edición. De esta forma se pueden unificar herramientas, pues se podría emplear el mismo gestor de macros para múltiples entornos de edición diferentes.

Utilidades de PORTAP

A continuación se enumeran y resumen las utilidades más notables del programa PORTAP.

Gestión de bloques: Son muchos los editores con posibilidades de almacenar bloques de texto en memoria para luego borrarlos o copiarlos en el lugar deseado. El problema es que no suelen ser capaces de gestionar más de un bloque a la vez. El programa PORTAP puede capturar hasta 30 bloques distintos e insertarlos de una manera muy sencilla, cuando son necesarios.

Gestión de macros de teclado: Mediante cualquiera de las tres formas de captura de información (de pantalla o de teclado), puede asignarse una macro a una combinación de teclas determinada. La ejecución o invocado de la macro es muy sencilla. Análogamente al caso anterior se pueden almacenar hasta 30 macros de teclado. Dado que en el editor de macros pueden introducirse caracteres de control, Intro, etc, se podrán crear macros que automaticen una serie de procesos.

Localizador de cursor: Lo agradecerán sobre todo los que empleen pantallas LCD o de plasma. Para localizar el cursor solo se tiene que pulsar simultáneamente las dos teclas de shift. Entonces, aparecerá una flecha vertical que irá a parar justo encima del cursor.

Indicador del estado de la tecla Bloq Mayúsc: Son muchas las veces que pulsa por equivocación, y se escribe con mayúsculas o minúsculas si quererlo. Esta herramienta hará parpadear las primeras líneas de la pantalla cuando este activa la tecla de bloqueo de mayúsculas, y provocará un pequeño sonido cada vez que se pulse una tecla estando este bloqueo de mayúsculas activo. Este indicador se desactiva pulsando MMNO (Mayúsculas No), y se activa mediante MMSI (Mayúsculas Sí).

Visualizador de tabla ASCII activa: Si se teclea Ctrl+F11, y luego se pulsa A, se presenta la tabla ASCII completa. Pulsando otra tecla se vuelve a la pantalla anterior. Es útil en múltiples ocasiones para ver la equivalencia entre caracteres ASCII y sus representaciones binarias.

Detalles técnicos de interés

Quizá la idea más interesante del programa subyace en el listado adjunto. Es una de las rutinas en ensamblador del programa, y es la responsable de simular la pulsación de las teclas necesarias para generar las disintas macros.

Dado que el buffer circular de teclado situado en la RAM del PC tiene una longitud limitada, y nuestras macros han de tener casi cualquier extensión, antes de simular la pulsación de una tecla con la INT 16h (función 5h) se ha de comprobar entre otras cosas que caben teclas en el buffer circular de teclado. De otra forma se perderían pulsaciones al saturarse este buffer. La función de la figura 3 se activa 18,2 veces por segundo para comprobar si queda macro por ejecutar y, en caso afirmativo, coloca las pulsaciones que puede en el buffer de teclado.

Otra de las rutinas que merece la pena comentar es la función espera_tecla_1() que se encuentra en el fichero PORTAP_2.C. Simplemente espera a una pulsación de teclado, y devuelve el código ASCII y el de SCAN. Se ha programado de esta forma para evitar el empleo de la INT 16h que provocaba problemas de reentrabilidad con el código existente. Esta rutina puede serle muy útil para sus programas residentes.

Por último indicar que es necesario reestablecer el contenido de los vectores de interrupción originales antes de llamar a la función 49h de la INT 21h para liberar de memoria el TSR. Para este programa se ha utilizado la interrupción 9h de teclado, y la interrupción 1Ch del TIMER. La rutina de servicio de interrupción (RSI) del teclado lo primero que hace es llamar a la RSI de teclado antigua, por lo que no se pierde ninguna de las funcionalidades del gestor antiguo de teclado.

En el disco PC World de este més podrá encontrar el código fuente en lenguaje C y ensamblador empleado para la compilación del programa PORTAP. La ampliación del programa para que admita teclas de función y combinaciones del estilo Alt+letra, es muy sencilla.

Le animamos a que lo intente y esperamos que todo esto les sea de utilidad.

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información