GESTION DE FENETRES
-------------------
Auteur : Claude Masoni
Publie dans Amstrad Magazine numero 18 * Janvier 1987
Ce programme utilitaire entierement ecrit en assembleur vous permet de
gerer facilement des fenetres a partir du Basic ou d'un programme en
langage Basic.
A partir du Basic, vous disposez des commandes RSX suivantes (precedees
de la barre verticale, notee |, obtenue en appuyant simultanement sur
SHIFT et @).
- |WINDOW, gauche, droite, haut, bas
- |CLS (effacement de la fenetre)
- |WIND, numero de fenetres texte
- |PRINT, colonne, ligne, texte a afficher, type de video
- |WINDOFF
L'ensemble est constitue de deux programmes : un chargeur Basic et un
petit programme de demonstration. Il vous faut tout d'abord saisir le
prermier programme (chargeur Basic). Ceci fait, sauvegardez-le. Puis
effectuez un <RUN> : le programme binaire s'elabore et l'ordinateur vous
propose de le sauvegarder sous forme de fichier binaire (WINDOW.BIN).
Suivez les instructions de l'ordinateur. Lorsque vous aurez sauvegarde
les routines binaires sous forme d'un fchier binaire appele WINDOW.BIN,
vous pouvez saisir le second programme (exemple d'application) que vous
sauvegarderez sous le nom de WINDOW.BAS.
Reutilisation du programme et mise en place des RSX :
MEMORY &A27B
LOAD "WINDOW.BIN:CALL &A280
Faire ensuite un RUN du programme utilisant les nouvelles commandes RSX.
Ce logiciel est compatible avec tous les modeles de CPC cassette ou
disquette. Afin d'eviter plusieurs initialisations des commandes RSX, le
programme passe le code &C9 a &A280 apres la premiere initialisation. Il
faut egalement proteger la memoire de la maniere suivante : si la plus
grande fenetre de votre programme tient tout l'ecran (WINDOW,1,80,1,25),
placez dans le programme :
MEMORY HIMEM-(80x25x8)-1
ceci afin de proteger vos variables lors de la mise en memoire d'une
fenetre.
Descriptif des commandes :
**************************
a) WINDOW, gauche, droite, haut, bas
------------------------------------
Les parametres sont identiques a ceux du WINDOW Basic.
Gauche : doit etre pris entre 1 et 79.
Droite : doit etre compris entre 2 80.
Haut : doit etre compris entre 1 et 24.
Bas : doit etre compris entre 2 et 25 (valeurs incluses).
Une erreur dans les parametres entraine un message d'erreur. Cette
commande definit les dimensions de la fenetre et la memorise.
b) CLS
------
Efface l'emplacement de la fenetre (remplissge par la couleur INK 0).
CLS peut etre utilise plusieurs fois pendant que la fenetre est ouverte.
c) CADRE
--------
Trace un cadre (de couleur INK 1) autour de votre fenetre. Peut etre
efface par |CLS et |WINDOFF.
d) WIND, numero de fenetre texte (de 0 a 7 inclus)
--------------------------------------------------
Affecte une fenetre de texte a l'interieur du cadre.
Ex : |WIND,7:LIST #7:PRINT #7:WINDOW SWAP,7... etc
e) |PRINT,x,y,"texte",video
---------------------------
Il s'agit d'une routine d'affichage rapide d'un message a l'ecran en
mode 80 colonnes, avec x=colonne de depart de l'affichage et y=ligne de
depart de l'affichage.
X et Y sont toujours fonction du coin superieur gauche de l'ecran.
"Texte" est le message a afficher et peut prendre les formes suivantes :
* Pour tous les CPC :
TEXTES$ (variable precedee de l'arrobas)
* pour 664 et 6128|: @ "texte","texte".
video : 0 ou 1. Si video=0, le message sera affiche en INK 1 sur fond
INK 0. Si video=1, l'affichage sera en INK 0 sur fond INK 1.
|PRINT permet un gain de temps a l'affichage d'environ 25% par rapprt a
un locate et print traditionnels.
f) |WINDOFF
-----------
Efface votre fenetre et retablit l'ecran original.
Erreurs :
*********
Toute erreur de parametres lors de l'utilisation des fenetres vous sera
signalee par la sortie de l'erreur 33, soit :
UNKNOWN ERROR
s'il n'y a par de traitement d'erreurs ou tout message que vous aurez
choisi lors du traitement d'erreur.
Exemple :
10 ON ERROR GOTO 60000
20 |WINDOW,1,83,1,25
...
60000 IF ERR=33 THEN PRINT "ERREUR DANS LA GESTION DES FENETRES
LIGNE";ERL
60010 PRINT "ERREUR NUMERO ";ERR;"LIGNE";ERL
60020 STOP
Cet exemple donnera lors de l'execution : ERREUR DANS LA GESTION DES
FENTRES LIGNE 20.
NOTA : le programme est prevu pour fonctionner en mode 80 colonnes :
cependant, les fonctions suivantes fonctionnent dans tous les modes
ecran :
|WINDOW
|CLS
|WIND
|WINDOFF
Pour WINDOW, les parametres seront les memes qu'en mode 80 colonnes (x
de 0 a 80, 40 etant toujours le milieu de l'ecran).
Toutes les commandes peuvent etre utilisees en mode direct ou dans un
programme. Pour un fonctionnement satisfaisant, l'ecran ne doit pas
avoir subi de scrolling.
Attention : la routine d'erreur n'est pas compatible avec le CPC 464.
Pour arranger cela, tapez :
POKE &A503,&94
POKE &A504,&CA