Les unités de Pure Pascal (langage Pascal pour les ordinateurs de la gamme Atari ST), compatible Turbo Pascal.
Unité TOS : Fonction Pexec
Fonction Gemdos 75
Déclaration function Pexec( mode : Integer;
prgfile, cmdline : String;
envptr : Pointer ) : LongInt;
Description La fonction GEMDOS Pexec charge et/ou démarre le
programme prgfile avec la ligne de commande cmdline et l'environnement
envptr. Le paramètre mode peut prendre les valeurs suivantes :
| mode | Explication |
| 3 | Load, don't go: le programme est uniquement chargé en Overlay = Pluggin (ou pour lancer un programme dans un débugger).
Similaire au mode 0 (voir plus bas) avec les mêmes paramètres, à la différence que le programme n'est pas lancé immédiatement, mais qu'un pointeur vers la page de base du processus enfant est renvoyé sous forme de LONG. Le parent possède la mémoire de l'environnement et de la page de base (de type PD) de l'enfant et doit donc les libérer une fois l'exécution terminée.
Remarque : le vidage du cache de données et l'invalidation du cache d'instructions sont de la responsabilité de l'appelant dans le cas où l'intention n'est pas d'utiliser le mode Pexec 4 mais d'appeler manuellement la fonction du programme (par exemple, les plugins avec une table de sauts). |
| 4 | Just go: Un programme précédemment chargé est démarré, les paramètres
prgfile et envbptr doivent être égaux à 0. La page de base doit avoir été créée au préalable par le mode 3 ou 5. Le 3ème paramètre cmdline devient un pointeur vers la page de base (format de page de base = PD) du processus à exécuter. (A VERIFIER) |
| 5 | Create basepage : GEMDOS crée d'abord un nouvel environnement du processus en cours. Ensuite, le plus grand bloc de mémoire libre est alloué et une page de base est créée dans les 256 premiers octets. Le paramètre prgfile doit être à 0. Les règles suivantes s'appliquent au paramètre env :- -1 = Ne pas créer d'environnement
- NULL = Hériter de l'environnement du parent
Toute autre valeur est un pointeur vers l'environnement à hériter.
Avec MiNT, l'utilisation de ce mode, en conjonction avec le mode 3, permet d'émuler l'appel Pvfork sans bloquer le parent. |
| 6 | Just go, then free. À partir du TOS 1.04 (GEMDOS 0.15). Similaire au mode 4, à la différence que la mémoire allouée appartient au processus lancé (fils) et non au lanceur (parent) ; les blocs de mémoire de la page de base sont donc libérés automatiquement lorsque le processus fils est arrêté avec Pterm. Associé au mode 3, il permet d'obtenir le même effet qu'avec le mode 0. Note du webmaster : ça ressemble à la fonctoin |
Résultat La fonction renvoie le code de fin du programme
exécuté comme résultat. Lorsqu'une overlay a été chargée (mode 3), le
résultat contient l'adresse (type "pointeur") de la page de base. La page de base est
de type PD.
Si une erreur se produit avec Pexec, un code d'erreur négatif renvoyé.
Addentum du webmaster
Il manque des infos sur cette fonction dans le fichier d'ASH. Notamment sur les modes utilisés (voir cette page) qui sont
| mode | Explication |
| 0 | Load and go: Charge et lance le programme spécifié dans prgfile et transmet la commande cmdline. Renvoie un code de sortie WORD à la fin de l'exécution de l'enfant. Les conditions suivantes s'appliquent au paramètre envptr :
- -1 = Ne pas créer d'environnement
- NULL = Hériter de l'environnement du parent
Toute autre valeur est un pointeur vers l'environnement à hériter.
|
| 7 | Create basepage, respecting prgflags: Similaire au mode 5, mais dans le 2ème paramètre, on peut transmettre les mêmes informations que dans le champ ph_prgflags de l'en-tête du programme. Ce mode est utilisé par le BIOS du TT030 pour lancer GEM et n'est disponible qu'à partir de la version 0.19 de GEMDOS TOS 3.06).
|
| 100 | Load, go, don't wait: Similaire au mode 0, seul l'appelant n'attend pas la fin du programme lancé ; autrement dit, le processus parent est immédiatement renvoyé tandis que l'enfant poursuit son exécution. La valeur de retour est un code d'erreur négatif ou le PID positif de l'enfant. |
| 101 | Comme ce mode n'est utilisé en interne par MagiC que pour hériter des chemins et des gestionnaires de fichiers, les détails de la syntaxe exacte seront oubliés ici. |
| 102 | Is used internally by MagiC to remove a given process. Therefore the details of the exact syntax will be forgone here. |
| 104 | Just go, don't wait: Similaire au mode 4, seul l'appelant n'attend pas la fin du programme lancé. Un processus sera lancé dont la page de base a été définie précédemment avec le mode 3, 5 ou 7. Il est à noter que l'environnement et la page de base de l'enfant appartiennent également au parent (l'enfant hérite de toute la mémoire du parent). Le paramètre name est un pointeur vers une chaîne décrivant le nom du nouveau processus ; avec une valeur NULL, le nom du processus parent sera utilisé. La fonction renvoie un code d'erreur négatif ou le PID positif de l'enfant. |
| 106 | Just go, don't wait, no sharing: Similaire au mode 104, cependant, l'environnement et la page de base du processus enfant ne sont pas en possession du parent, et le processus enfant n'a pas accès à la mémoire allouée au processus parent. À la fin du processus enfant, sa mémoire est à nouveau libérée. Ainsi, en combinaison avec le mode 3, Pexec(106, ...) correspond au mode 100 (tandis que le mode 3 suivi du mode 6 correspond à un appel de Pexec(0, ...)).
N'est plus pris en charge à partir de MagiC 2.0. |
| 107 | Correspond essentiellement au mode 7 et est utilisé en interne par MagiC depuis la version 2.10. Par conséquent, les détails de la syntaxe exacte ne seront pas abordés ici. |
| 108 | Utilisé par MagiC depuis la version 2.10 en interne pour lancer un accessoire de bureau. La syntaxe exacte n'étant pas officiellement documentée, il est préférable pour les programmes de se rabattre sur shel_write. |
| 200 | Replace program and go: Similaire au mode 100, mais le nouveau processus écrase complètement l'ancien. Bien que l'ancien processus conserve son PID et la plupart de ses attributs, toute la mémoire qu'il occupait est libérée. Alors que Pexec(0, ...) peut être interprété comme un appel de sous-programme (call...return), ce mode agit davantage comme un « goto ». |
| 300 | |
| 301 | |
| 401 | Utilisé en interne par MagiC, la syntaxe exacte sera donc omise ici. |
Remarque : Tous les modes ne sont pas disponibles sous tous les systèmes d'exploitation ; il est donc important de prêter attention à la valeur de retour de la fonction. Les modes inconnus renvoient l'erreur GEMDOS TOS -32 (EINVFN).
Les lignes de commande sont transmises sous forme de chaîne de format Pascal, c'est-à-dire que le premier octet contient la longueur de la ligne (124 caractères maximum).
|
Vous trouverez dans cette zone la liste de toutes les Unités (équivalent des "Librairies" en C) de Pure Pascal. Les Unités indiqués comme standards existent dans la majorité des compilateurs Pascal existant sur ordinateurs 16 bits et au dela (dont Turbo Pascal 3 mini). Les unités indiqués comme Atari sont spécifiques aux systèmes d'exploitation des Atari ST (TOS n.n).
Accès aux unités
Les menus déroulants de chaque unité sont des accès directs aux procédures et fonctions, classés alphabétiquement (sans tenir compte de la casse, puisque le langage Pascal ne tient pas compte de la casse!)
Cette page Unités est issu du fichier UNIT.HLP de la documentation de Pure Pascal (d'Application Systems Heidelberg), qui a été convertie en format TXT puis traduite de l'Allemand grâce à Google Translator : des milliers de copier/coller de et vers Google translator ont été nécessaires, ne connaissant pas un mot d'Allemand!
Les unités CRT, DOS, Graph, Overlay, Printer et System sont standard à TOUS les compilateurs Pascal compatible avec Turbo Pascal 5. L'unité String a été introduit avec Turbo Pascal 7 (Et Pure Pascal 1.1) et permet de manipuler les chaines de caractères de type langage C. Les Unités GEM (VDI et AES) et TOS (BIOS, GEMDOS et XBIOS) sont spécifiques au système Atari ST et contiennent parfois des fonctions équivalentes à certaines fonctions des Unités générales (notamment BIOS). Les fonction XBIOS sont des fonctions permettant de tirer pleinement partie du matériel spécifique Atari, notamment Falcon (Audio, DSP, Blitter, Résolutions étendues etc)