CODING ★ AS SOIT FEE, UNE CHRONOBOURG ★

Assembleur ACPC n°19 - Création d'RSX

Par les temps qui courent, le maître Chrono fait chanter le Pierre. Sachant qu'un Pierre qui chante peut cacher un Pierre qui valse, on en déduit que la femme du chef de gare aime les RSX.

Pour en finir une bonne ibis pour toutes avec les interruptions, on vous a concocté un petit programme fort sympathique comme on les aime à la rédac, qui utilise bien évidemment les interruptions, mais en plus vous montre pour la énième fois la mise en place des RSX dans vos programmes. Pour changer des rectangles et cercles que l'on voit fleurir un peu partout et par toute saison, voici que l'idée d'un chronomètre nous à parue loin, mais vraiment loin, d'être bête !

UN CHRONO, SINON RIEN

Pour ne pas prendre la tête à tous ceux qui ne comprennent pas grand-chose à l'assembleur et qui, attirés par le listing, se trouvent parmi nous, je leur dirais de taper, sans erreur, le listing Basic, de le lancer et de tapoter ensuite sur les touches L, S et Z de leur clavier. A nous maintenant. Reportez-vous au source assembleur de notre chronomètre. Pour installer les RSX, on pointe le double registre BC sur une zone mémoire à laquelle se trouve l'adresse d'une autre zone dans laquelle sont mis les noms des commandés RSX. Je sais, cela fait beaucoup de zones pour rien, mais il faut absolument respecter cette logique. Pour les noms des commandes, il faut savoir que le bit 7 du code ASCII de la dernière lettre de chaque commande est mis à 1. Ce qui nous fait pour une commande "BIDULE", "BIDUL" plus la valeur 197, qui est la somme de 128 + la valeur ASCII de la lettre "E". Il faut mettre en fin de la table des commandes un joli zéro, sinon le CPC vous fera la tête. Tout cela pour dire à quoi il faut occuper le registre BC. La zone sur laquelle pointe le registre BC est suivie par les sauts aux différentes routines que vous voulez installer.

Le grand frère du petit BC, le registre HL, pointe sur une zone de quatre octets libres, c'est ensuite que vous pouvez en toute tranquillité appeler le vecteur BCD1 qui s'occupe d'installer les RSX. Voilà, et que je ne reprenne personne à nous redemander la méthode d'installation des RSX sinon je l'abonnerai à un autre journal que Cent Pour Cent. Un tout petit détail quand même. Le CPC n'aime pas que l'on installe plusieurs fois des RSX et, pour ne pas le contrarier, on place avant l'appel du vecteur BCD1, un petit C9 en début de routine, ce qui équivaut, comme tout le monde le sait, à l'instruction RET. Les trois RSX installés sont "LANCE", "STOP" et "ZERO". La première routine a pour but de mettre en marche le chronomètre. La deuxième arrête ce même chronomètre. La troisième routine remet les pendules à zéro.

LE CHRONO 3 EN 1

La précision de notre chronomètre sera de l'ordre du dixième de seconde et pourra vous indiquer un temps allant jusqu'à l'heure. Les données sont stockées sur cinq octets correspondant au label CRONO. Pour mettre une routine sous interruption, nous l'avons vu plusieurs fois ensemble, c'est le père BCD7 qui gère tout ce micmac, et cela tous les cinquantièmes de seconde (je rappeHe pour les cancres que le vecteur d'interruption au trois-centième est le docteur BCEO). Avec un petit compteur à la RUBI en début de routine, il devient trop facile d'appeler la routine tous les dixièmes de seconde (tout le monde sait que cinquante divisé par cinq font dix ?). La routine elle-même est ce que l'on pourrait appeler une routine optimisée au maximum. Je vous laisse le soin de l'apprécier à sa juste valeur. Les valeurs MAXI sont les limites que peuvent prendre les octets dans lesquels sont stockées les valeurs du chronomètre.

QUAND LE CHRONO MONTE A LA TETE

Il suffit de le débrancher. C'est bien sûr possible grâce au vecteur BCDD, qui stoppe les interruptions mises au cinquantième de seconde (toujours pour les mêmes cancres, l'arrêt des interruptions au trois centième se fait par Vector BCE6). Voici, voitou, on ferme les pages du grand livre des interruptions et des RSX pour, je l'espère, ne plus l'ouvrir avant un long moment. Vous avez le droit de revoir vos anciens Cent Pour Cent qui traitent le sujet, mais par pitié ne nous parlez plus des interruptions. Sur ce, je vais me brosser les dents et retrouver le royaume des rêves dans lequel je suis le guerrier qui tire plus vite que son ombre (me tromperais-je de scénario ?).

Zède, le maître Chrono, A100% n°19

Page précédente : Assembleur ACPC n°18

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

Lien(s):
» Coding » ASM 48: Quand Elmar fait des siennes
» Coding » Bidouilles ACPC n°03 - Catalogue décorés
» Coding » Assembleur ACPC n°45 - Le directeur rit ( Modification du catalogue AMSDOS )
» Coding » Bidouilles ACPC n°12 - Création de RSX
» Coding » Bidouilles ACPC n°31 - RSX
» Coding » Assembleur ACPC n 06 - Initiation : Les transferts
Je participe au site:

» 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 276 millisecondes et consultée 2136 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.