La page de base

Il y a une base page (ou page de base) pour chacuns des programmes chargés en mémoire. Cette base page a une taille de 256 octets et est initialisée par la fonction Pexec du GEMDOS. Elle contient des informations sur le programme chargé comme la taille des différentes sections (texte ou code, data, bss).

Format de la Page de Base:

Offset

Length

Value

Description

00

4

p_lowtpa

Début de la TPA

04

4

p_hitpa

Fin de la TPA + 1

08

4

p_tbase

Début du segment texte (code)

0C

4

p_tlen

Longueur du segment texte

10

4

p_dbase

Début du segement data (données initialisées)

14

4

p_dlen

Longueur du segement data

18

4

p_bbase

Début du segement BSS (données non initialisées)

1C

4

p_blen

Longueur du segment BSS

20

4

p_dta

Pointeur Disk Transfer Adress

24

4

p_parent

Page de base du programme parent

2C

4

p_env

Pointeur sur la chaîne d'environnement

80

80

p_cmdlin

Image de la ligne de commande/paramètres

...

...

...

Réservé

La fonction Pexec du GEMDOS (4B) stocke l'adresse de la page de base dans la pile utilisateur avant de donner la main à votre programme.

Donc la toute première chose à faire dans le programme est de récupérer cette information.

MOVE.L 4(SP), A5

et pensez éventuellement à la mémoriser, on ne sait jamais:

MOVE.L A5,pagebase

avec

pagebase dc.l 0

 

Grâce à la page de base, vous pourrez :

  • Redimensionner la taille allouée au programme et donc librérer de la place dans la TPA. Pour rappel, toute la mémoire disponible est allouée au programme avant chargement. Il ne sera donc plus possible d'allouer une nouvelle zone mémoire si vous ne faîtes pas un peu de ménage (Fonction Malloc() du GEMDOS par exemple).
  • Récupérer les paramètres passés au programme.

 

Image non trouvée !La DTA se trouve positionnée par défaut dans la page de base. Par conséquent, l'utilisation des fonctions GEMDOS Fsfirst() et Fsnext() vont effacer toutes les informations à partir de l'offset 20 (hexa) de la page de base. Voir le chapitre sur la DTA pour plus d'informations.