À propos de MPW Pascal
Le MPW PASCAL est une mise en oeuvre du langage de programmation Pascal faisant partie de Macintosh Programmer's Workshop. Il se compose de plusieurs fichiers disque :
- Le compilateur MPW Pascal
- Trois outils spéciaux, PasMat, PasRef et ProcNames, pour formater et croiser les programmes Pascal, pour produire des listes de procédures et fonctions dans vos programmes ou unités Pascal.
- Des fichiers de déclarations d'interface donnant accès aux routines Pascal, SANE et Macintosh.
- Les bibliothèques Pascal et SANE.
- Plusieurs exemples de programmes, avec des instructions pour les créer (y compris l'exemple de programme, TestPerf.p pour l'outil de performances PerformReport, se trouvant dans le dossier Tools sur le disque MPW)
À propos de MPW Pascal version 2.0
Le MPW 2.0 est beaucoup plus rapide et plus facile à utiliser que son prédécesseur. De nombreux nouveaux outils et options aux outils existants ont été ajoutés. Vous pouvez créer rapidement et facilement un programme simple ou un accessoire de bureau en utilisant le menu Build. L'interface de dialogue Commando rend les nombreuses options de commande disponibles dans des boîtes de dialogue, avec un texte d'aide sur chaque option instantanément disponible.
Les quatre listes ci-dessous résument les modifications apportées depuis la sortie de MPW 1.0 et indiquent où vous pouvez trouver plus d'informations sur ces modifications. La première liste décrit les changements immédiatement perceptibles : les menus. La deuxième liste mentionne les modifications et les ajouts au répertoire de commandes du MPW Shell. La troisième liste présente les nouveaux outils et les modifications significatives apportées aux outils existants. La liste finale détaille diverses améliorations.
Nouveaux menus : La première chose que vous remarquerez à propos de MPW 2.0 est que les menus ont subi une révision substantielle depuis la sortie de MPW 1.0 :
- Le menu Build vous permet de créer et d'exécuter des programmes simples entièrement en utilisant des menus, sans connaissance préalable de nombreux détails, tels que le langage de commande, le compilateur, l'éditeur de liens et les options make. Vous pouvez reconstruire des programmes complexes en sélectionnant un seul élément de menu, après avoir effectué un travail de configuration unique.
- Le contrôle Presse-papiers a été déplacé du menu Window vers le menu Edit. Le menu Edit contient un élément Show Clipboard basculant sur Hide Clipboard.
- Le menu Directory vous permet de définir le répertoire actuel. Utilisez le menu Créer pour créer des programmes résidant dans le répertoire actuel.
- La commande Enter a été supprimée du menu Edit. Il est plus rapide de cliquer sur le panneau État dans le coin inférieur gauche de la fenêtre active ou simplement d'appuyer sur la touche Enter.
- Les options de recherche (recherche en arrière, expressions de sélection,...) sont désormais contenues dans les boîtes de dialogue Find et Replace, sous forme de boutons radio et de cases à cocher. Une nouvelle option, Wrap-Around Search, a été ajoutée. Il y a désormais plus d'espace dans le menu Find pour ajouter vos propres éléments de menu personnalisés.
- Le menu Format a été remplacé par une commande Format... dans le menu Edit. Choisissez Format pour afficher une boîte de dialogue répertoriant toutes les polices disponibles dans leurs tailles réelles. Vous pouvez définir des onglets et une indentation automatique, et afficher des paramètres invisibles. Utilisez Command+Y pour afficher la boîte de dialogue Format.
- Le menu Mark permet de sélectionner de grandes portions d'un fichier texte en incorporant des marqueurs. Ce menu contient les commandes scriptables Mark, Unmark et Markers.
- Les styles d'éléments de menu (pour les fenêtres répertoriées dans le menu Fenêtre) sont nouveaux. Ils fournissent plus d'informations : Une coche standard indique la fenêtre active ; une puce indique la fenêtre cible ; les fenêtres sales sont soulignées.
- Le menu Window (anciennement Windows) contient désormais les nouvelles commandes TileWindows et StackWindows.
Nouvelles commandes Shell : Les nouvelles commandes intégrées sont :
- Exists : une nouvelle commande Shell intégrée, Exists, détermine l'existence d'un fichier ou d'un répertoire.
- Mark : cet élément du nouveau menu Mark affiche une boîte de dialogue vous demandant de fournir un nom pour un texte sélectionné.
- Markers : Cette commande affiche une liste des textes actuellement marqués.
- MoveWindow : utilisez cette nouvelle commande pour déplacer une fenêtre vers un emplacement h,v spécifié.
- Newer : Cette commande Shell intégrée compare deux mouches pour voir laquelle a été modifiée le plus récemment ; le nom de fichier le plus récent s'affiche.
- Quit : utilisez cette commande (l'équivalent de l'élément de menu) pour quitter MPW à la fin d'un script.
- Quote : comme Echo, Quote écrit ses paramètres sur la sortie standard, sauf que Quote écrit des paramètres contienant des caractères spécial, en plaçant ces caractères spéciaux entre guillemets simples.
- Revert : Cette commande ramène votre fenêtre actuelle à son état lors de la dernière sauvegarde. Cette commande est désormais scriptable.
- Shutdown : vous pouvez désormais effectuer un arrêt ou un redémarrage scripté de votre machine.
- SizeWindow : Cette commande définit une taille de fenêtre.
- StackWindows : Utilisez cette commande pour disposer les fenêtres ouvertes en diagonale sur l'écran.
- TileWindows : Vous pouvez organiser les fenêtres ouvertes à l'écran selon un motif en mosaïque afin que chacune soit entièrement visible. Sélectionnez ensuite la fenêtre souhaitée et utilisez le contrôle de la zone de zoom (ou son équivalent scriptable, ZoomWindow) pour agrandir la fenêtre ou la remettre en place.
- Undo : l'élément de menu familier permettant d'annuler votre dernière modification est désormais scriptable.
- Unexport : Cette commande supprime les définitions de variables de la liste d'exportation.
- Unmark : cet élément du nouveau menu Marquer affiche une boîte de dialogue vous demandant quels textes marqués vous souhaitez décocher.
- Which : Cette nouvelle commande Shell affiche le chemin complet d'un fichier/commande/alias donné.
- ZoomWindow : Vous pouvez agrandir ou réduire instantanément une fenêtre en utilisant cette commande scriptable. Il est pratique lorsqu'il est utilisé conjointement avec TileWindows.
Nouveaux outils : Les outils inclus avec le MPW 1.0 d'origine ont été améliorés de nombreuses manières pour des performances plus rapides et une polyvalence accrue. En plus de ces améliorations, les nouveaux outils suivants ont été développés :
- Assembler : les directives CYCLE et LEAVE ont été ajoutées au processeur de macros pour être utilisées avec les instructions WHILE. Les améliorations de performances devraient augmenter la vitesse des assemblages à forte intensité macro de 40 à 50 pour cent. Cette amélioration a nécessité un changement dans le format des fichiers LOAD et DUMP. Si vous utilisez cette fonctionnalité, vous devrez reconstruire tous les fichiers LOAD.
- Backup : ce nouvel outil polyvalent est conçu principalement pour sauvegarder les répertoires de projets plutôt que des disques entiers.
- Commando : Cette nouvelle interface utilisateur affiche dans des boîtes de dialogue toutes les fonctions, paramètres et options des commandes MPW. L'aide pour chaque option est disponible dans une fenêtre spéciale. Vous pouvez également utiliser Commando pour créer une interface de dialogue pour vos propres outils MPW.
- Compare : La nouvelle option -v affiche les différences entre deux bogues dans un format vous permettant de couper et coller les lignes de sortie dans un fichier source.
- DeRez : La nouvelle option -l vous permet de spécifier un ou plusieurs noms de chemin pour rechercher les fichiers #include. Une option -s vous permet de rechercher des inclusions de ressources.
- GetErrorText : Cette commande affiche le texte explicatif des messages d'erreur.
- GetFileName : Utilisez cette commande pour générer rapidement une boîte de dialogue standard.
- GetListItem : Cet outil facilite l'affichage d'une liste de sélection dans une boîte de dialogue.
- Link : Cet outil contient désormais l'optimiseur de table de méthodes pour l'objet Pascal, disponible en option -opt, éliminant ainsi tout besoin de l'outil Optimize distribué avec MacApp.
- MacsBug : les performances de MacsBug ont été améliorées et mises à niveau. MacsBug fonctionne sur Macintosh 512K, Macintosh 512K Enhanced et Macintosh Plus, ainsi que sur Macintosh SE et Macintosh II. Le coprocesseur à virgule flottante Mc68881 est pris en charge.
- MakeErrorFile : créez le texte du message d'erreur avec cette nouvelle commande.
- PerformReport : ce nouvel utilitaire rapporte le temps processeur passé dans votre code source ou la ROM par procédure. MPW 2.0 comprend un ensemble d'outils de mesure des performances pour évaluer la vitesse d'exécution de vos programmes.
- Print : Cette commande Shell a été modifiée pour s'exécuter sur tous les ordinateurs Macintosh, y compris Macintosh SE et Macintosh II, où elle utilise les nouvelles ROM. Trois options ont également été ajoutées.
- ProcNames : ce nouvel utilitaire Pascal répertorie les noms de procédures et de fonctions d'un programme, y compris leur niveau d'imbrication et leurs numéros de ligne.
- ResEqual : Cette commande compare deux bogues pour déterminer si elles disposent de ressources identiques.
- Resource Tools : Rez et DeRez ont de nouvelles règles de syntaxe, ainsi que de nouvelles fonctions et options.
- Search : un nouvel ensemble de cinq options a été ajouté pour augmenter la polyvalence de cette commande Shell pour rechercher à la fois des modèles correspondants et non correspondants.
- SetPrivileges : Vous pouvez désormais définir des privilèges d'accès aux dossiers partagés sur un serveur de fichiers AppleShare.
- SetVersion : Il s'agit d'un outil polyvalent permettant de conserver les numéros de version et de révision.
- Translate : Cette nouvelle commande vous permet de modifier toutes les occurrences des caractères sélectionnés dans un fichier. Il est utile pour modifier la capitalisation et pour recartographier les caractères de contrôle ASCII.
Autres nouveautés :
- Capacités de l'éditeur : plusieurs nouvelles fonctionnalités ont été ajoutées.
- Les combinaisons de touches Command+flèche déplacent le curseur vers les extrémités du document.
- Command+Backspace supprime dans EOF.
- Command+D ouvre la sélection.
- Command+B efface la sélection.
- Command+W ferme la fenêtre.
- La commande point permet d'annuler.
- Option -<: Certaines commandes affichent une boîte de dialogue pour une décision de l'utilisateur lorsqu'un conflit survient. L'option -c équivaut à répondre «annuler» à n'importe quelle boîte de dialogue pouvant autrement s'afficher. Dans les cas où l'utilisateur clique sur Cancel dans une boîte de dialogue de confirmation, le retour d'état, dans MPW 2.0, est différent de zéro. La fonctionnalité est utile dans les scripts Shell. Par exemple, l'option -c utilisée dans une commande en double annulera le script si un conflit survient d'une manière ou d'une autre. Vous pourrez alors enquêter sur la cause du conflit.
- Fichiers verrouillés : les fichiers verrouillés peuvent être dupliqués, mais ne peuvent pas être renommés ou déplacés.
- Impression : vous pouvez désormais imprimer à partir du Finder.
- Rotation du curseur : sachez qu'une modification de la rotation du curseur depuis MPW 1.0 entraînera le blocage des anciens outils lors de la recompilation.
- Scripts Shell : les six scripts de commande répertoriés ici sont inclus pour prendre en charge les éléments des nouveaux menus Directory et Build. Vous pouvez facilement les personnaliser :
- Build
- BuildCommands
- BuildMenu
- CreateMake
- DirectoryMenu
- SetDirectory
- Variables Shell standard : les trois nouvelles variables Shell standard répertorié ici sont incluses dans MPW 2.0 pour prendre en charge Commando :
- {Aliases}
- {Commando}
- {Windows}
- Panneau d'état : placer la flèche de la souris dans le panneau d'état dans le coin inférieur gauche de la feuille de calcul MPW transforme le panneau en un contrôle Do It. Cliquer sur le contrôle équivaut à appuyer sur la touche Enter.
À propos de MPW Pascal version 3.0
Le MPW 3.0 Pascal est une version de remplacement de MPW Pascal 2.0. Si vous connaissez MPW Pascal 2.0.
En plus de fournir presque toutes les fonctionnalités de Pascal décrites dans la norme ANS Pascal, MPW 3.0 Pascal inclut les nouvelles fonctionnalités suivantes étendant la puissance et la flexibilité de la programmation Pascal :
- Support de SADE, le débogueur symbolique.
- Un remplacement de la directive $LOAD.
- L'utilisation de constantes de caractères comme expressions de chaîne de caractères valides.
- prise en charge étendue et améliorée des symboles pour MacsBug.
- Prise en charge de plus de 32 000 données globales.
- Exigences moins strictes pour les références de classe avancées.
- Nouvelle organisation des fichiers d'interface.
À propos de la SADE et de MacsBug
Le Symbolic Apple Debugging Environment (SADE) est un débogueur symbolique avec une interface graphique interactive comme celle du MPW Shell. Vous pouvez surveiller l'exécution de votre programme simultanément au niveau du processeur et au niveau de la source symbolique du programme. Cette première version de SADE comprend :
- Affichage de la source et points d'arrêt de la source
- Affichage variable selon le type (y compris les enregistrements)
- Affichage des structures du système Macintosh
- Langage de commande programmable et extensible
SADE est inclus avec le programme MPW 3.0 mais documenté séparément dans la référence SADE. L'application MacsBug familière a été améliorée pour MPW 3.0 et est également documentée dans un volume séparé, MacsBug Reference.
MacsBug prend entièrement en charge les microprocesseurs MC68000 et MC68020, ainsi que les coprocesseurs MC68881 et MC68851. Il est installé au démarrage, réside dans la RAM de votre ordinateur et fonctionne sur tous les ordinateurs Macintosh, y compris le Macintosh SE et le Macintosh II. Avec MacsBug, vous pouvez examiner la mémoire, tracer un programme ou définir des conditions de pause et exécuter un programme jusqu'à ce que ces conditions se produisent.
Objet Pascal
Le MPW Pascal comprend un ensemble d'extensions, collectivement connues sous le nom d'Object Pascal, vous offrant la possibilité d'écrire des programmes orientés objet.
Les langages orientés objet, tels que Smalltalk-80 et Simula-67, vous permettent de structurer vos programmes de manière à permettre un meilleur contrôle sur la manière dont ils traitent les données. La programmation orientée objet associe données et routines pour produire un code puissant et facile à maintenir. Il vous donne également la possibilité d'écrire des programmes à l'aide de MacApp, l'application Macintosh extensible d'Apple.
MacApp fournit un squelette d'application Macintosh. Il fournit un cadre implémentant de nombreuses fonctionnalités de l'interface Macintosh, auquel vous ajoutez les fonctionnalités uniques de votre propre application.
Si vous débutez dans la programmation orientée objet, vous souhaiterez peut-être lire un livre d'introduction sur le sujet avant d'essayer d'utiliser Object Pascal.
Link, l'outil de liaison décrit dans la référence Macintosh Programmer's Workshop, contient à partir de la version MPW 3.0 le code d'optimisation pour Object Pascal. Il est disponible en tant qu'option -opt et élimine tout besoin de l'outil Optimize distribué avec MacApp.
À propos des fichiers de l'interface Pascal
Les fichiers d'interface MPW 3.0 Pascal contiennent des déclarations pour les routines des bibliothèques MPW 3.0 Pascal et MPW 3.0, ainsi que les routines de la boîte à outils de l'interface utilisateur et du système d'exploitation intégrées à la ROM Macintosh. Les routines ROM Macintosh sont décrites en détail dans Inside Macintosh, volumes 1 à 5. Les interfaces de ces routines sont divisées en fichiers en fonction de leur «Manager», comme décrit dans Inside Macintosh.
Voici une liste des modifications apportées aux fichiers de l'interface Pascal depuis MPW Pascal 2.0 :
- Les interfaces de la boîte à outils et du système d'exploitation ont été divisées en fichiers selon les gestionnairs plutôt que divisées entre Toolintf.p et OSintf.p. Cela est parallèle à l'organisation d'Inside Macintosh ainsi qu'aux fichiers d'inclusion C.
- MemTypes.p, OSintf.p, Toolintf.p, Packintf.p, Pickerintf.p, SCSIIIntf.p et Videointf.p sont conservés pour des raisons de compatibilité; cependant, ils ont été modifiés pour inclure les nouveaux fichiers d'interface appropriés. Il est souvent préférable d'utiliser directement les nouvelles interfaces. Il est peu probable que vous ayez besoin de toutes les nouvelles interfaces précédemment incluses dans osrntf.p et Toolintf.p, utilisez donc uniquement les nouvelles interfaces dont dépend votre programme.
- Les nouveaux fichiers d'interface incluront les fichiers dont ils dépendent, si nécessaire.
- sound.p a été mis à jour pour inclure toutes les routines sonores Macintosh précédemment incluses dans Sound.p et OSintf.p.
- Printing.p et PrintTraps.p remplissent essentiellement la même fonction ; cependant, Printing.p vérifie s'il peut utiliser les routines ROM appropriées et inclut la colle nécessaire pour travailler avec des ROM de 64 Ko. PrintTraps.p génère un code plus efficace appelant directement la ROM.
Voici la liste des nouveaux fichiers d'interface dans MPW Pascal :
Fichier d'interface | Contexte |
---|---|
Controls.p | Cette interface permet de gérer les contrôles du Macintosh. |
Desk.p | Cette interface permet de gérer le bureau. |
DeskBus.p | Cette interface permet la gestion du bus du bureau d'Apple. |
Devices.p | Cette interface permet la gestion des périphériques. |
Dialoqs.p | Cette interface permet la gestion des boites de dialogues. |
DisAsmLookup.p | Cette interface contient un désassembleur de symboles SADE et MacsBug pour la séquence d'octets des instructions des microprocesseurs MC68xxx, MC68881 et MC68851. |
Diskinit.p | Cette interface permet d'initialiser une unité de disque. |
Disks.p | Cette interface contient le pilote de disque. |
Errors.p | Cette interface contient les constantes des erreurs. |
Events.p | Cette interface permet la gestion des événements. |
Files.p | Cette interface permet la gestion des fichiers. |
Fonts.p | Cette interface permet la gestion de police de caractères. |
HyperXCmd.p | Cette interface contient les définitions des fichiers HyperCard XCMD et XFCN. |
Lists.p | Cette interface permet la gestion de liste de données. |
Memory.p | Cette interface contient le gestionnaire de mémoire. |
Menus.p | Cette interface permet de gérer les menus. |
Notification.p | Cette interface permet d'effectuer la gestion des avertissements. |
OSEvents.p | Cette interface permet la gestion des événements du système d'exploitation. |
OSUtils.p | Cette interface contient les fonctions utilitaires du système d'exploitation. |
Packaqes.p | Cette interface contient le gestionnaire des modules. |
Palettes.p | Cette interface permet la gestion de palettes. |
Picker.p | Cette interface permet d'effectuer des transformation de couleurs. |
Printinq.p | Cette interface contient le gestionnaire d'impression. |
Resources.p | Cette interface permet la gestion des ressources. |
Retrace.p | Cette interface contient le retraçage vertical. |
Scrap.p | Cette interface contient le gestionnaire de déchet. |
SCSI.p | Cette interface permet la gestion de l'interface SCSI. |
SeqLoad.p | Cette interface permet la gestion du chargement des segments des programmes. |
Serial.p | Cette interface permet la gestion de l'interface du port série. |
Shutdown.p | Cette interface permet de fermer ou de redémarrer l'ordinateur. |
Slots.p | Cette interface permet la gestion des fentes de carte de périphérique. |
Start.p | Cette interface contient le gestionnaire de démarrage. |
Strinqs.p | Cette interface permet la gestion des chaînes de caractères de Pascal à C et vice versa. |
TextEdit.p | Cette interface permet la gestion d'un éditeur de texte. |
Timer.p | Cette interface permet la gestion d'une minuterie. |
ToolUtils.p | Cette interface contient les utilitaires d'outils. |
Types.p | Cette interface contient les définitions de types de données. |
Video.p | Cette interface permet la gestion de la vidéo. |
Windows.p | Cette interface permet la gestion des fenêtres. |
Voici la liste des anciennes interfaces Pascal ainsi que les nouvelles interfaces à utiliser directement :
Fichier d'interface | Utilise un sous-ensemble de |
---|---|
MacPrint.p | Printing.p |
MemTypes.p | Types.p |
OSintf.p | OSUtils.p, Events.p, Files.p, Devices.p, DeskBus.p, Diskinit.p, Disks.p, Errors.p, Memory.p, OSEvents.p, Retrace.p, Segload.p, Serial.p, Shutdown.p, Slots.p, Sound.p, Start.p, Timer.p |
Packintf.p | Packages.p |
Pickerintf.p | Picker.p |
SCSIIntf.p | SCSI.p |
Toolintf.p | ToolUtils.p, Events.p, Controls.p, Desk.p, Windows.p, TextEdit.p, Dialogs.p, Fonts.p, Lists.p, Menus.p, Resources.p, Scrap.p |
Videointf.p | Video.p |
Utilisation des fichiers d'interface
Les fichiers d'interface des bibliothèques Pascal et MPW ainsi que les ROM Macintosh se trouvent dans le répertoire {Pinterfaces}. Vous pouvez déterminer les fichiers d'interface à utiliser pour une routine ou un type de données spécifique en recherchant à quelle bibliothèque ou gestionnaire Macintosh appartient la routine ou le type de données. Vous pouvez également trouver le nom de la bibliothèque ou du gestionnaire en recherchant dans le répertoire {Pinterfaces} le nom de la routine ou du type à l'aide de la commande MPW Search, décrite dans la référence Macintosh Programmer's Workshop 3.0 Interface.
Le compilateur recherche dans plusieurs répertoires les fichiers d'interface ; jusqu'à ce que le fichier spécifié soit trouvé. Il recherche le répertoire contenant le fichier d'entrée actuel, les répertoires spécifiés à l'aide de l'option -i du compilateur et les répertoires spécifiés dans la variable Shell {Pinterfaces}.
Vous spécifiez les unités nécessaires à vos programmes en utilisant l'instruction uses :
uses unitname, unitname, ... ; |
Le compilateur suppose qu'une unité 'unitname' sera trouvée dans le fichier 'unitname.p'. C'est le fichier qu'il recherche ensuite. Pour remplacer cette supposition, utilisez la directive {$U}.
La forme du chemin d'accès détermine également où le compilateur recherche le fichier d'interface. Si un chemin d'accès complet est spécifié, le compilateur utilise exactement ce nom et n'effectue aucune recherche. Un chemin d'accès complet contient au moins deux points (:) mais ne commence pas par deux points. Si un chemin d'accès partiel est spécifié, le compilateur recherche le fichier dans plusieurs répertoires. Les chemins d'accès partiels commencent par deux points ou ne contiennent aucun deux-points.
Les fichiers d'interface peuvent être imbriqués jusqu'à cinq niveaux de profondeur.
Règles de recherche de fichiers d'interface :
Chemin complet | Description |
---|---|
uses filename | Utilise le nom comme spécifié |
Chemin partiel | Description |
uses filename | Recherchez dans les répertoires suivants, dans cet ordre : 1. Le répertoire du fichier source contenant l'instruction use 2. Répertoires spécifiés par l'option -i du compilateur, dans l'ordre spécifié 3. Répertoires spécifiés par la variable Shell {Pinterfaces} |
À propos des bibliothèques Pascal
Les fichiers MPW Pascal incluent plusieurs bibliothèques contenant le code objet exécutable pour la plupart des procédures et fonctions Pascal prédéfinies ainsi que le code des routines plus spécialisées. De plus, les bibliothèques incluent le code nécessaire pour accéder aux routines ROM du Macintosh. Une description complète des routines ROM Macintosh est incluse dans Inside Macintosh.
Certaines bibliothèques sont partagées par Pascal et un ou plusieurs autres langages; ils se trouvent dans le répertoire identifié par la variable MPW 3.0 Shell {Libraries}. Trois bibliothèques (PasLib.o, SANELib.o et SANELib881.o) sont spécifiques à Pascal ; ils se trouvent dans le répertoire {PLibraries}.
Chaque programme MPW 3.0 Pascal doit être lié aux bibliothèques Runtime.o, Interface.o et PasLib.o. D'autres sont nécessaires pour différentes opérations du programme, comme résumé ci-dessous.
MPW Pascal comprend les bibliothèques suivantes :
- La bibliothèque Pascal standard dans le fichier {PLibraries} PasLib.o contient toutes les routines Pascal d'entrée/sortie standard, les routines d'initialisation de mémoire de tas et certaines routines d'entrée/sortie spéciales. Chaque programme MPW Pascal doit être lié à cette bibliothèque. Les noms des routines d'entrée/sortie spéciales commencent tous par PL; si vous: j'appelle l'un d'entre eux explicitement, vous devez utiliser le fichier d'interface PasLibintf.p. Les routines Pascal d'entrée/sortie standard sont implémentées implicitement par le compilateur et ne nécessitent pas de fichier d'interface.
- Les bibliothèques Pascal SANE dans le fichier {PLibraries} SANELib.o contient des procédures et des fonctions de mathématique. Ces procédures et fonctions fournissent une arithmétique à virgule flottante précise et de précision étendue. Si vous en utilisez un dans votre programme, vous devez utiliser le fichier d'interface SANE.p dans votre compilation et liez-le avec la bibliothèque {PLibraries} SANELip.o. SANELib.o utilisera le MC68881 lorsqu'il y en a un disponible.
- La bibliothèque Pascal SANE pour les coprocesseurs à virgule flottante MC688815 ou est incluse dans le fichier {PLibraries} SANELib881.o et contient des routines SANE alternatives appelant directement le MC68881. Cette bibliothèque ne fonctionne pas sur les machines sans MC68881.
Le tableau suivant répertorie les fichiers objets de bibliothèque utilisés avec MPW Pascal. Les huit premiers fichiers, fournis avec Macintosh Programmer's Workshop, sont partagés avec d'autres langages et apparaissent dans le répertoire (Bibliothèques}. Les fichiers restants, fournis avec MPW Pascal, sont utilisés uniquement avec Pascal et apparaissent dans le répertoire {PLlbraries} :
Bibliothèques pouvant être utilisées avec MPW Pascal | Utilisé |
---|---|
Interface.o | Dans les bibliothèques Macintosh (Inside Macintosh) partagées avec d'autres langages. |
ToolLibs.o | Contient le code des routines de contrôle et de gestion du curseur décrites dans la référence Macintosh Programmer's Workshop. Si vous utilisez l'une de ces procédures dans votre programme, vous devez inclure le fichier d'interface approprié dans votre compilation et le lier à cette bibliothèque. |
DRVRRuntime.o | Prise en charge de l'exécution des accessoires de bureau et d'autres pilotes. Si votre programme est un accessoire de bureau, vous devez le lier à cette bibliothèque. |
ObjLib.o | Fonctionnalités mettant en oeuvre la programmation orientée objet sans MacApp. Si vous utilisez l'une de ces techniques sans utiliser MacApp, utilisez le fichier d'interface objIntf.p dans votre compilation et liez-le à cette bibliothèque. |
PerformLib.o | Routines de mesure des performances. |
Stubs.o | Stubs utilisés par Linker pour remplacer les routines de bibliothèque inutilisées pour les outils. |
Runtime.o | Routines d'initialisation des données. |
HyperXLib.o | Routines HyperCard 'XCMD' |
PasLib.o | Bibliothèque Pascal standard contenant toutes les routines d'entrée/sortie Pascal standard et les routines d'initialisation de mémoire de tas. |
SANELib.o | Bibliothèque SANE de procédures et de fonctions fournissant une arithmétique à virgule flottante précise et de précision étendue. |
SANELib881.o | Bibliothèque SANE fonctionnellement équivalente à la bibliothèque SANELib.o sauf que cette version doit être utilisée lorsque vous avez appelé l'option du compilateur -MC68881. |
À propos des exemples Pascal
Les fichiers Pascal se composent de huit exemples de programmes Pascal inclus avec MPW Pascal : une application, un outil, un accessoire de bureau et un programme démontrant l'utilisation d'outils de performances. De plus, le makefile contenant les commandes nécessaires à la construction de chacun des exemples est fourni dans les mêmes dossiers. Ces fichiers se trouvent dans {PExamples}. Le tableau suivant répertorie ces fichiers :
Fichier source | Dossier PExamples |
---|---|
Makefile | Makefile pour créer des exemples de programmes |
Instructions | Instructions pour créer des exemples de programmes. |
Sample.p | Exemple d'application Pascal. Il s'agit d'un exemple d'application simple prenant en charge MultiFinder. |
TESample | Application TextEdit simple compatible MultiFinder. |
SillyBalls.p | Exemple d'application QuickDraw couleur simple. |
TubeTest.p | QuickDraw et gestionnaire de palettes de couleurs simples. |
ResEqual.p | Exemple d'application : un outil MPW. |
Memory.p | Exemple d'accessoire de bureau. L'accessoire Memory Desk affiche l'espace libre actuel dans les segments d'application et système, l'espace libre sur le volume par défaut et le nom du volume par défaut. Ces informations sont mises à jour toutes les 5 secondes. Lorsque Memory est ouvert pour la première fois, il appelle _MaxMem pour purger la mémoire, affichant ainsi les limites supérieures de l'espace libre dans la mémoire de tas. |
EditCdev.p | Exemple de périphérique du panneau de configuration avec un élément TextEdit. |
TestPerf.p | Un exemple de programme utilisant les outils de performance Pascal. |
Le fichier «Instructions» contient des instructions étape par étape pour créer chacun des exemples de programmes. Après avoir installé MPW et MPW Pascal, comme décrit dans la référence Macintosh Programmer's Workshop 3.0, ouvrez ce fichier et suivez les instructions.
Installation de MPW Pascal
Les instructions d'installation de MPW Pascal sur un disque dur de système de fichiers hiérarchique (HFS) 20 ou 20SC apparaissent dans la référence Macintosh Programmer's Workshop 3.0. Après avoir installé MPW en suivant ces instructions, exécutez le script d'installation MPW et insérez le disque MPW Pascal.
Alternativement, vous pouvez installer Pascal en procédant comme suit :
- Copiez le fichier Pascal (le compilateur) dans le dossier {MPW}Tools.
- Copiez le dossier PExamples dans le dossier {MPW}Examples.
- Copiez le dossier PInterfaces dans le dossier {MPW}Interfaces.
- Copiez le dossier PLibraries dans le dossier {MPW}Libraries.
Remarque : Vous pouvez placer le compilateur, les exemples et les bibliothèques dans différents répertoires, à condition de modifier les valeurs par défaut de diverses variables Shell définies dans le fichier de démarrage. Vous pouvez modifier le fichier Startup lui-même ou, de préférence, modifier le fichier UserStartup. Les variables suivantes déterminent les emplacements des fichiers fournis avec MPW Pascal.
Variable | Description |
---|---|
{Commands} | Une liste de répertoires séparés par des virgules contenant des outils et des applications. Le répertoire contenant le compilateur Pascal doit apparaître dans cette liste. |
{PInterfaces} | Liste de répertoires séparés par des virgules dans lesquels rechercher les fichiers PInterface. Cela devrait inclure le répertoire PInterfaces. |
{PLibraries} | Le répertoire contenant les fichiers PLibrary. Il doit s'agir du chemin d'accès au répertoire PLibraries. |
Contrôle de segmentation
Un segment est une partie de code pouvant être chargée séparément en mémoire. Votre programme peut être écrit sans segmentation explicite ou il peut contenir un certain nombre de segments différents.
Chaque ressource 'CODE' dans la branche de ressources de l'application correspond à un segment contenant une ou plusieurs routines. (La ressource 'CODE' avec l'ID 0 contient la table de sauts ; les autres ressources 'CODE' contiennent des routines :) Au moment de l'exécution, un segment est automatiquement chargé par le chargeur de segment lorsque vous appelez l'une des routines contenues dans le segment. Le segment n'est pas déchargé jusqu'à ce que l'application le décharge explicitement en appelant UnloadSeq.
Vous pouvez spécifier quelles routines sont placées dans quels segments de deux manières. Cette section explique comment utiliser la directive $S pour spécifier la segmentation. La référence Macintosh Programmer's Workshop explique comment utiliser la commande Link pour modifier la segmentation d'un programme.
La segmentation vous aide à réduire les besoins en mémoire d'exécution de votre programme. Un schéma de segmentation typique divise un programme en un segment d'initialisation et un segment de traitement principal. Vous pouvez également placer des routines rarement exécutées (des routines d'impression, par exemple) dans un segment séparé n'étant pas chargé lorsque le programme commence à s'exécuter. Cela permet au programme d'être chargé plus rapidement car les routines d'impression ne sont chargées que lorsqu'elles sont nécessaires. Si vous ne spécifiez pas de segmentation, le compilateur place l'intégralité du programme dans un segment appelé Main.
La directive S$ vous permet également de spécifier plusieurs segments dans un seul fichier source. Pour affecter du code source à un segment, faites précéder le code d'une directive du compilateur de le format :
{$S segment-name} |
Le code suivant cette directive est placé dans le segment nommé jusqu'à ce que le compilateur lise un autre $S ou la fin du fichier source.
Note : Dans une directive $S, les noms de segments sont sensibles à la casse. Les espaces de début ne sont pas significatifs et tous les caractères sont inclus, jusqu'à la fin du caractère de commentaire.
Le code d'un segment donné ne doit pas nécessairement être contigu au sein du fichier source. Le programme peut prendre le format suivante :
{$S SegA} function {$S SegB} function {$S SegA} |
et ainsi de suite. Le code suivant une directive $S est placé dans le segment nommé jusqu'à ce que la prochaine directive $S soit rencontrée ou que le compilateur lise la fin du fichier source.
Le compilateur marque chaque routine avec le nom de son segment. Ensuite, Linker collecte toutes les fonctions et procédures d'un segment à partir de divers fichiers d'entrée et les place dans un seul segment de code dans le fichier de sortie.
Créer des ressources
Les ressources non codées, telles que les ressources spécifiant des menus, des fenêtres et des boîtes de dialogue, peuvent être créées à l'aide de l'éditeur de ressources (ResEdit) et du compilateur de ressources (Rez). Ces outils sont décrits dans la référence Macintosh Programmer's Workshop et la référence ResEdit.
Création d'une application dans MPW Pascal
Une application est un programme pouvant être exécuté sous Macintosh Finder ou MultiFinder. Les applications peuvent également être exécutées à partir du MPW Shell : l'exécution du MPW Shell est suspendue et l'application prend le contrôle de la mémoire et de l'affichage de l'ordinateur pendant son exécution.
Le code d'une application est contenu dans les ressources 'CODE' dans la branche de ressources de son fichier. Des ressources supplémentaires dans le même fichier décrivent les menus, fenêtres, boîtes de dialogue, chaînes et autres ressources utilisées par l'application.
Cette section décrit les étapes de création d'une application dans MPW Pascal. Le fichier Instructions dans le dossier PExamples décrit certains des outils pouvant être utilisés pour automatiser le processus. Le fichier MakeFile dans le dossier PExamples illustre l'utilisation de certains outils. La référence Macintosh Programmer's Workshop décrit ces outils en détail.
Construire une application
Le moyen le plus simple de créer un programme dans MPW consiste à utiliser le menu Build. Nous allons construire Sample, une application à partir du dossier Examples. Les fichiers source pour Sample sont Sample.p et Sample.r. À l'aide du menu Directory, définissez le répertoire actuel sur HD:MPW:Examples:PExamples.
Sélectionnez Build dans le menu Build et tapez le nom de programme sample.
Vous verrez quelque chose comme ceci à l'écran :
t 3:58:13 PM ----- Build of Sample t 3:58:13 PM ----- Analyzing dependencies. t 3:58:14 PM ----- Executing build commands t 3:58:40 PM ----- Done sample |
La commande Build compile et lie l'application.
Appuyez sur Enter pour lancer l'exemple d'application. Vous pouvez couper, coller, copier et déplacer le curseur. Quitter (Command+Q) vous ramène au MPW Shell.
Compilation d'une application
Pour compiler un programme Pascal, démarrez d'abord l'application MPW Shell, puis entrez la commande Pascal dans n'importe quelle fenêtre. En règle générale, la commande spécifie les options et le nom du fichier source au compilateur, bien que ni l'un ni l'autre ne soient obligatoires. Par exemple, la commande :
Pascal -p Sample.p |
compile le fichier source Sample.p, produisant le fichier objet Sample.p.o. L'option -p spécifie que les informations de progression doivent être écrites dans la sortie de diagnostic. Ces informations apparaissent à l'écran après la commande.
Vous pouvez trouver une spécification complète de la commande Pascal, y compris les spécifications d'entrée, de sortie et de diagnostic, les valeurs d'état et les options, dans la référence Macintosh Programmer's Workshop.
Liaison d'une application
L'éditeur de liens est utilisé pour combiner des fichiers objets de plusieurs compilations distinctes, ainsi que tous les fichiers objets de bibliothèque nécessaires, afin de produire les ressources de code exécutables pour un programme. L'éditeur de liens crée un nouveau fichier de ressources, contenant uniquement les ressources de code de votre programme, ou remplace les ressources de code dans un fichier de ressources existant, laissant intactes les autres ressources, telles que les menus et les boîtes de dialogue. Cela vous permet d'exécuter le compilateur de ressources avant ou après l'exécution de l'éditeur de liens. La référence Macintosh Programmer's Workshop décrit l'éditeur de liens en détail.
Une application écrite partiellement ou totalement en Pascal pour être utilisée sur n'importe quel Macintosh doit être liée aux bibliothèques répertoriées dans le tableau suivant. Voici le code de lien à utiliser sur n'importe quel Macintosh avec ces bibliothèques :
Dans les interfaces Macintosh | Prise en charge du temps d'exécution | Bibliothèques Pascal |
---|---|---|
(Libraries}Interface.o | {Libraries}Runtime.o {PLibraries}SANELib.o |
{PLibraries}PasLib.o |
Code compilé pour utiliser le MC68881 sur Macintosh II :
Dans les interfaces Macintosh | Prise en charge du temps d'exécution | Bibliothèques Pascal |
---|---|---|
{Libraries}Interface.o | {Libraries)Runtime.o | {PLibraries}PasLib.o {PLibraries}SANELib881.o |
Il est sage de relier les nouveaux programmes à toutes les bibliothèques pouvant être appropriées. Si vous spécifiez des fichiers inutiles dans la commande Link, l'éditeur de liens affiche un message répertoriant les fichiers pouvant être supprimés de vos instructions de construction.
Si vous utilisez l'option du compilateur -MC 68881, vous devez placer le fichier {PLibraries)SANELib881.o en premier dans votre liste de liens. Ce fichier contient certaines définitions remplaçant les versions 80 bits d'autres bibliothèques. L'éditeur de liens utilise la première définition qu'il atteint, puis affiche des messages d'avertissement lorsqu'il rencontre des définitions en double. Vous pouvez utiliser l'option de liaison -d pour supprimer les avertissements concernant les définitions en double.
Les programmes écrits en partie en Pascal et en partie en langage assembleur ou C doivent être liés au fichier CRuntime.o et non au fichier Runtime.o. L'éditeur de liens détectera plusieurs points d'entrée en double lors de la liaison avec les bibliothèques Pascal et C. Tous ces doublons sauf un peuvent être ignorés en toute sécurité : les copies des routines sont identiques.
L'exception est le point de départ de l'exécution. Si l'exécution doit commencer par la fonction C main(), aucune précaution particulière n'est nécessaire. Cependant, si votre programme principal est écrit en langage de programmation assembleur ou en Pascal mais que des parties de votre programme sont écrites en C (et doivent donc être liées au fichier CRuntime.o), le fichier objet contenant votre programme principal doit apparaître avant CRuntime.o dans le fichier liste des fichiers objets transmis à l'éditeur de liens.
Création d'un outil dans MPW Pascal
Un outil est un programme fonctionnant dans l'environnement MPW Shell. Le compilateur Pascal, Rez et Link sont tous des outils. Vous pouvez écrire vos propres outils en Pascal, C ou en langage assembleur. Lee Macintosh Programmer's Workshop Reference décrit les outils et la manière dont ils sont créés. Cette section contient des informations spécifiques sur les outils d'écriture en Pascal.
Vous exécutez un outil en entrant une commande MPW. Les paramètres spécifiés dans la ligne de commande sont transmis en tant que paramètres au programme principal. Les variables Shell exportées sont également transmises en tant que paramètre au programme principal ; ils sont accessibles directement ou en utilisant la fonction getenv() de la bibliothèque Pascal. Pour accéder à ces paramètres, utilisez les interfaces comme suit :
- USES
- CursorCtl,
- IntEnv,
- PasLibintf;
Les outils ont un accès direct aux fenêtres et sélections MPW Shell. Les variables FILE stdin, stdout et stderr font respectivement référence à l'entrée standard, à la sortie standard et à la sortie de diagnostic de MPW. Par défaut, les fonctions d'entrée/sortie de la bibliothèque Pascal lisent l'entrée standard (texte saisi à partir du Shell) et écrivent sur la sortie Pascal standard. Tous les fichiers ouverts par des outils, à l'aide des fonctions de la bibliothèque Pascal ou des fonctions de la bibliothèque Inside Macintosh, sont lus et écrits dans les fenêtres si le fichier spécifié est ouvert dans une fenêtre. Le contenu de la fenêtre est lu ou écrit à la place de la branche de données du fichier. Les sélections dans les fenêtres peuvent également être lues et écrites comme s'il s'agissait de fichiers, en ajoutant le suffixe .$ au nom du fichier (par exemple, HD:MPW:Worksheet.$).
Construire un outil
Le moyen le plus simple de créer un programme dans MPW consiste à utiliser le menu Build. Nous allons créer ResEqual, un exemple d'outil MPW comparant les ressources de deux fichiers. Les fichiers sources de ResEqual sont ResEqual.p et ResEqual.r ; puisqu'un makefile existe déjà, vous n'avez pas besoin d'en créer un. À l'aide du menu Répertoire, définissez le répertoire actuel sur HD:MPW:Examples:PExamples. Sélectionnez maintenant Build dans le menu Build et tapez le nom du programme ResEqual.
Vous verrez quelque chose comme ceci à l'écran :
# 10:58:07 PM ----- Build of ResEqual. # 10:58:08 PM ----- Analyzing dependencies. # 10:58:10 PM ----- Executing build commands Rez :Examples:PExamples:ResEqual.r -append -o ResEqual Pascal :Examples:PExamples:ResEqual.p Link -w -t MPST -c 'MPS ' "Oya: .MPW: Libraries: "Runtime.o "Oya:.MPW:Libraries:"Interface.o "Oya:.MPW: PLibraries: "PasLib.o "Oya:.MPW:PLibraries:"SANELib.o "Oya:.MPW:Libraries:"ToolLibs.o :Examples:PExamples:ResEqual.p.o -o ResEqual # 10:58:35 PM ----- Done. Res Equal |
Appuyez maintenant sur Enter.
Compilation d'un outil
Vous compilez un outil exactement de la même manière que vous compilez une application. Les informations précédentes concernant les règles de recherche de fichiers inclus, la segmentation et les ressources s'appliquent également aux outils et applications.
Lier un outil
Le MPW Shell reconnaît un outil par son type et son créateur. Spécifiez les options suivantes lors de la liaison d'un outil :
Link -t MPST -c "MPS " ... |
Cette commande spécifie le type de fichier et le créateur d'un outil MPW. Suivez les mêmes règles de liaison de bibliothèques pour les outils que pour les applications. De plus, si votre outil appelle l'une des routines de curseur rotatif ou de gestionnaire d'erreurs, créez un lien avec les bibliothèques suivantes :
{Libraries}Stubs.o {Libraries}ToolLibs.o |
Le fichier stubs.o contient une collection de «stubs», ou routines factices, pour plusieurs fonctions définies dans la bibliothèque d'exécution mais n'étant pas nécessaires pour les outils MPW exécutés sous MPW Shell. Vous pouvez utiliser ces talons pour réduire la taille d'un outil. Stubs.o doit être lié avant toute autre bibliothèque.
Création d'un accessoire de bureau dans MPW Pascal
Un accessoire de bureau est un programme que vous exécutez en le sélectionnant dans le menu Apple. Il partage son environnement d'exécution avec l'application en cours d'exécution. Cette section contient des informations spécifiques aux accessoires de bureau dans MPW Pascal.
Restrictions relatives aux accessoires de bureau
Un accessoire de bureau ne possède ni table de saut ni zone de données globale.
- Puisqu'il n'a pas de table de saut, un accessoire de bureau doit être en un seul segment. Soit vous omettez les spécifications de segmentation afin que tout votre code soit placé dans le segment par défaut, soit vous utilisez des spécifications de segmentation identiques pour toutes vos routines. Utilisez la commande Link pour déplacer toutes les routines de bibliothèque que vous utilisez dans votre segment unique.
- Parce qu'il ne possède pas de zone de données globales, un accessoire de bureau écrit en Pascal ne doit pas utiliser de variables globales. De plus, un accessoire de bureau ne peut pas appeler des routines de bibliothèque nécessitant des données globales.
La bibliothèque DRVRRuntime
Les accessoires de bureau ont traditionnellement été écrits en langage assembleur, en partie à cause du format de ressource particulier utilisé par le système pour les accessoires de bureau. La ressource est 'DRVR'. La configuration de l'entête de présentation est 'DRVR', la transmission des paramètres de procédure basés sur les registres et la gestion des conventions de sortie non standard des routines de pilote ont rendu assez difficile dans le passé pour les programmeurs non familiers avec le langage assembleur d'implémenter des accessoires de bureau dans des langages de haut-niveau.
Pour surmonter ces difficultés et simplifier la tâche d'écriture d'un accessoire de bureau en Pascal, MPW fournit la bibliothèque DRVRRuntime.o et le type de ressource 'DRVW' déclaré dans MPWfypes.r. Ensemble, ils composent l'entête de disposition du pilote et les cinq points d'entrée configurant les fonctions d'ouverture, d'amorçage, d'état, de contrôle et de fermeture d'un pilote. Pour un exemple de définition d'accessoire de bureau, consultez le fichier Memory.r dans le dossier PExamples.
Utiliser la bibliothèque DRVRRuntime.o pour créer des accessoires de bureau offre de nombreux avantages :
- Aucune source en langage assembleur n'est requise. Chacune des routines de pilote (DRVROpen, DRVRPrime, DRVRStatus, DRVRControl et DRVRClose) peut être écrite en Pascal.
- La bibliothèque DRVRRuntime gère les conventions de sortie des accessoires de bureau : vos routines renvoient simplement un code résultat.
La bibliothèque DRVRRuntime se compose d'un point d'entrée principal remplaçant le point d'entrée initial du runtime Pascal. Le point d'entrée DRVRRuntime contient la «colle» du pilote configurant le paramètre pour vous, appelle votre routine et exécute le code de sortie spécial requis par un accessoire de bureau pour rendre le contrôle au système. Vos routines effectuent les actions de l'accessoire de bureau, comme ouvrir une fenêtre ou répondre aux clics de souris.
Routines d'accessoires de bureau
Les accessoires de bureau utilisant la bibliothèque DRVRRuntime doivent contenir les cinq fonctions DRVROpen, DRVRPrime, DRVRStatus, DRVRControl et DRVRClose. Toutes ces fonctions ont les mêmes types de paramètres et de résultats. Elles sont déclarées comme fonctions compatibles Pascal afin que la bibliothèque DRVRRuntime puisse être utilisée pour les accessoires de bureau en Pascal, C et en langage assembleur. Chacune de ces cinq routines doit être déclarée comme suit :
Les types ParmBlkPtr et DCtlPtr sont définis dans le fichier Files.p. Le type OSErr est défini dans MemTypes.p.
Construire un accessoire de bureau
Le moyen le plus simple de créer un programme dans MPW consiste à utiliser le menu Build. Nous allons créer Memory, un exemple d'accessoire de bureau affichant la mémoire disponible dans la mémoire de tas d'application et du système, ainsi que sur le disque de démarrage.
Les fichiers sources de Memory sont Memory.c et Memory.r ; puisqu'un makefile existe déjà, vous n'avez pas besoin d'en créer un. À l'aide du menu Directory, définissez le répertoire actuel sur HD:MPW:Examples:PExamples.
À l'aide du menu Directory, définissez le répertoire sur HD:MPW:Examples:PExamples. Sélectionnez maintenant Build dans le menu Build et tapez le nom du programme Memory. Vous verrez quelque chose comme ceci à l'écran :
# 4:12:40 PM ----- Build of Memory. # 4:12:41 PM ----- Analyzinq dependencies. # 4:12:43 PM ----- Executinq build commands. pascal Memory.c Link -w -rt DRVW=0 -sq Memory "Oya:MPW:Libraries"DRVRRuntime.o Memory.p.o "Oya:MPW:Libraries"Interface.o "Oya:MPW:PLibraries"Paslib.o -o Memory.DRVW -c "????" -t "????" Rez -rd -c DMOV -t DFIL Memory.r -o Memory # 4:13:06 PM ----- Done. 'Font/DA Mover' 'Oya:System Folder:System' Memory # Install DA |
Appuyez sur Enter pour lancer Font/DA Mover. (Si vous disposez de deux mégaoctets ou moins de RAM, vous ne pourrez peut-être pas le faire sous MultiFinder ; redémarrez en maintenant la touche Command enfoncée, puis réessayez.) Installez la mémoire DA dans votre fichier système. Il vous donne la taille actuelle de la mémoire de tas système et de la mémoire de tas d'application.
Associer un accessoire de bureau
Un accessoire de bureau écrit en Pascal doit être lié à la fois à DRVRRuntime.o et à Runtime.o. DRVRRuntime.o doit précéder Runtime.o dans la liste des fichiers objets passés au Linker, par exemple :
LINK (Libraries}DRVRRuntime.o (Libraries}Runtime.o |
Création de code pour différents modèles de Macintosh
À partir de la version 3.0 de MPW Pascal, vous pouvez créer des applications s'exécutant sur tous les modèles de Macintosh. Cette section décrit les compatibilités entre les machines et les stratégies d'écriture et de compilation de code s'exécutant sur différents modèles et de taille en mégaoctets de RAM nécessaires.
Code source
Vous pouvez écrire votre code source pour qu'il soit compatible avec un ou plusieurs modèles de Macintosh. Vous disposez de quatre options principales :
- Le code écrit pour un Macintosh 512K fonctionne également sur un Macintosh XL, un Macintosh Plus, un Macintosh SE et un Macintosh II. Si vous souhaitez que votre programme s'exécute sur n'importe quel modèle, suivez les recommandations de Inside Macintosh, volumes 1 à 3.
- Le code écrit pour un Macintosh Plus fonctionne également sur un Macintosh SE et un Macintosh II. Si vous souhaitez que votre programme s'exécute sur l'un de ces modèles, suivez les recommandations de Inside Macintosh, volumes 1 à 4.
- Le code écrit pour un Macintosh SE fonctionne également sur un Macintosh II et un Macintosh 512Ke ou Macintosh Plus. Si vous souhaitez que votre code s'exécute sur n'importe quel modèle doté du disque système le plus récent, suivez les recommandations pour un Macintosh SE dans Inside Macintosh, Volume 5.
- Le code écrit pour un Macintosh II, à l'aide du code ROM présent uniquement sur ce modèle, ne fonctionne que sur un Macintosh II.
Fichiers d'interface
Un ensemble de fichiers d'interface fournis avec MPW Pascal vous donne accès depuis Pascal à la boîte à outils Macintosh et aux routines du système d'exploitation Macintosh intégrées aux ROM Macintosh. Le volume 5 d'Inside Macintosh décrit le code ROM étant nouveau avec le Macintosh II et le Macintosh SE. Le volume 4 d'Inside Macintosh décrit le code du Macintosh Plus.
Une grande partie du nouveau matériel n'est utilisable que sur un Macintosh II, car il utilise des options matérielles n'étant pas disponibles sur d'autres modèles. Vous pouvez inclure toutes les définitions de fichiers d'interface dans le code pour les utiliser sur n'importe quel modèle, mais vous ne pouvez pas appeler de routines ROM n'étant pas présentes sur la machine exécutant le code compilé.
Options du compilateur
Avec l'ajout du Macintosh II à la gamme de produits, il existe désormais des différences de compilateur entre les modèles ainsi que des différences de code ROM. Ces différences entre les compilateurs sont décrites dans les sections suivantes.
SANE et Macintosh II
Le MPW Pascal inclut des fonctionnalités numériques conformes à la norme 754 de l'Institute of Electrical and Electronics Engineers (IEEE) pour l'arithmétique à virgule flottante. Cette norme est l'ensemble des lignes directrices définies par l'IEEE pour la conception et la mise en ouvre de systèmes effectuant de l'arithmétique à virgule flottante.
L'environnement numérique Standard Apple Numeric Environment (SANE) est la mise en oeuvre par Apple de ces directives. Le MPW Pascal utilise SANE pour fournir un environnement puissant et flexible pour les calculs numériques.
La norme IEEE recommande la mise en oeuvre de deux types de données supplémentaires pour la programmation numérique, en plus du type réel spécifié dans la norme ANSI. Le MPW Pascal inclut ces deux types supplémentaires.
Le SANE comprend une bibliothèque (SANELib) de procédures et de fonctions numériques utiles.
Améliorations de la virgule flottante
Les applications utilisant les paquets SANE (Pack4 et Packs) s'exécutent plus rapidement sur Macintosh II grâce au coprocesseur à virgule flottante 68881. La méthode par défaut du compilateur est d'appeler ces paquets pour toutes les opérations à virgule flottante. Pour une arithmétique la plus rapide possible sur les machines équipées d'un 68881, le compilateur dispose d'une option forçant les appels directs au 68881. Lorsque l'option est utilisée, le code résultant ne s'exécutera pas sur les Macintosh sans un 68020 et un 68881.
L'interface SANE a été étendue pour prendre en charge le 68881 : une nouvelle constante pour définir l'environnement par défaut pour fonctionner à la fois dans les mondes 68000 et 68881, deux nouvelles fonctions pour le transfert entre les formats étendus et deux nouvelles fonctions pour accéder mécanisme de piège du 68881. Le code de ces nouvelles fonctionnalités est inclus dans une nouvelle bibliothèque SANELlb881.o.
L'appel SetEnvironment(0) ne fonctionnera pas avec l'option -MC68881. Remplacez-le par SetEnvironment(IEEEDefaultEnv), fonctionnant avec ou sans l'option -MC68881.
Améliorations du MC68881
Le Motorola 68881 effectue très rapidement des opérations arithmétiques de base et un grand nombre de fonctions transcendantales. Habituellement, le compilateur MPW Pascal génère des appels aux paquets SANE (Pack4 et Packs) pour les opérations en virgule flottante ; si un 68881 est présent, les paquets SANE utilisant donc les paquets à virgule flottante sont automatiquement plus rapides. Pour mieux tirer parti du 68881, le compilateur Pascal a été modifié pour fournir des appels directs optionnels au coprocesseur.
Pour accéder directement au 68881 pour une plus grande vitesse dans les appels arithmétiques de base, tapez -MC68881 sur la ligne de commande ou utilisez la directive de compilateur $MC68881+ équivalente et établissez un lien avec SANELib881.o au lieu de SANELib.o. Avec l'option -MC68881, le type étendu fait 12 octets et les variables du type étendu peuvent être allouées aux registres.
L'option -MC68881 entraînera l'utilisation de fonctions transcendantales dont la précision est identique à celle des paquets SANE. Pour les fonctions transcendantales plus rapides mais moins précises fournies sur le 68881, tapez -d Elems881=true sur la ligne de commande.
Important : L'utilisation de l'option -MC68881 peut générer des instructions incompatibles avec le 68000. Votre programme pourrait ne pas fonctionner sur un Macintosh sans le 68881.
Améliorations du MC68020
Le MPW Pascal prend en charge l'unité centrale de traitement Motorola 68020 avec l'option de compilateur -MC68020 ou la directive de compilateur équivalente $MC68020+. Le 68020 permet une arithmétique longue plus rapide et des performances améliorées avec des structures compactes.
Important : L'utilisation de l'option -MC68820 peut générer des instructions incompatibles avec le 68000.
Autres produits MPW
Le MPW Shell fournit un environnement de travail intégré dans lequel vous pouvez écrire des programmes en langage de programmation assembleur 680x0, Pascal et C.
Si vous écrivez un programme en Pascal, vous pouvez également utiliser MacApp pour la programmation orientée objet. Le compilateur MPW Pascal ne peut pas être utilisé comme programme autonome.
Outre le langage de programmation assembleur 680x0, et les compilateurs Pascal et C, le MPW Shell contient également un riche complément d'outils d'édition, de liaison et de débogage, notamment SADE et MacsBug.