CODINGAMSTRAD CPC 464 - CRÉER DE NOUVELLES INSTRUCTIONS

Nouvelles Instructions 009

EXEMPLES DE PROGRAMMES

6. CERCLE RAPIDE

Attention, il est absolument nécessaire d'avoir au préalable étudié le programme précédent avant de passer à celui-ci.

Ce programme de cercle rapide est basé sur une idée fort simple : puisque les routines Sinus et Cosinus sont lentes, nous allons nous arranger pour les utiliser le moins possible. Pour ce faire, une solution vient immédiatement à l'esprit : calculer les sinus et cosinus des angles qui nous intéressent une fois pour toutes, et les ranger dans un tableau où nous n'aurons plus qu'à les lire.
Ce tableau comprendra 910 octets (de 42985 à 43894), et son remplissage se fera grâce à un petit programme BASIC qu'il suffira de lancer une fois avant le premier appel du programme "Cercle rapide". On pourra ensuite utiliser ce dernier autant de fois que l'on voudra, et la relative longueur d'exécution du remplissage (environ 8,6 secondes) n'est de ce fait pas gênante.
Voici le programme BASIC :

10 MEMORY 42984 : DEG : T = 42985
20 FOR I = 90 TO 0 STEP -1
30 A = COS(l) : FOR H = 0 TO 4 : POKE T + H,PEEK(@A + H) :NEXT H : T = T + 5
40 A = SIN(I) : FOR H = 0 TO 4 : POKE T + H,PEEK(@A + H) :NEXT H :T = T + 5
50 NEXT I

Si vous avez lu en Annexe V la section concernant les variables numériques, vous devriez le comprendre facilement :

La représentation en virgule flottante de COS(90) est stockée sur 5 octets (42985 à 42989), puis celle de SIN(90) sur les cinq suivants (42990 à 42994), puis celle de COS(89) sur les cinq suivants, puis celle de SIN(89), et ainsi de suite jusqu'à 0 compris. En bref, les cosinus et sinus alternent dans le tableau de 5 en 5 octets.

La plus grande partie du programme fonctionne exactement de la même manière que le précédent et beaucoup de lignes sont identiques. Elles ne seront plus expliquées autrement que par un renvoi aux lignes ou blocs de lignes identiques du programme précédent.

Il ne faut toutefois pas oublier que, ce programme n'ayant pas la même situation en mémoire, les adresses internes (placards et sous-programmes internes) seront différentes. Les placards, par exemple
commencent à l'adresse 42967 (&A7D7). Cela n'empêche évidemment pas que les démarches soient identiques.

Précisons enfin que toute la première partie (rendant PV optionnel et installant la protection) n'a pas été réécrite. Vous pouvez, bien sûr l'ajouter.

Tel qu'il est donc, ce programme ne peut soutenir que quatre paramètres et ne dessine que des cercles vides. Il commence en 42800, finit en 42966, n'est pas directement relogeable, et son format d'appel
est le suivant :

CALL 42800,XC,YC,R,C

Son chiffre de vérification est 26406.

Une petite astuce : si vous ne vous sentez pas le courage nécessaire pour ajouter la partie permettant l'option plein / vide, essayez ceci :

* Pour un cercle plein, ajoutez, immédiatement avant l'appel du programme, la ligne :

POKE 42927,&F9 : POKE 42910, &F9

* Pour un cercle vide, remplacez &F9 par &ED.

Ce procédé est, disons-le, assez rudimentaire et plutôt lourd à utiliser, mais il a au moins le mérite d'être simple à mettre en place.
Voici le listing de ce sixième programme :


★ ANNÉE: ???
★ AUTEUR: JEAN-CLAUDE DESPOINE

Page précédente : Nouvelles Instructions 008
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 250 millisecondes et consultée 976 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.