★ APPLICATIONS ★ DIVERS ★ ROCK'n SCROLL ★ |
Rock N Scroll (AM-Mag) | Applications Divers |
Les scrollings multidirectionnels Auteur fécond de programmes de qualité et didactitien hors pair, Claude LE MOULLEC nous prête aujourd'hui main-forte par un article sur les scrollings tous azimuts avec exemples à l'appui. Amateurs de sensations fortes, accrochez vos ceintures... Le Basic des CPC, un des plus riches qui soit, comporte néanmoins quelques lacunes ; entre autres, l'absence de fonction SCROLL. L'article qui suit a l'ambition d'y remédier. Avant toute chose, sachez que les plus novices d'entre vous ont déjà fait des scrollings sans le savoir. En effet, un simple LIST sur un programme de quelques Kilo-octets, suffit à provoquer un scrolling du bas vers le haut. Il s'agit là d'un Scrolling vertical. Pour ce dernier, assez facile à maîtriser, il est nécessaire de délimiter les coins de la fenêtre dans laquelle on désire réaliser un scrolling vertical. Pour un scrolling vertical vers le haut, les coordonnées du coin supérieur gauche de la fenêtre sont utilisées. A l'inverse, un scrolling vers le bas fait appel aux coordonnées du coin inférieur droit. Lorsque celles-ci sont connues, il suffit d'y envoyer le caractère de contrôle approprié. Pour, en mode 1, utiliser tout l'écran comme fenêtre de référence, il faut faire : LOCATE1,1:PRINTCHR$(11) :REM SCROLLING MONTANT Efficace, non ? Maintenant, rions un peu : 10 FOR i = 0 TO 10:LOCATE 1,1:PRINT CHR$(11):NEXT En fait, tout ceci n'est qu'un apéritif. Le plus intéressant des scrollings, celui qui offre le plus de possibilités, est le Scrolling latéral. Soit deux façons d'obtenir un scrolling latéral : LE CONTROLEUR VIDEO Les scrollings par action sur le contrôleur vidéo, ne sont, à mon humble avis, que des fioritures au pouvoir limité. Néanmoins, voici quelques exemples Issus d'une action sur celui-ci. 10 OUT &BC00,13:FOR H = 1 TO 40:OUT &BD00,H Dans le même genre, mais pour les possesseurs d'un 464 sans drive : 10 FOR H = 1 TO 40:OUT 256.H Dans ces deux exemples, nous avons agi sur la mémoire écran, grâce au contrôleur vidéo. Il est également possible de jouer de même sur la bordure par : OUT &BCOO,7:OUT &BD00.X (X entre 0 et 38 pour un décalage vertical) Pour plus d'informations sur ce chapitre, la lecture de PEEK et POKE paru chez Micro Application est vivement conseillée. Bien que, comme je l'évoquais plus haut, tout ceci me semble quelque peu limité, je vous offre néanmoins un petit gag pour terminer joyeusement ce chapitre. Faites... 10 X = 8: Y = 1 :OUT 255,X:OUT 256,Y Stoppez ce délire hallucinatoire par OUT 256,2 10 FOR H = 1 TO 20:OUT &BCOO,2:OUT &BD00,49 ACTION Nous abordons ici le système le plus intéressant : le scrolling va être effectué par une routine en assembleur offrant de larges possibilités. Auparavant, il est nécessaire d'avoir à l'esprit quelques notions sur la structure de la Ram vidéo des CPC. Cette mémoire écran est composée de 400 lignes de 80 octets chacune. Pour faire scroller une ligne de la gauche vers la droite, il convient de procéder comme suit. 10 FOR H = 1 TO 80:REM 80 OCTETS Bien qu'un peu longue, cette commande a l'avantage de pouvoir être utilisée par tout un chacun, sans connaissance particulière du langage machine. Deux autres routines, beaucoup plus courtes et offrant plus de possibilités, sont destinées aux utilisateurs avertis. Seule difficulté : définir trois paramètres déterminant la fenêtre à scroller et les inclure correctement dans la routine. Exemple : scrolling de la WINDOW # 1,5,25,11,15 en MODE 1. PRINT HEX$(&C000 + (Y-1 ) *80 + (X-1)*MO) D'après notre exemple, remplacez Y par 11 et X par 5. La variable MO prend la valeur 4 en MODE 0, 2 en MODE 1 et 1 en MODE 2. Le 1er paramètre de notre fenêtre doit être ici : &C328. Une chose encore, si vous choisissez le scrolling à droite, c'est le coin supérieur droit de la fenêtre qui est concerné (LOCATE 25,11 dans notre cas). De plus, il faudra augmenter l'adresse obtenue de 1 en MODE 1 et de 3 en mode 0, ceci parce que la formule détermine l'adresse de l'octet le plus à gauche du caractère texte. D'après notre exemple, remplacer FIN par 25, DEB par 5 et MO par 2. Le résultat est 42. Voilà. Bien qu'un tantinet plus complexe qu'une commande RSX, vous devriez, après quelques tâtonnements, saisir tous les mécanismes de cette routine. Les programmes 5 et 6 sont identiques aux 3 et 4. La seule différence réside dans la non reproduction de l'octet de bout ou de fin de ligne. Vous pouvez avantageusement remplacer un banal CLS par un scrolling de ce type pour tout l'écran. Ceux qui pratiquent l'assembleur, pourront modifier le programme afin de faire apparaître par le bord, un paysage ou tout autre décor de fond. Dans HARRIER ATTACK, le scrolling utilisé n'est guère différent de celui-ci. A vous maintenant d'utiliser à bon escient ce fabuleux savoir.
|