APPLICATIONSPROGRAMMATION ★ WINDOWKEY ★

WindowkeyApplications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

SVENTANA INFORMATIVA PARA TECLAS DE FUNCIÓN

Todos hemos utilizado en más de una ocasión las posibilidades que posee el Amstrad para definir nuestras propias teclas de función, con lo que podemos efectuar mucho más cómodamente la labor de programación.

Aunque la posibilidad de utilizar dichas teclas posee unas ventajas enormes, en muchas ocasiones nos encontramos con el inconveniente de no acordarnos en qué tecla tenemos definido un comando concreto, por lo que tenemos que ir comprobando cada una de las teclas hasta encontrar la palabra clave que en ese momento deseamos utilizar.

Hemos pensado que una de las formas más sencillas de resolver este problema, sería crear una ventana informativa en la parte inferior de la pantalla, que nos presentará en cada momento cada una de las teclas de función definidas por nosotros, para así no tener que acordarnos de qué comando se encuentra en cada una de dichas teclas.

Pues bien, en el programa que acompaña a este artículo se encuentra la solución. Dicha rutina, se encarga de mostrarnos en cada momento todas las teclas de función, en una ventana situada en la parte baja de la pantalla. De este modo, podremos visualizar cuáles son las nuevas funciones de cada una de las teclas.

Para la utilización de esta ayuda de programación, únicamente deberéis copiar el listado para aquellos que posean ensamblador o bien el programa cargador en Basic para los que no tengan en su poder un ensamblador.

Una vez copiado el listado ejecutaremos el programa Basic. Si hemos cometido algún error, el programa nos lo indicará por lo que deberemos corregir las datas de nuestro programa.

En caso contrario podemos salvar ese programa en cinta o disco, de la siguiente forma:

SAVE «TECLAS», B, &A000, &150

Para la ejecución de la rutina una vez en memoria, únicamente deberemos teclear lo siguiente:

CALL &A000

A partir de este momento dispondremos de dos nuevos comandos que podrán ser utilizados desde Basic, gracias a las posibilidades de los RSX. Estos nuevos comandos son los descritos a continuación:

|ON... Activa la ventana informativa en la parte inferior de la pantalla.
|OFF... Desactiva dicha ventana informativa.

Como ya habéis podido observar, el programa utiliza las posibilidades de los RSX, para una mayor comodidad del usuario y además utiliza las facilidades que ofrece el Amstrad para el tratamiento de interrupciones.

Nos podríamos preguntar cuál es la necesidad de las interrupciones en el programa que estamos describiendo. Pues bien, la respuesta sería que debido a los posibles cambios en las teclas de función, la ventana informativa quedaría obsoleta si no se produjeran las modificaciones pertinentes y para que estas modificaciones se produzcan, no nos queda otro remedio que utilizar las interrupciones. Así pues, la rutina se ejecuta cada 1/50 segundos y se producen las modificaciones si éstas son precisas.

Vamos a entrar en la descripción del programa propiamente dicho. En primer lugar podemos observar que las primeras líneas del programa son suficiente conocidas por nosotros, ya que su misión es indicar al sistema que existen comandos RSX. A partir de ahí, definimos los nuevos comandos y su tabla de saltos, para que el sistema sepa a qué atenerse cuando un comando RSX es llamado desde Basic.

El programa en sí, empieza en la línea 220 que es donde se realiza el tratamiento de interrupciones, indicándole al sistema que se va a producir una interrupción y la posición de memoria a donde tiene que saltar cuando ésta se produzca. En la línea 300 podemos ver la rutina encargada de desactivar la interrupción, cuando no deseamos ver en pantalla la ventana informativa.

Una vez realizados estos pasos preliminares, entramos en la rutina a la que saltará el ordenador cuando se produzca la interrupción. En primer lugar tenemos la definición de ventanas, una para la información, en la parte inferior y otra en la parte superior, en la cual nosotros podremos realizar nuestros programas o ejecutarlos.

A continuación se produce un chequeo que comprueba en qué modo de pantalla se está trabajando, si en ese momento se trabaja en modo 0, no se ejecuta la rutina, ya que debido a la anchura de caracteres, no se podrían imprimir en pantalla el contenido de las teclas de función. Si está en otro modo, entonces se hacen los cambios necesarios para que la presentación sea la correcta en cada modo.

Ahora nos encontramos con un bucle, encargado de comprobar si se ha producido algún cambio en el contenido de las teclas de función, o sea, si nosotros hemos cambiado alguna de esas teclas, si es así, se salta a la rutina encargada de imprimir en pantalla el contenido de dichas teclas. Si al salir de dicho bucle se comprueba que no se ha producido ningún cambio, entonces se retorna al Basic.

Por último nos encontramos con la rutina encargada de la impresión de las teclas de función en la ventana informativa. Al inicio de esta rutina se carga el registro doble DE con la posición de memoria en donde se encuentra almacenado el contenido de las teclas de función.

El primer Byte de esa posición de memoria, nos indicará la longitud de la cadena de la primera tecla de función y a continuación se encuentra dicha cadena almacenada en forma de caracteres ASCI, el byte que sigue a continuación nos indicará la longitud de la cadena de caracteres correspondientes a la tecla de función siguiente, y a continuación tendremos los caracteres correspondientes a esa segunda tecla de función, y así sucesivamente hasta llegar a la cadena de caracteres que definen la última tecla.

Program Acción

Por lo tanto, lo que se hace para imprimir el contenido de cada una de las teclas, es tomar en primer lugar su longitud y la traspasamos al registro B, que será el encargado de indicar cuántas veces se debe repetir el bucle de impresión, a continuación tomamos el valor del siguiente byte que pertenecerá ya a la cadena que define la primera tecla, y lo imprimimos llamando a la rutina del firmware encargada de ello, y así hasta completar el bucle.

Una vez hecho esto se vuelve a repetir el mismo proceso para la impresión del contenido de la segunda tecla de función, repitiendo el proceso hasta llegar a la última tecla de función almacenada en esa posición de memoria.

Por último, diremos que la rutina que se encuentra listada a continuación, funcionará perfectamente en un Amstrad modelo 464, los usuarios que posean otro modelo, deberán tener en cuenta la siguiente modificación:

La etiqueta con el nombre de:

TECDEF: EQU #B446

deberá cambiarse por la siguiente:

TECDEF: EQU #B500

ésta se encuentra situada en la línea 1390 del listado ensamblador.

Para aquellos que prefieran el cargador Basic, deberán cambiar las líneas 300 y 400 por las que se indican a continuación:

300 DATA 33, 144, 181,221, 126, 0, 71
400 DATA 48, 161, 17, 144, 181, 213, 221

además la línea 50 deberá ser la siguiente:

50 IF SUMA < > &75FF THEN PRINT «ERROR EN DATAS»

Una vez efectuados dichos cambios el programa correrá en un Amstrad 664 y en un 6128.

Nota: Los teclas de fundón están numeradas del 0 al 9. Para definir una, se usa la orden KEY, seguida del número de tecla y de la cadena de órdenes. Por ejemplo:

KEY 0, "LIST"+CHR$(13)

al pulsar CTRL +0, aparecerá en pantalla el listado del programa.

AMSTRAD SEMANAL n°23

★ EDITEURS: HOBBY PRESS, AMSTRAD SEMANAL
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD SEMANAL 1986
★ AUTEUR: Alberto Súñer
 



★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» WindowKey    (Amstrad  Semanal)    (ASM-Sources)    SPANISHDATE: 2024-05-15
DL: 120
TYPE: PDF
SiZE: 552Ko
NOTE: 3 pages/PDFlib v1.6

» WindowKey    (Amstrad  Semanal)    SPANISHDATE: 2024-05-15
DL: 130
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 tracks
.DSK: √

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Varcut (CPC Amstrad International)
» Applications » Ace Software - Monitor / Monitor Código Máquina
» Applications » Basic - Locomotive
» Applications » TURBO Graphix
» Applications » SuperPack 80
» Applications » Turbo Basic
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 049 millisecondes et consultée 1988 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.