★ CODING ★ CLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★ |
4/1.6.1 - SYMBOL et SYMBOL AFTER | Coding Classeurs Weka |
4/0 - Langages du CPC4/1.6 - Basic approfondi 4/1.6.1 - SYMBOL et SYMBOL AFTER Votre Logo personnalisé – Aller plus loin avec la redéfinition des caractères Rappels et compléments Nous allons dans ce chapitre, créer un petit programme affichant un logo au nom des Editions Weka, et que vous pourrez modifier afin de le personnaliser. Ce logo permettra d'étudier la fonction SYMBOL ainsi que SYMBOL AFTER, et d'en cerner un peu les restrictions d'utilisation. Avant toute définition de caractères, il est souhaitable de le signaler au Basic par l'instruction SYMBOL AFTER n. Cette fonction indique au Basic que des caractères dont le numéro commence en n + 1 vont être redéfinis. Après cette déclaration, vous pourrez redéfinir vos caractères par la commande SYMBOL N° de caractère (le petit programme de la Partie 5, chapitre 9 page 2 vous y aidera). Chaque caractère ainsi défini est accessible par la commande : PRINT CHR$(N° de caractère) Vous pourrez même les associer dans une chaîne de caractères, par exemple : A$ = CHR$(N°1) + CHR$(N°2) + ... etc ... Il est même possible d'y associer des caractères de contrôle permettant un affichage sur plusieurs lignes (les caractères CHR$(8) = retour d'un caractère ; CHR$(9) = avance d'un caractère ; CHR${11) = remonte d'une ligne sur la même colonne). Essayez par exemple, en utilisant les caractères prédéfinis dans le moniteur (c'est-à-dire en ne vous préoccupant pas encore de redéfinir un caractère – voir Annexe 3 pages 1 à 12) : Il est même possible de redéfinir tous les caractères de l'alphabet, comme dans certains logiciels du commerce, en gothique par exemple. Le numéro de réservation sera alors : SYMBOL AFTER 65 Programme exemple Revenons au programme de présentation de notre logo : – Ligne 60 : réservation de redéfinition pour les carctères à partir de 231. FOR i = 1 to 3000 : next i Nous espérons que votre curiosité et votre perspicacité vous inciteront à étudier ce programme et à le modifier pour créer votre propre logo. Les restrictions d'utilisation RÉCUPÉRATION DE MÉMOIRE Sans que vous le sachiez, le CPC effectue, lors de la mise sous tension, ou d'une réinitialisation, la réservation de la place mémoire pour 16 caractères redéfinissables. Par contre, si vous ne redéfinissez aucun caractère, il est possible de récupérer cette place mémoire (un caractère occupant 8 octets, on peut récupérer : 8 x 16 = 128 octets), grâce à la commande SYMBOL AFTER 256. SYMBOL AFTER ET MEMORY ; f- La commande SYMBOL AFTER est réputée pour faire très mauvais ménage avec l'instruction MEMORY. Essayez donc : MEMORY &9FFF et vous voilà face à un message d'erreur vous signalant : IMPROPER ARGUMENT alors que tout semble correct. Cela est très fâcheux lorsque vous désirez implanter des routines en langage machine et que vous désirez les protéger. Un premier remède qui semble fonctionner est d'inverser ces deux instructions. Mais ici aussi il y a un problème : si vous avez placé ces deux instructions dans un programme, dans cet ordre : 10 SYMBOL AFTER 200 et que vous en êtes encore aux essais de votre programme, tout se passe correctement au premier « RUN », mais de nouveau le message d'erreur précédent s'affiche au deuxième « RUN ». Cette routine effectue une réinitialisation complète de l'écan, des variables texte, des indirections de l'écran, de la table de contrôle, mais, ce qui nous intéresse avant tout : la table des caractères redéfinis est réinitialisée. Après tant de réinitialisation, on comprendra que l'appel de TXT-INITIALISE doit être la première instruction du programme. L'expérience indique que placer l'instruction SYMBOL AFTER avant la réservation mémoire provoque, lors de l'exécution de cette dernière un assez désagréable message d'erreur MEMORY FULL. On retiendra donc la séquence d'instructions suivante qui résoud les problèmes de redéfinition de caractères :
|