★ APPLICATIONS ★ DIVERS ★ RENUMEROTATION DES PROGRAMMES BINAIRES (CPC REVUE) ★ |
Renumerotation des Programmes Binaires (CPC Revue) | Applications Divers |
Régulièrement des petits programmes binaires paraissent dans les revues informatiques. Ils vous permettent d'améliorer vos propres programmes en leur ajoutant des fonctions difficiles, voire impossibles à obtenir en BASIC. L'habitude des concepteurs aidant, ils occupent le plus souvent la zone mémoire comprise entre &A000 et HIMEM. Ceci interdit ta présence simultanée de plusieurs d'entre eux en mémoire, car le dernier entré écraserait, ou tout au moins chevaucherait, ceux qui y sont déjà logés, empêchant leur fonctionnement correct. Le présent programme va rendre possible la cohabitation de plusieurs programmes binaires conçus initialement pour une même zone mémoire.FONCTIONNEMENT DU PROGRAMME Il est impossible de faire fonctionner un programme à une adresse différente de celle d'origine forsqu'il fait appel à des routines ou des données situées dans la même zone. En cas de déplacement, il ne trouvera plus à ces adresses ce qu'il était censé y trouver ; d'où un disfonctionnement pouvant aller jusqu'au plantage irrémédiable. Nous allons étudier le fichier binaire, instruction par instruction, pour repérer les adresses et les données codées sur 16 bits. Si elles appartiennent à Iq zone occupée par le programme, elles seront modifiées en tenant compte de la nouvelle zone souhaitée. Le rôle des DATA est de remplir un tableau de 256 variables V () contenant le nombre d'octets nécessaires à l'instruction considérée (de même rang). Exemple ; V(0) = 1 puisque l'instruction codée 0 (NOP) occupe un octet, de même que V(17) = 3 puisque l'instruction codée 17 (LD DE, DATA 16) occupe 3 octets. Seules les opérations utilisant 3 octets permettant de définir une adresse sont retenues, les autres seront ignorées. Il existe quelques cas particuliers constitués par des groupes de plus de 3 octets (LD RP, (ADRESSE), LD (ADRESSE), RP registres d'index, etc.). Dans ce cas, c'est l'octet suivant qui va nous renseigner sur la nature de l'instruction. Lorsque le code ne correspond pas à une de ces exceptions, c'est la valeur de la variable V qui est prise en compte et on passe à l'instruction suivante. Les instructions RSX (celles dont le' nom est précédé du signe | ) vont bénéficier d'un traitement de faveur. Le programme binaire permettant d'intégrer ces instructions au UTILISATION DU PROGRAMME
FOR X = &9000 TO &A700 : PRINT "&":HEX$(X,4h PEEK(X):NEXTLorsqu'une longue suite de zéros apparaît dans la colonne de droite, appuyez 2 fois sur ESC, puis notez la valeur hexadécimale affichée en face du premier zéro. Cette valeur sera pour vous l'adresse de fin du programme.
REMARQUE La renumérotation ne doit concerner que le programme et laisser intacts les textes ou les données qui lui sont associés. Au cas où vous feriez le traitement de telles zones, il pourrait s'ensuivre quelques modifications dues au fait que notre programme n'a pas fait la distinction entre instructions et données. Si tel était le cas, aidez-vous d'un logiciel assembleur-désassembleur pour effectuer les corrections.
|