HANDLES Fonction Introduction
Fonction Utiliser les blocs mémoire
Fonction Les blocs mémoire systèmes
Fonction Index des fonctions

Page précédente



 

Monter Descendre Retour Introduction
puce La TI92 est capable de créer, redimmensionner, supprimer... des blocs mémoire grâce a des fonctions présentes dans la ROM.
Ceux-ci sont tout le temps utilisés, que ce soit pour sauver le contenu du presse-papier, de l'écran GRAPH, de l'écran PrgmIO, des variables ou encore de chaque résultats calculés dans l'écran HOME...

puce Je vous rappel aussi que la bibliothèque Kernel utilise les handles pour executer des programmes Fargo.





 

Monter Descendre Retour Utiliser les blocs mémoire
puce Notre calculatrice garde en mémoire ces blocs en leur assignant à chacun un numéro appelé handle ainsi qu'un pointeur. L'handle est un entier dont la taille est un mot et qui ne change plus tant que le bloc existe, et ce même si d'autres blocs sont détruits.

puce Comme nous venons de le dire, un pointeur (adresse) est associé à chaque handle.
Malheureusement ce pointeur est succeptible de changer quand d'autre blocs sont détruit ou redimmensionnés, ce qui peut etre fatal lors de l'execution d'un programme Fargo car le retour d'un saut pourrais ne pas se faire au bon endroit, un programme (variable) étant contenu lui-même dans un bloc mémoire dont l'adresse pourrait être changée !

puce David Ellsworth va résoudre ce problème dans la prochaine version de Fargo en chargeant les programmes Fargo en mémoire statique (à priori au sommet de la RAM), par conséquent que des blocs mémoire soient supprimés ou redimmensionnés ne changera en rien la position de notre programme.

puce Les pointeurs associés à chaque handle sont contenu dans une table pointée par la variable tios::Heap de la biblithèque TIOS.

puce Pour trouver l'adresse (double mot ) d'un bloc il faut utiliser la formule suivante :
adresse = ( (tios::Heap) + handle * 4 ) - 2
Si le résultat vaut zéro alors l'handle actuel ne correspond pas à un bloc.
Par contre si le résultat n'est pas nul alors vous avez le pointeur du bloc, le premier double mot correspond à la taille du bloc mémoire.

puce Les adresses de tous les blocs sont contenus dans une liste, le premier bloc est l'handle $0000 après ils sont disposés d'une façon désordonnée. L'adresse du prochain bloc est connue par la formule :
prochaine_adresse = adresse + (adresse).w * 2
La liste est terminée quand prochaine_adresse vaut 0.





 

Monter Descendre Retour Les blocs mémoire systèmes
puce Les vingt premiers handles ($00 à $14) sont des handles systèmes, c'est à dire utilisés par la TI-92 pour ses propres besoins.
Ces handles sont toujours présent et ne sont jamais détruits.

puce David Ellsworth conseille fortement de ne pas utiliser les handles systèmes !

puce A priori il n'y a pas de problème si vous utilisez les blocs mémoire de la table d'allocation de dossier, de la table d'allocation de fichier du dossier MAIN, des écrans GRAPH et PrgmIO mais étant donné que leur contenu est modifié, pensez à les initialiser (effacer l'écran) de sorte à ne pas avoir un affichage bizarroïde par la suite ;o)

puce Voici les fonctions relatives à chaque handle système :

$0000$0008
$0001$0009
$0002$000Acontenu du presse-papier
$0003$000Btable d'allocation de dossier
$0004$000Ctable d'allocation de variable du dossier MAIN
$0005$000D
$0006$000Edernière entrée dans l'écran HOME
$0007$000Fécran PrgmIO (239x103)
$0010$0011dernière entrée dans l'écran HOME
$0012$0013écran Graph (239x103)
$0014

puce Notez que les écrans PrgmIO et GRAPH n'ont de sauvegardé que la partie utilisateur (239x103), c'est à dire en dessous des menus déroulants haut et au dessus de la ligne de status bas.





 
Monter Retour Index des fonctions
puce Il y a des fonctions présentent en ROM pour gérer les blocs mémoire, ces fonction font donc partie de la bibliothèque TIOS.
@0002HeapFree
détruit un handle
@000BHeapFreeIndir
détruit et efface un handle
@0022HeapAllocThrow
crée un handle
@0003HeapAlloc
crée un handle
@000EHeapRealloc
redimensionne un handle




 

 

Lisez la section sur les droits d'auteur et la license d'utilisation avant de distribuer Zguide.

Zguide © 1998, Florian DREVET. Tous droits réservés à l'échelle mondiale