★ CODING ★ ESCARRE, GO AWAY ! ★ |
Bidouilles ACPC n°32 |
C'est qu'on en a chopé des ampoules, à essayer de faire de ce listing Assembleur un programme digne de ce nom. Espérons que nous y sommes parvenus. Dans nos élucubrations, une contrainte gigantesque nous a considérablement ralentis : le source devait être le plus court possible pour ne pas trop empiéter sur le texte l'accompagnant. Que de nuits passées... Les ampoules, ça va encore. Je ne vous parlerai pas de ce que nous avons aux fesses à force de rester assis devant le CPC. A part cela, nous n'avons pas trop mal réussi notre affaire. Le but était en fait de réaliser une routine capable de renvoyer une adresse à chaque appel. Nous ne parlons évidemment pas de l'adresse de Miss X, ni de celle de Robby qui, s'il n'est pas le plus intelligent de nous tous, est indubitablement le plus beau. Bref, ces maudites adresses représentent en fait les différents points haut-gauche d'un sprite qui suivrait un chemin spirale centrifuge rectangle, puis spirale centripète, rectangle itou ( pour les scatos, ne pas confondre avec vermifuge et pètophile ). L'idée de ce genre de trajectoire a dû venir à Poum lorsqu'il s'est mis à rêver de Tron. Vous vous rappelez ces petites motos qui laissent des murs derrière elles ? Eh bien, le déplacement de notre brave point fait un peu de même. Il s'enferme dans un rectangle et tournicote jusqu'à ce qu'il se trouve sur une trop petite surface pour y déambuler. A ce moment là, et pour obtenir un mouvement de type infini, il écrase ses traces jusqu'à son point de départ, d'où il repart pour recommencer sa ronde éperdument folle et inutile. Rien de bien compliqué, à première vue. Ecrit linéairement, ce listing aurait été un jeu d'enfant, mais voici ce que nous nous sommes fixé :
DES QUARTS, CASSONS ! Quatre parties pour le prix d'une. C'est une belle affaire, ma bonne dame. On peut les regrouper en deux parties distinctes : l'horizontale et la verticale. Dans chacune de ces deux subdivisions, il existe deux cas bien dissociables. Le premier et le second qui sont respectivement celui dans lequel on avance et l'autre chargé du recul (ND Sined : Lipfy, tu me copieras cent fois la phrase « je ne dis pas de grossièretés pendant les cours Assembleur »). Voici maintenant l'affectation de chaque registre du Z80 et des quelques variables de la routine, par ordre d'apparition, comme à la télé :
Les mêmes variables préfixées de Y ont les mêmes caractéristiques que les précédentes. La limite minimale est zéro pour les deux axes. En ce qui concerne l'algo, le, voici discrètement glissé en attendant les explications complètes du listing que nous ne pourrons vous fournir que le mois prochain, faute de place. Le pointeur part d'en haut, à gauche de l'écran. Il se dirige, bon an, mal an, vers le côté droit de l'écran. Lorsqu'il atteint XMAX, il lui retranche deux. Il tourne alors à droite, ce qui le fait descendre. Lorsqu'il tombe sur YMAX, il lui joue le même tour qu'à la limite précédemment fixée. Il retourne à droite, tentant de rejoindre la limite gauche de l'escargot nommée XMIN. Au moment précis où il l'atteint, il lui ajoute deux et se met à monter jusqu'à ce qu'il tombe sur YMIN. Dans ce cas, deux solutions. Si YMIN=STOP, alors on ajoutera deux aux maxi et on les retranchera des mini en arrivant à leur borne, histoire d'éloigner le tracé du centre de l'escargot. Seul YMIN revenu à 0 refermera dans ce cas le cercle infernal. Si YMIN est différent de STOP, alors les choses se poursuivent jusqu'à la condition remplie. LOGO EST LENT Si les torts ruent, alors nous pouvons mourir pour ne pas vous avoir livré toute la routine d'un seul coup, avec ses commentaires et ses remarques. En attendant le mois prochain, essayez de faire quelque chose avec cette trajectoire. Qui sait si elle ne cache pas une surprise. Poum & Sined, from Ringard Soft , A100 n°32 , Dec90
|