CODING ★ Inititation à l'assembleur ★

Assembleur ACPC n°34

LA FIN D'UNE EPOQUE EPIQUE OPAQUE

Ce titre est là pour vous apprendre que le mois prochain, nous changerons de formule. Nous. reprendrons l'initiation à l'assembleur à son début. Ainsi, les récents acquéreurs de CPC pourront, eux-aussi, participer à cette rubrique.

Si nous avons décidé de remanier cette rubrique (lorsque je dis nous c'est en fait surtout Poum), c'est pour essayer de mieux coller au marché des machines et des logiciels. Cela fait maintenant deux ans que nous n'avons pas passé les bases de l'assembleur en revue ; il est onc bien temps de remédier à ce lacune. Mais nous ferons cela un autre jour.

En effet, il nous faut. avant tout. en finir avec l'article débuté il y a deux mois. Il s'agissait d'un programme permettant de calculer une trajectoire spiralée centripète rectangle. Comme nous vous avions prévenu, ce genre de sottise cachait une surprise que voici, made in RingardSoft.

Cette routine de calcul d'adresse sert en fait simplement à promener un sprite à l'écran. Encore faut-il que vous disposiez d'un de ces lutins. Ce sont les DATAs du programme Basic qui génèrent le nôtre. Il contient en fait une petite boule qui doit faire précisément 8 octets de large sur 16 lignes, soit 32 x 16 pixels en MODE 1. Le sprite, une fois réalisé, a besoin d'un petit programme pour l'afficher. Celui-ci est contenu dans le listing assembleur ci-contre.
Mais notre surprise est encore plus affolante que cela ( j'en suis tout émoustillé ). Sachez que le CPC, avec ce petit programme, est capable de gérer quelques milliards de sprites simultanément. Lancez et vous verrez. Voici, avant les explications, le mode de fonctionnement et les précautions utiles.

Il y a deux mois, nous vous avons servi un petit listing de calcul que vous devez merger à la suite de celui proposé aujourd'hui. Vous disposerez ainsi d'une routine implantable en 40000. Les étiquettes sont correctes, donc aucune modification majeure, si ce n'est la suppression des directives d'assemblage du premier source. Cela fait, générez le binaire et sauvez Ie sous le nom AS34.bin. Tapez le Basic et envoyez la purée. Vous obtiendrez normalement une petite animation à en perdre la boule.

FLI P-FLAP : FLOP

Quelques explications sur la technique employée. Elle est fort .simple et basée sur la manipulation de quatre écrans simultanément. Il s'agit en fait d'afficher un sprite sur le premier, de le rendre physique, d'afficher sur le second avec un déplacement, de le rendre aussi visible et de faire de même pour les deux autres. Après cela, recommencer jusqu'à ce que boat ou break s'ensuive. Comme un déplacement est généré entre chaque flipping, il en découle une animation. Pour les gens en peine de vocabulaire informatique, un écran logique est une zone mémoire considérée comme un écran, sur laquelle sont générés des affichages. Cette banque n'est pas obligatoirement visible sur le moniteur. Un écran physique est aussi une zone mémoire qui est, contrairement à la première, obligatoirement à l'écran mais pas forcément soumise à des modifications.

Le flipping est l'art de rendre quelques pages écran logiques et physiques tour à tour.

Le listing est divisé en deux parties. La routine AFF et ses appels. Pour chaque écran, nous retrouvons la même structure quatre fois en début de listing:

1 Affichage de la boule sur l'écran logique par soft.
2 Passage de cet écran en physique par les OUTs sur le CRTC.

Pas de grosse ruse dans cette partie si ce n'est que chaque sous-routine modifie directement l'adresse de base d'écran (MODIF+ 1).

Dans AFF, l'adresse de l'écran visé est ajoutée à la base (&C000) et l'affichage peut alors commencer. Pour chaque pixel du sprite, s'il est différent de zéro, l'emplacement écran est nettoyé avant d'être fusionné avec la couleur désirée pour le point. S'il y a des AND dans tous les sens, c'est à cause de la structure à la mords-moi le bip de cette vidéo au goût étrange venu d'ailleurs. Cette manipulation est, bien entendu, réalisée pour les 128 octets représentant le sprite.

UN P'TIT COUP D'VOP

Si Annie aime les sucettes du même goût. notre Robby centpourcentesque ne crache pas sur les Yop à la fraise. Quoiqu'en ce moment, il serait plutôt lait chocolaté. Je ne sais pas pourquoi je vous raconte tout cela mais c'est trop tard, c'est déjà écrit. Bref, si vous changez de module de calcul de trajectoire commençant à l'étiquette CALCUL, en prenant par exemple des tables contenant des courbes sinusoïdales, tout fonctionne de la même manière. Il ne tient qu'à vous d'optimiser la routine, histoire de faire quelque chose de plus propre, Faut dire que ce programme est un premier jet et que toute modification est obligatoire, si ce n'est nécessaire. Nous sommes ici pour vous inciter à programmer en vous donnant des astuces et des idées. Si nous vous mâchions le travail. vous ne seriez plus des artistes de la programmation, mais des zombies de l'informatique, A bon entendeur; assemblage. Que la vie vous soit douce et Dams docile.

C'est encore une fois le moment de nous quitter, histoire de mieux se retrouver dans quelques jours. Nous vous saluons en vous rappelant que votre courrier sera toujours le bienvenu.

100 DATA 00,00,03,0F,0F,0C,00,00
110 DATA 00,03,3F,FF,FF,CF,0C,00
120 DATA 00,3F,FF,FF,FF,FF,CF,00
130 DATA 03,FF,FC,FF,FF,FF,FF,0C
140 DATA 3F,FF,F0,F3,FF,FF,FF,0C
150 DATA 3F,F0,F0,F0.F3,FF,FF,CF
160 DATA 3F,FF,F0,F3,FF,FF,FF,CF
170 DATA 3F,FF,FC,FF,FF,FF,FF,CF
180 DATA 3F,FF,FF,FF,FF,FF,FF,CF
190 DATA 3F,FF,FF,FF,FF,FF,FF,CF
200 DATA 3F,FF.FF,FF,FF,FF,FF,CF
210 DATA 03,FF,FF,FF,FF,FF,FF,0C
220 DATA 03,FF,FF,FF,FF,FF,FF,0C
230 DATA 00,3F,FF,FF,FF,FF,CF,00
240 DATA 00,03,3F,FF,FF,CF,0C,00
250 DATA 00,00,03,0F,0F,0C,00,00
260 FOR I = 7000 TO 6999 + 8*16
270 READ A$:POKE I,VAL("&" + A$)
280 NEXT
290 OUT &BC00,6:OUT &B000, 12
300 OUT &BC00,7:OUT &B000,24
310 LOAD"AS34.BIN",40000
320 CALL 40000:GOTO 320
330 OUT &BC00,6:OUT &B000,25
340 OUT &BC00,7:OUT &B000,30
350 OUT &BC00,12:OUT &B000,48
360 OUT &BC00,13:OUT &B000,0

Sined le barbare, ACPC n°34 Fev91, p56-57

Page précédente : Bidouilles ACPC n°33 - Formatage de bronze
★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tool:
» asm34DATE: 2012-08-27
DL: 31
TYPE: ASM
SiZE: 3Ko
NOTE:

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Bidouilles ACPC n°16 - Bidouilles bizarres
» Coding » Assembleur ACPC n 02 - Les vecteurs d'interruption
» Coding » Assembleur ACPC n°11
» Coding » Bidouilles ACPC n°17 - Le catalogue AMSDOS
» Coding » Bidouilles ACPC n°31 - RSX
» Coding » Assembleur ACPC n°38 - Assembleur
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

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