HIMEM
DESCRIPTION.
La pseudo-constante HIMEM retourne ou modifie l'adresse mémoire du premier octet mémoire libre.
SYNTAXE.
kadresse = HIMEM
HIMEM adresse
REMARQUES.
La mémoire disponible pour l'utilisateur est comprise entre LOMEM, l'adresse la plus haute et HIMEM, l'adresse la plus basse. Si ces deux valeurs se rencontrent, une erreur : No room, indétectable se produit.
Par défaut, HIMEM est légèrement inférieur à 2 Mo au-dessus de LOMEM. Si cette quantité de mémoire est insuffisante pour votre programme et vos données, vous pouvez augmenter HIMEM, et selon les capacité de votre machine.
Notez l'instruction INSTALL chargera les bibliothèques demandées immédiatement au-dessus de HIMEM. Donc, si vous modifiez la valeur HIMEM au-dessus de sa valeur toutes les bibliothèques présentes seront supprimées.
Si vous devez augmenter HIMEM, ne soyez pas tenté de le définir sur une valeur absolue, les adresses mémoire étant allouées par le système d'exploitation et donc varieront d'une session à l'autre. Définissez-le plutôt par rapport à la valeur d'une des pseudo-constantes PAGE, LOMEM ou TOP.
Pour de meilleures performances, définissez HIMEM sur un multiple exact de quatre, vous pouvez y parvenir en utilisant l'opérateur AND avec -4 (&FFFFFFFC).
Si vous devez réserver une zone mémoire qui ne sera pas affectée par CHAIN ou CLEAR, par exemple pour transférer des données entre programmes, vous pouvez réduire la valeur initiale de HIMEM. La zone mémoire comprise entre la nouvelle valeur de HIMEM et l'ancienne −1 ne sera pas utilisée par BBC BASIC, sauf lors du chargement de la première bibliothèque par l'instruction INSTALL.
D'une façon générale, si vous souhaitez modifier la valeur de HIMEM, il est préférable de le faire au début du programme. Mais surtout, la valeur de HIMEM ne doit pas être modifiée au sein d'une sous-routine provenant d'un appel de GOSUB, dans la définition d'une procédure ou d'une fonction personnalisée, ni dans une bloc d'instructions FOR / NEXT , REPEAT / UNTIL ou WHILE / ENDWHILE , ni dans un test conditionnel multiligne IF / THEN / ELSE / ENDIF.
La gestion de la mémoire étant susceptible de provoquer de grave dysfonctionnements à votre machine, parfois définitifs, elle doit être effectué uniquement par des utilisateurs avertis, veuillez consulter donc le manuel du BBC BASIC for SDL 2.0 pour tous renseignement concernant la gestion.
Voir l'instruction LOMEM qui retourne ou modifie l'adresse mémoire du dernier octet mémoire libre.
Voir l'instruction PAGE qui retourne l'adresse mémoire de départ du programme.
Voir l'instruction TOP qui retourne l'adresse mémoire du premier octet mémoire libre après la fin du programme en cours.
EXEMPLES.
PRINT HIMEM ; : REM - retourne la valeur de l'adresse en décimal
PRINT ~HIMEM : REM - retourne la valeur de l'adresse en hexadécimal
HIMEM = ( LOMEM + 10000000 ) AND -4
PRINT HIMEM ;
PRINT ~HIMEM
retourne (par exemple)
37953512 2451C00
14398860 DBB58C
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.