APPLICATIONSUTILITAIRES RSX/LIGNE DE COMMANDE ★ RSX - SCROLLING SUR AMSTRAD ★

Scrolling sur Amstrad|CPC Revue)Applications Utilitaires Rsx/ligne De Commande

Le Basic Locomotive de l'Amstrad est l'un des plus rapides et des plus complets qui soit. Néanmoins, il souffre de quelques lacunes. Les plus criantes sont certainement les fonctions SPRITE et SCROLL.

Pour ce qui est de la fonction SPRITE, les cours d'Assembleur publiés dans C.P.C et le programme REFONT d'Alain Larrode (Hors série n° 2) devraient suffire à votre fringale.

Reste la fonction SCROLL. En fait, la fonction SCROLL ou SCROLLING recouvre plusieurs phénomènes.

Le "Scrolling" le plus connu est celui obtenu en faisant LIST. Lorsque le listing arrive au bas de l'écran tout le texte se déplace vers le haut pour laisser la place à la ligne suivante C'est le Scrolling vers le haut Ce n'est pas le seul cas, car il est possible de Scroller dans les quatre directions.

Les Scrolling "bas vers haut'" et "haut vers bas" sont les plus faciles à maîtriser. C'est ceux-ci que nous allons étudier en premier.

Il est parfois nécessaire de ne pas faire scroller tout l'écran, pour conserver les scores, par exemple. Le Scrolling d'une fenêtre (Window) est suffisant dans bien des cas.

Ce qu'il faut, c'est localiser l'extrémité haute à gauche et l'extrémité basse à droite de la fenêtre dans laquelle aura lieu le Scrolling. Pour tout l'écran, nous aurons Locate 1,1 et Locate 40,25.

Il suffit, ensuite, d'envoyer un caractère de contrôle pour obtenir le Scrolling désiré.

Chr$ (11) pour monter
Chr$ (10) pour descendre

Le petit programme n° 1 vous montre le résultat obtenu

SCROLLING LATERAL

Le Scrolling latéral est le plus difficile à obtenir mais c'est aussi le plus spectaculaire. Qui d'entre nous n'a pas rêver devant le scrolling de Harrier Attack ou celui à ce jour, inégalé, de 5ème axe. Pour obtenir ce résultat, il existe deux méthodes.

a) travailler sur le contrôleur vidéo.

b) déplacer tous les octets d'une ligne de la mémoire écran de plus ou moins un.

Action sur le contrôleur vidéo.

Le contrôleur vidéo de votre ordinateur est un circuit intégré (68 45 pour les connaisseurs) dont le rôle est de transformer les octets de la mémoire écran en signaux vidéo.

Le Scrolling s'obtient en décalant l'adresse de départ de la mémoire écran. Deux commandes Out, suffisent à modifier les registres où est stockée l'adresse de départ.
Le plus petit décalage possible est de deux octets, ce qui nous fait 1 caractère en mode 1.

Voici les commandes OUT &B C 0 0, 13 . OUT &B D 0 0, X X étant le nombre d'octets multiplié par 2 du scrolling désiré. Pour un scrolling complet de l'écran, faire :

10 OUT &BC00,13:FOR H = 1 TO 40 OUT &BD00,H
20 FOR T = 1 TO 100 : NEXT T : NEXT H

Il est possible d'obtenir le même résultat sur un 464 sans Drive en faisant :

10 FOR H = 1 TO 40 : OUT 256, H : FOR T = 1 TO 100 : NEXT T : NEXT H

L'action sur le contrôleur vidéo offre même la possibilité de décaler écran et bordure (Border).

Décalage Bas-haut

OUT &BC00,7 : OUT &BD00, X (X entre 0 et 38)

Décalage latéral

OUT &BC00,2 : OUT &BD00, X (X entre 0 et 631

Si vous désirez approfondir vos connaissances sur ces effets, je vous conseille la lecture du livre "Peek et Poke sur C.P.C" paru chez Micro-Applications. Malgré tout, ces effets ne sont pas de véritables Scrolling. Si vous les avez testés, vous vous êtes rendu compte qu'en plus du Scrolling latéral, il se produisait au début de la routine un décalage vers le bas et en fin, un décalage vers le haut. De plus, il est parfois nécessaire de ne faire bouger qu'une partie de l'écran. Pourtant, tous ces effets peuvent trouver leur application dans un programme. Par exemple, lorsqu'un test de collision entre deux sprites s'avère positif.

En voici deux intéressants.
 

10 X = 8 : Y = 1 : OUT 255, X : OUT 256, Y

Amusant non ? Pour arrêter le massacre, faites :

OUT 256,2

Vous pouvez faire varier X et Y. Vous aurez quelques surprises et vous ne risquez qu'un plantage momentanné de votre ordinateur chéri.

Le 2ème avec le son en plus.
 

10 FOR H = 1 TO 20 : OUT &BC00,2 : OUT &BD00,49
20 FOR T = 1 TO 80 :NEXT : SOUND 1,1800 + (H * 50), 15,7,0,0,H
30 OUT &BC00,2:OUT &BD00,43
40 FOR T = 1 TO 80 : NEXT
50 OUT &BC00,2 : OUT &BD00,45

L'action du Scrolling par contrôleur vidéo ne peut avoir qu'une utilisation limité. Nous allons maintenant passer à quelque chose de plus sérieux.

Action sur les octets de ta mémoire écran.

La mémoire écran de l'Amstrad est composée de 400 lignes de 80 octets. 8 lignes écran faisant une ligne texte. Tous ces détails ont déjà été largement commentés dans le C.P.C n° 1. Si vous ne le possédez pas, faites le vous prêter. Si ce n'est pas possible ; volez-le !

Le principe de ce Scrolling est simple. Nous avons donc 80 octets par ligne. Nous prenons la valeur de l'octet n° 1 et nous la transférons quelque part dans la mémoire de l'ordinateur. Puis la valeur de l'octet n° 2 sera transférée dans l'octet n° 1. Le n° 3 dans le n° 2 et ainsi de suite pour les 79 octets de la ligne (LDIR pour ceux qui connaissent un peu l'assembleur). Pour finir, la valeur du n° 1 mise en réserve sera transférée dans l'octet n° 80.

Nous avons ainsi fait un scrolling d'une ligne sur un octet. Il suffira de répéter l'action 400 fois et c'est tout l'écran qui sera déplacé.

Pour obtenir ce petit miracle, tapez le programme n° 2. Pour plus de facilité, l'instruction a été conçue sous forme de R.S.X. Le nom de cette fonction sera ; |SCRDROIT,Z

Le paramètre Z après la virgule est le numéro de ligne texte - entre 1 et 25 -à sctoller. Pour un scrolling complet de l'écran faire

10 FOR H = 1 TO 80
20 FOR G = 1 TO 25
30 ISCRDROIT, G
40 NEXT G : NEXT H

Le programme n° 3 produit le même effet mais cette fois-ci du côté gauche. Le nom de l'instruction sera |SCRGAUC, Z

Il est à noter que pour que l'instruction soit efficace, il faut que l'écran n'ait pas déjà scrollé vers le haut ou vers le bas. L'instruction LIST provoquant le déplacement de l'adresse &C000 de la mémoire écran.

L'initialisation des instructions se fera par un
- CALL &A000 pour |SCRDROIT et
- CALL &A100 pour |SCRGAUC

Il est aussi possible de sauvegarder ces deux fonctions sous forme binaire en faisant.

Save "SCRDROIT", B , &A000, 80 et Save "SCRGAUC", B , &A100, 80 Au chargement, il ne faudra pas oublier le CALL pour l'initialisation.

J'espère que ces quelques exemples simples vous permettront de combler une des lacunes de votre ordinateur. Il vous est désormais possible de sortir de l'immuable programme de jeux à tableaux fixes.

A vos claviers...

CPC n°19

★ EDITEUR: CPC REVUE
★ ANNÉE: 1987
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LICENCE: LISTING
★ AUTEUR: CLAUDE LE MOULLEC

★ AMSTRAD CPC ★ DOWNLOAD ★

File:
» RSX-Scrolling  sur  Amstrad    (LMC)    FRENCHDATE: 2015-11-18
DL: 63 fois
TYPE: ZIP
SIZE: 19Ko
NOTE: 40 Cyls
.HFE: OUI

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX Clock
» Applications » RSX Byte Search
» Applications » Toolkit
» Applications » Double Hauteur (CPC Revue)
» Applications » RSX Speech Generator (Popular Computing Weekly)
» Applications » Spooler (CPC Amstrad International)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 108 millisecondes et consultée 1115 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.