★ AMSTRAD CPC ★ REPERAGE D'ERREURS DANS UN PROGRAMME ★

Edito Reperage d'Erreurs Dans Unprogramme

Cet article s'adresse à ceux d'entre vous qui passent des heures à taper sur leur CPC un programme qu'ils trouvent dans une revue comme celle que vous avez entre les mains, ou qu'ils ont conçu eux-même, pour obtenir un superbe plantage du système ou un mauvais fonctionnement du programme à la suite d'une faute de frappe ou d'une réelle erreur dans le programme d'origine.

Le problème de compatibilité entre les machines

La première chose à regarder lorsque vous tapez un programme provenant d'une revue est de vérifier que celui-ci tourne bien sur votre ordinateur. Il est en effet inutile de retaper tel quel sur un CPC un programme prévu pour un APPLE ! II est obligatoire de le transcrire car le Basic, malgré le fait qu'il est le langage utilisé par la pluspart des micro-ordinateurs familiaux du marché, est différent d'une machine à l'autre. Le problème se pose également entre les trois modèles CPC lorsqu'il s'agit d'un programme utilisant certaines routines se trouvant en ROM, ou encore certaines variables systèmes. Vérifiez dans ce cas que le programme qui vous intéresse tourne bien sur votre modèle de CPC (si bien sûr, vous en possédez un !).

Les programmes utilisant le langage machine

Certains programmes de jeux ou utilitaires possèdent une partie en langue machine. Pour que vous puissiez les retaper sans avoir à utiliser d'assembleur, les codes opérations (ces codes sont les seules instructions comprises par le microprocesseur, cerveau d'un micro-ordinateur, qui correspondent à des fonctions élémentaires tels que chargement ou sauvegarde d'un registre) sont mis en DATA el le plus souvent codés en hexadécimal. Lorsque vous avez fini de taper le programme, la première chose à faire est de le SAUVEGARDER. C'est impératif ! Si une des valeurs est erronée, lors d'un RUN, vous risqueriez de planter le programme el il vous faudrait alors retaper entièrement le programme car vous ne pourriez pas le récupérer.

Après cette sauvegarde, vous pouvez le lancer. S'il plante, ce n'est pas grave puisque vous l'avez sur cassette ou sur disquette. Vous n'avez donc pas à le retaper (avouez qu'il est rageant de taper un programme pendant deux heures pour rien !). Rechargez-le alors en mémoire et vérifiez-le lignes par lignes, instructions par instructions, et même caractère par caractère. Le langage ma< hine est impitoyable dans le cas d'une erreur. Le seul message qu'il renvoie est le plantage pur et simple du micro-ordinateur. Soyez donc très prudent.

Si, pour vos programmes, vous employez le système des DATA pour rentrer du langage machine et surtout, si vous désirez nous envoyez un programme utilisant ce procédé, forcez-vous à inclure dans le programme une routine d'auto-test qui, justement, vérifiera que les valeurs en DATA sont correctes. Voici une solution parmi tant d'autres. Il suffit d'utiliser une variable supplémentaire qui contiendra au fur et à mesure de l'implantation en mémoire des valeurs lues en DATA, la somme de celles-ci. En supposant que la routine de lecture des DATA se trouve en début de programme, voici un exemple que nous vous conseillons car elle évite le plantage fatal en cas d'erreur de recopie du programme :

10 somdat = O ' Initialisation de la variable test
20 FOR ad = adresse de début TO adresse de fin
30 READ da:POKE ad,da:somdat = somdat + da 40 NEXT ad
50 IF somdat<>X THEN ?"ERREUR DANS LES DATA": END
60 suite du programme

X est la valeur théorique qui est égale à la somme de toutes les valeurs contenues dans les lignes de DATA. Si le message "ERREUR DANS LES DATA" s'affiche, c'est que vous avez fait une faute de saisie, ou que la valeur X est fausse. De toutes façons, vérifiez vos DATA. Si c'est un message d'erreur du BASIC qui s'affiche, c'est qu'une donnée est incorrecte, ou qu'il manque une virgule. Pour connaître la DATA défaillante, faites simplement : PRINT ad adresse de début Le nombre qui sera alors affiché sera le numéro de la DATA qui est incorrecte. Il ne vous reste plus qu'à les compter jusqu'à ce que vous pointiez sur celle qu'il vous faut modifier Cette dernière astuce est valable pour tous les programmes BASIC contenant des DATA lorsque l'écriture de ces dernières provoque un message d'erreur lors d'un RUN.

Les messages d'erreurs du basic

Ces messages sont écrits en anglais du fait de la nationalité de P AMSTRAD et de celle du BASIC. Malgré tout, le manuel du CPC vous dit succintement ce qu'ils signifient. Reportez-vous y de temps en temps si vous ne comprenez pas votre message d'erreur, vous trouverez peut-être quelle en est la cause.

L'erreur la plus sournoise est le MEMORY FULL qui signifie mémoire pleine. Elle peut survenir lors d'un SYMBOL AFTER prenant trop de place en mémoire, ou encore lors d'un MEMORY. Elle peut aussi survenir lors d'une instruction comme DIM si la réservation de mémoire variables demandée est trop importante. Vous pouvez toujours connaître la taille mémoire disponible en tapant PRINT FRE(O). Le résultat obtenu sera en octets. Pour connaître la valeur en Ko, il vous suffit de diviser ce nombre par I 024 ( = 210). Ce message d'erreur peut avoir encore une origine beaucoup plus sournoise. Si vous avez trop de boucles imbriquées, ou de GOSUB, ou de WHILE, vous obtiendrez un MEMORY FULL. Vérifiez donc que vous n'avez pas de sortie de boucles, ou de sous-programmes, anormales. Dans ce cas, comme dans toutes les recherches d'erreurs, nous vous conseillons d'utiliser l'instruction TRON qui vous affichera, au fur et à mesure, les numéros des lignes parcourues par le programme. Vous pourrez donc ainsi vérifier que tout se passe bien comme prévu au niveau des lignes.

Correction d'une erreur de syntaxe

Ce type d'erreur est signalé, à l'exécution du programme, par le message SYNTAX ERROR IN LINE XXXX. C'est le type d'erreur le plus simple à corriger. Vérifiez que les instructions sont bien écrites. A ce propos, un conseil, lorsque vous tapez un programme, faites-le en minuscules. L'interpréteur convertira automatiquement les instructions pour qu'elles apparaissent en majuscules dans votre programme. Ainsi, si dans une ligne, une instruction n'apparaît pas en majuscules, c'est que sa syntaxe est incorrecte. Si toutes les insctructions sont correctes, vérifiez alors que vous avez bien laissé un espace entre une instruction BASIC et son, ou ses, paramètres. Par exemple, dans le cas de BORDER O, il faut obligatoirement un espace entre BORDER et O. Vérifiez aussi que vous avez bien mis les : entre deux instructions. S'il s'agit d'un programme que vous êtes en train de créer, n'utilisez pas de variables dont le nom contient celui d'une instruction appartenant au langage que vous utilisez. De plus, n'oubliez pas les paramètres nécessaires à certaines fonctions. N'hésitez pas, en cas de doute, à vous reporter au manuel de votre ordinateur, il est là pour ça !

Autres messages d'erreur

Certains messages d'erreurs, tel un SUBSCRIPT OUT OF RANGE IN UNE XXXX, ne vous donneront pas le numéro de ta ligne où s'est réellement produite Terreur. Dans le cas du SUBSCRIPT OUT OF RANGE, vous avez oublié de dimensionner votre variable (ou l'indice de dimension était trop petit) par l'instruction DIM.

Les erreurs anonymes

C'est le type d'erreurs le plus difficile à détecter, la bête noire des programmeurs. Le programme ne fonctionne pas correctement, mais aucun message d'erreur ne s'affiche. Le cas des DATA, vu précédemment, en est un bon exemple. Ne confondez pas un I avec un i ou un l, ou encore un O avec un 0. Un programme fait ce que l'on lui demande, à condition que cela soit fait dans les normes. La programmation est quelque chose de très strict. Soyez donc très vigilant ! Vous avez certainement remarqué, en lisant notre revue, des nombres entre crochets à la droite de chaque ligne des listings. Ils ne font, bien sûr, pas partie des programmes, mais sont utilisés pour le debugging (terme du jargon informatique signifiant recherche d'erreur) en utilisant le programme vérificateur V2 (Amstrad Magazine n° 16 p. 88) que nous republierons régulièrement. Ce dernier doit être utilisé dès que vous tapez un programme de notre revue. Il vous signalera, lorsque vous entrerez une ligne de programme, si elle contient, ou non, une erreur. Pratique n'est-ce pas ? De toutes façons, la meilleure façon de savoir corriger une erreur dans un programme, est encore de savoir programmer. Une très bonne méthode pour apprendre la programmation de base lorsque l'on est seul, est de transcrire un programme simple en BASIC d'un ordinateur à un autre. Cela impose une connaissance croissante du BASIC de son ordinateur ainsi qu'une méthode de recherche performante qui est utile lors du debugging. Ceci dit, bonne programmation !

A titre d'exercice...

Le programme vérificateur V2 paru dans AMSTRAD MAGAZINE N° 16 fonctionne très bien pour les trois modèles de CPC. S'il ne fonctionne pas correctement, c'est que vous ayez corn-mis une faute de frappe quelque part. Nous vous rappelons que vous devez sauvegarder le programme avant de la lancer par un RUN. En effet, une erreur dans les DA TA pourrait causer un plantage du système. Nous vous proposons donc une petite modification qui vous signalera une éventuelle erreur dans ces DATA. ATTENTION tapez bien le programme prévu pour votre version de CPC, 464, 664t 6128. Dans la modification que nous vous proposons, la variable SN dépend, elle aussi, du modèle de CPC que vous possède Lignes à rajouter au vérificateur V2 : Pour les trois modèles
135 somme = somme + VAL("&"+ byte$)

155 IF somme< >sn THEN PRINT "ERREUR DANS LES DATAS ":END

– Version CPC 464 :115 somme = 0: sn=33109
– Version CPC 664 :115 somme = 0: sn =33249
– Version CPC 6128 : 115 somme = 0:sn =33203

Si, lorsque vous lancez le programme» le message ERREUR DANS LES DATA s'affiche, vérifiez vos DATA ! Sauvegardez votre programme après que les modifications nécessaires ont été effectuées.

Nous vous rappelons que tes commandes du vérificateur V2 sont : |ON; |OFF; |CHECK,2 ; |CHECK,8 pour imprimante

NOTA : la barre verticale (« | ») s'obtient en appuyant sur et @.

Eric MISTELET , AMSTRAD MAGAZINE n°18 (Janvier 87)

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

Lien(s):
» » Edito
» » Edito Manuel Utilisateur 000
» » Edito Manuel Utilisateur 001
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 252 millisecondes et consultée 1003 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.