| ★ CODING ★ CLEFS POUR AMSTRAD 1 ★ Système de base par Daniel Martin ★ |
| Clefs pour Amstrad 1 : 08 Format de Stockage Ligne Basic | Coding Clefs Pour Amstrad 1 |
FORMAT DE STOCKAGE D'UNE LIGNE BASIC EN MÉMOIREL'ordinateur ne comprend que des codes binaires. L'interpréteur Basic se charge de traduire vos programmes en langage binaire pour autant que ceux-ci soient écrits correctement. Stockage des instructions Basic A chaque instruction Basic, l'interpréteur affecte un code encore appelé TOKEN. Ce système permet un gain de place considérable en mémoire centrale car il est évident qu'un octet prend moins de place qu'un mot entier. C'est pourquoi, il ne faut jamais utiliser les noms des instructions Basic pour définir des variables. En effet, l'interpréteur les remplacera par le TOKEN de l'instruction correspondante. Le Basic commence à stocker ses lignes à partir de l'adresse 368. Voyons, à l'aide d'un exemple comment il stocke une ligne. Encodez le petit programme suivant : 1990 PRINT "COUCOU"Ensuite, tapez en direct la suite d'instructions suivantes :FOR I=368 T0 390:PRINT I;" ";PEEK(I):NEXT IVoici la suite de nombres qui apparaît ainsi que leur signification.
La longueur de la ligne est exprimée sur deux octets. Elle s'obtient au moyen de la formule : OCTET FAIBLE + (256 x OCTET FORT)Donc, la longueur de la ligne vaut : 15 + (Ox 256) = 15. Nous constatons que la ligne occupe effectivement 15 places mémoire.Le numéro de ligne est également exprimé sur deux octets. 11 s'obtient au moyen de la même formule que pour la longueur. Il vaut donc : 198 + (256 x 7) = 1990Pour remplacer le PRINT par REM, il suffit d'encoder directement : POKE 372,197, puis de faire LIST, et on obtient :1990 REM "COUCOU"Dès lors, vous pouvez à votre guise modifier vos programmes, ou mieux, les faire se modifier aux-mêmes en introduisant les lignes de POKE à l'intérieur du programme lui-même... Bon amusement !Voyons maintenant comment sont stockées les variables. Encodez le petit programme suivant : 10 ABC=20Ensuite, tapez comme précédemment :FOR I=368 T0 400:PRINT I;" ";PEEK(I):NEXT IVous voyez apparaître :
La valeur 13 en 372 est un code indiquant qu'il s'agit d'une variable numérique. Pour une variable alphanumérique, nous y trouverions la valeur 3. En 376, la valeur 239 représente le TOKEN du signe =. Le TOKEN du signe = est différent de son code ASCII. Ainsi, l'ordinateur sait que le signe = ne fait pas partie du nom de la variable. La valeur 25, qui se trouve en 379, indiquera grandeur de la variable. Voici les différentes valeurs que l'on peut trouver à cet endroit :
Dans le cas où la variable est un nombre négatif, le TOKEN du signe = (239) est suivi du TOKEN du signe - (245).
|