Skip to main content

magazine poms49

  • PublicationApple Periodicals
  • Pages76
  • Sourcemagazine_poms49.pdf
← Magazines magazine poms49
/ 76
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
La revue francophone indépendante pour les utilisateurs d’ Apple Transferts couleurs Apple IIcs . 4 i PROCMD LE BASIC wean” POUR LES APPLE EN 8 BITS ProCommann, c'est la boite a outils du programmeur 8 bits, sur Apple Ile, IIc, IIs. PROCOMMAND, cest un ensemble de modules cohérent pour enrichir le Basic, et simplifier la réalisation des logiciels. Un Basie enrichi; Print formaté, Type, Date, Tri, Rnd, formatage scientifique, Input formaté, Clock, Hexdec, Pop. De nouvelles commandes disques, Online, Dump, Copy, Format, Eject, Setinfo, Path, Compare, Paste. De nouvelles commandes utilitaires, Varlst, Vartrc, Renumber, Hold, Merge, XRef. Des commandes d'édition, Find, Edit, Auto, Macro, Lyst, Onekey. De puissantes commandes graphiques Dhgr, &hagy, &hgr2, &hcolor=, &hplot, &plot, &draw, &xdraw, | &fill, &print, hload, hsave. | Des commandes souris, &int, &let, &store at, &pos, &wait, &end. Et pour aller plus loin, une documentation en francais précisant le protocole a respecter pour intégrer vos propres modules a PROCOMMAND. ~2 PROCOMMAND en =~ 5,25" ou35",500F | (tarif abonnés : 450,00 P). Editions MEV * Pom's ¢ 12, rue d’Anjou 78000 Versailles * Tél : (1) 395124 43 « Minitel : (1) 39 53 04 40 » Fax : (1) 39 49 54 65 Numéro 49 juillet-aotit 1990 Au sommaire. a Les infos, les rubriques Editorial par Hervé Thiriez 5 Bibliographie par M. Godefroid et C. Piard 29 Les News Macintosh par Ariel Sebban 60 Applemania par René-Jean Anderson 65 Petites annonces 74 Mots croisés par Joélle Piard 74 Rees Le Macintosh Les transferts Mac/GS par Emile Schwarz 13 Intarnview * ACI nar Arial Sohhan an 6éme sens par Hervé Thiriez 34 Une Init : Fortune par Thierry Charles 51 TOPS par Marcelle Godefroid 55 TypeStyler par Marcelle Godefroid 58 Nouveautés 59 Le Monde des Apple | Une gestion de fichiers (2) par René-Jean Anderson 6 SuperFonts : les polices par Jean Ollion 24 Budget facile par Dimitri Geystor 25 AppleWorks : le chargement par D. Geystor, R. Brandt 26 Gee Le Monde des lias Les transferts Mac/GS par Emile Schwarz 13 Un formateur en CDA par Patrice Neveu 15 7 Utilitaires 16 bits par Patrick Desnoues 35 Editions MEV 12, rue d’Anjou 78000 Versailles Tél. : (1) 39 51 24 43 En couverture Minitel : (1) 39 5304.40 | Apres de multiples programmes de transmission de données entre Apple II, Fax : (1) 39 49 54 65 Macintosh, IBM et Minitel, voici la présentation de programmes en shareware tout . a fait étonnants : la récupération d'images super-haute résolution entre Apple ITGS Directeur de la publication: | et Macintosh II... Hervé Thiriez Pom’s n° 49 Com.V1.0 pour Apple // La disquette ‘communication’ que nous vous proposons aujourd'hui a été congue par Dominique Ottello, auteur de programmes parus dans Pom’s et animateur de la Cité Apple II de CalvaCom. Un bonheur n'arrivant jamais seul, une deuxiéme disquette dont on vous dévoile le contenu dans ces lignes, est livrée avec... Com.V 1.0 La disquette Com. V.01 (uniquement en format 3,5") regroupe un ensemble de programmes et fichiers permettant la communication, particulitrement avec CalvaCom, mais pas uniquement. En voici le détail : Blu Programme de compactage et décompactage d'une grande partie des programmes de la biblioth¢que Apple II. Ce programme est accompagné d'une documentation en anglais. Pour tous les Apple //. Bib.Liste ti s'agit de ta liste des programmes de la biblio- théque de la cité Apple II sur Calvacom. IIGS.Minitel 1 S'agit de la configuration du tableau de bord (Modem) dans le cas d’utilisation du IIGS avec cable Minitel, plus un ensemble de questions et réponses diverses sur l'utilisation du NIGS et de VSCom, Kermit Ce logiciel de communication, un classique, permet & l'aide d’un Minitel relié a 1'Apple II de télécharger des programmes (plus de 600 sont disponibles sur Calvacom). Une documentation en anglais accompagne ce soft doté de nombreux drivers : modem intégré IGS, Hayes Micromodem, cartes AppleCom, CCS770, Promotheus, Super Série et Apple IIc, Microtek $V622. Pour tous les Apple //. Pile Hyperstudio Il s‘agit d'une présentation des possibilités, tarifs, moyens d’accés de Calvacom. Et pour ceux qui n’auraient pas Hyperstudio, une version simplifiée en est livrée sur le méme disque. Pour GS, bien sir. Shrinkit La dernigre version de ce programme de compactage et décompactage de fichiers et disquettes. Il est plus performant que BLU et permet de compacter des disquettes entitres qui ne sont pas au format ProDOS standard. Pour tous les Apple //, documentation en anglais. Talk Is Cheap Ce programme de communication fonctionnant sur tous les Apple II avec sa documentation en anglais est doté d'un syst&me de macro-commandes. En plus de l'Apple //, TIC permet d’émuler les terminaux DataMedia, VT52, Heath.H19, Hazeltine.1510, IBM3101, ADM.3A, Dow Jones, Soroc, TVI.912, ADM.31, Hazeltine.1500, Adds Regent, Viewpoint, Tandy Laptop. Pour tous les Apple //. Téléphone Quelques détails concernant le cablage de la prise téléphonique américaine et de son homologue frangaise ainsi que des informations en anglais sur les procédures de téléchargement avec protocole Xmodem ou Ymodem, Et Plus... Le deuxiéme disque 3,5” qui vous sera livrée comporte : Bram Test Cet anti-virus est & metire dans le répertoire System.Setup. Au premier démarrage, il crée un fichier donnant l'image de la Bram. Lors des démarrages suivants, il compare ce fichier avec le contenu de la Bram et prévient des éventuelles modifications. Il est alors possible de restituer le contenu du fichier en Bram ou de sauvegarder le nouveau contenu dans le fichier. Boot Modif Futé, ce fichier est & metire a la place du fichier ProDOS du répertoire principal du disque dur : lors du démarrage, en appuyant sur la pomme, vous pourrez choisir le periphérique a activer : disque dur, disquette, Rom ou Ram. Init'Master Ce Céev est A mettre dans /System/CDevs ; il permet de valider ou dévalider les TIF, PIF, NDA et CDA qui seront chargés lors du démarrage. On y accéde par le NDA Control-Panel. Transwarp Un autre Cdev qui contréle les vitesse et IRQ de la Transwarp depuis le NDA Control-Panel. Faz Il File Auribute Zapper V 2.6 permet d'éditer les attributs de fichiers, le bit de backup par exemple. Tous les sources de la version 2.4 en Merlin 16 accompagnent cet utilitaire (les différences entre 2.4 et 2.6 se situent uniquement au niveau du tableau de dénomination des types de fichiers, La documentation est fournie également. Pour tous les Apple //. OneArmBattle wn peu de délassement avec ce jeu de machine a sous sonore et parlant anglais. Une belle application GS. Utilitaires texte Imprime.TXT, pour l'impression de tout fichier TXT avec tout un tas de paramétres pour I'ImageWriter. Pour GS. Binscii, conversion de fichier ProDOS en TXT et vice-versa. Pour tous les Apple //. FileChopper, pour séparer un gros fichier en plusieurs plus petits. Utile pour fichiers TXT trop longs pour étre chargés en une seule partie dans un traitement de texte. Pour tous les Apple //. Tex qui, entre autres, fait l’inverse du précédent c’est-a-dire, met bout A bout, en un seul fichier, plusieurs fichiers TXT. Pour tous les Apple //. Disquette Com. V.1.0 + disquette goodies : 100,00 F franco Ont collaboré & ce numéro: René-Jean Anderson - Randy Brandt Thierry Charles - Patrick Desnoues Dimitri Geystor - Marcelle Godefroid Olivier Herz - Nathalie Laudat Daniel Lurot - Gérard Michel Patrice Neveu - Christian Piard Joélle Piard - Emile Schwarz Ariel Sebban - Hervé Thiriez Directeur de la publication rédacteur en chef Hervé Thitisz Rédacteurs Marcelle Godefroid - Christian Piard Siége social Editions MEV — 12, rue d’Anjou 78000 Versailles — (1) 39 51 2443 Serveur Minitel (1) 39 53 04.40 Télécopie : (1) 39 49 54 65 Publicité Editions MEV Diffusion N.M.P.P.. Impression Mame — 49, boulevard Preuilly BP 1701 — 37017 Tours Cedex 47.37.08.08 Photos CP & MG Photogravure Graphotec ~ 21, chemin de la Tour 92350 Le Plessis-Robinson B (1) 46 30.44 49 Pom's est une revue indépendante non rattachée & Apple Computer, Inc. ni & Apple Computer France $.A.R.L. Apple, le logo Apple, Mac et le logo Macintosh sont des marques déposées d' Apple Computer, Inc. IBM est une marque déposée de International Business Machine. PC et AT sont des marques déposées de la Société IBM. Diagram- Maker est une marque déposée de MEV. @£ditions MEV 1990 Toute reproduction intégrale ou particlle, effectuée par quelque procédé que ce soit, sans l'accord écrit d'Editions MEV, constitue une contrefagon. Loi du 11 mars 1957, articles 425 et suivants du Code Pénal. Droits de traduction, de reproduction et d'adaptation réservés pour tous pays. Editorial Dans ce numéro d’été, Emile Schwarz nous présente I’art et la manieére de transférer des images en couleurs depuis I’A pple IIGS vers le Macintosh II, et réciproquement. Vous aurez maintenant le nécessaire pour travailler vos euvres impérissables sur I’une et l’autre machine. Et, si yous aimez programmer sur cette mer- veilleuse machine qu’ est le IIGS, Patrick Desnoues vous a concocté quelques outils dont vous apprécierez vite l’aide précieuse. Si vous étes plutét un utilisateur qui aime avant tout la transpa- rence de l’interface du GS, alors profitez de deux CDA, Format et Eraser, dont la simplicité et l’efficacité est tout a ’honneur de leur jeune auteur. Cété Mac, des bancs d’essais, et de l’humour avec Fortune, une astucieuse adaptation en Pascal pour une Init qui vous réserve quelques kilo-octets de surprises ; une affaire a suivre... Puisque l’époque est au changement, Pom’s ne fait pas exception. Christian Piard, auteur et rédacteur depuis de nombreuses années, part exercer ses talents dans le sud de la France. Du soleil malgré cela dans ce numéro puisque Maryléne Delbourg Delphis, interviewée par Ariel Sebban, nous livre ses impressions en direct. Le meilleur pour la fin bien sir, avec la nouvelle rubrique des news Apple // préparée par René-Jean Anderson : Applemania. Quel bel été... Hervé Thiriez Imprimé en France - Dépét légal juillet 1990 Pom’s n° 49 Gestion de fichiers (2 R,-J. Anderson Dans notre précédent article, nous avons longuement étudié un systéme structuré de gestion de fichiers. Pour pouvoir profiter de certains automatismes procurés par ce systéme structuré, nous avons vu qu’il était nécessaire de conserver des valeurs essentielles dans le premier enregistrement du fichier de rang zéro, celui que nous avons appelé, par simplification, “record-zéro”. Dans l’exemple du fichier des dictons, application de base, nous avions utilisé trois variahles numériques : le nombre nous avions utilisé trois variables numéniques : le nombre d’enregistrements, la longueur de la clé et la longueur de l’enregistrement. Nous revenons aujourd’hui sur ces valeurs essentielles pour proposer une solution au probléme que peut poser leur maintenance et régler en méme temps quelques questions annexes pour ne plus avoir a y revenir. avoir un risque de débordement de I’enregistrement zéro sur lenregistrement un. Rappelons que nous travaillons avec des enregistrements de longueur fixe. Enregistrer des nombres sans avoir défini dans quelles “plages” ces nombres peuvent varier ne va pas, non plus, dans le sens d’une rationalisation des choses. Une autre contrainte concerne les techniques d’indexation que nous mettrons ultéricurement en ceuvre sur nos fichiers. La encore, nous serons appelés a conserver des valeurs es- sentielles dans le record-zéro. On congoit, dés lors, qu'il devient trés utile de disposer d’un “outil” adapté pour résoudre ces problémes. C’est cet outil que nous proposons aujourd’hui sous forme du programme MNTRZERO (MaiNTenance des Record-ZERO) réalisant une gestion complete du record-zéro. Ce programme reprend, bien entendu, la philosophie du systéme structuré. Le lecteur, s’il a étudié I’application de base constituée par la gestion du fichier des dictons, se retrouvera sans difficulté gesuon du fichier des dictons, se retrouvera’sdns anucuie dans le programme mNTRZERO qui permet de créer des fichiers adaptés au systéme structuré mais aussi de revenir sur les fichiers existants pour restaurer des valeurs détruites, pour en modifier d'autres ou pour étendre le fichier par exemple en lui définissant un nouvel index. Au commencement... Mettre a l’index Le simple fait que des variables doivent étre présentes dans Venregisirement 26r, avant de metize en roiité le programme de Mise 4 Jour, induit tout de suite l’idée que le fichier doit étre créé de fagon indépendante. C’est qa’ ailleurs ce que nous icati oe oe gear ee programme qui réalisait donc deux choses : création du fichier et enregistrement de valeurs dans le record-zéro. Une premiére observation découlant de cette opération est qu’il est évident que les variables enregistrées vont prendre plus ou moins de place selon les valeurs contenues & l’origine appelées a évoluer. Si nous nous contentons d’enregistrer des valeurs au gré de notre fantaisie ou de nos besoins, il nous sera impossible de définir certaines autres valeurs, par exemple la plus petite longueur d’enre- gistrement possible pour les fichiers 4 gérer. En effet, si la longueur d’enregistrement déclarée est réduite, il peut y Pour mieux comprendre la portée du programme, au niveau dui record-26r6, @n €@ qui concemé indexation, disons tout de suite quelques mots & ce sujet. Une indexation, dans sa forme la plus simple, consiste 4 réaliser un index a partir a une zone définie sur les enregistrements du fichier: de programme(s) pour accéder aux données selon la séquence fournie par cet index. La zone a indexer doit, bien entendu, étre toujours au méme endroit relatif sur chaque enregistrement, Prenons un exemple concret : Nous disposons d’un fichier d’adresses et nous voulons indexer ce fichier sur le nom des personnes qu’il contient. Pour mener & bien cette tache, nous avons besoin de connaitre au moins trois valeurs indispensables : > lerang, sur l’enregistrement, du premier octet de la zone “nom” ; Pom’s n° 49 > la longueur de cette zone “nom” ; > le nombre de postes nécessaires pour contenir I’index tant entendu que nous générons, fondamentalement, UN poste pour UN enregistrement. Ce sont ces valeurs que nous enregistrerons dans le record- zéro des fichiers qui seront indexés. En pratique, le programme proposé est prévu pour enregistrer les valeurs de deux index différents sur le méme fichier de données. Disons bien qu’ici, un index est, physiquement, un fichier indépendant du fichier des données, bien qu’il lui soit rattaché en ce qui concerne la gestion des données. Les valeurs essentielles d’un index sont enregistrées dans le record-zéro du fichier des données et non dans celui de Tindex. Il est également nécessaire de connaitre d’autres valeurs. Citons les noms des index se rapportant & un fichier de données. Pour simplifier et rationnaliser notre systéme, nous utilisons simplement les dispositions suivantes : > Le nom d'un fichier de données ne peut excéder neuf caractéres, > Le nom d’un index est obtenu en suffixant le nom du fichier par “x2” pour le premier index et par “x2” pour le second. Autrement dit, un fichier corenr peut avoir CLIENTX1 comme premier index et cLrenTx2 comme deuxitme index. Cette disposition nous évite d’avoir & enregistrer et conserver des noms d’ index. Deux autres informations sont également intéressantes. II s’agit de la plus haute clé possible pour un fichier et l'existence ou non d’un tableau des enregistrements occupés dans le cas d’une indexation automatique. Ce dernier tableau est appelé ici record-map. Nous verrons plus loin comment introduire ces valeurs facultatives sans trop perturber l’agencement du record-zéro. Décisions et fourchettes Au stade ol nous en sommes, nous avons répertorié a peu prés toutes les valeurs essentielles que nous voulons enregistrer dans le record-zéro. En voici la liste : foo Nom Nom | Longueur Designation Variable | ftendu | mini maxi Nomibre dlenregistrements| FI Kyi | i | 5 Longueur de la clé cl KEYLI 1 6 Longueur de l'enregistrement Fim | REcLI| 2 | 4 Rang ler octet index 1 n ROWXI 1 4 Longueur zone indexée 1 ux | mpxi] 1 | 4 Nombre de postes index 1 xl POSX1 2 5 Rang ler octet index 2 Rn ROWX2 1 4 ‘Longueur zone indexée 2 Re FLDX2 1 4 Nombre de postes index 2 x2 posx2 | 2 | 5 Retours-chariot © 9 eS Totaux | 21 | 50 Figure 1: Le Record-zéro et ses valeurs minima et maxima DU 19 AU 22 SEPTEMBRE Apple Expo Stand 1 D 6 Nous y serons ... Les Apple Ic, Ie, lcs aussi Ile GS Ram et GS Ram Plus extensions mémoire, TransWarp GS accélérateur 7 Mhz Vulcan disque Dur interne 20/40/100 Mo PC-Transporter pour la compatibilité MS-DOS Sonic Blaster, Audio Animator pour le son... Ile RamFactor, RamWorks extensions mémoire RamCharger alimentation permanente Vulcan disque Dur interne 20/40/100 Mo ... lic Extension mémoire avec/sans horloge et CP/AM, UniDisk 800K, kit de mise a niveau etc ... Le tout nouvel Apple IGS Révision 3, Scanner 4 main QuicKie, Carte SCSI DMA AppleWorks GS 1.1 et 3.0 US, GS.OS 5.0 F HyperStudio 2.1, GraphicWriter II,ProSel 16 les utilitaires Guardian et Renaissance ... BREJOUX.A 29 rue Montribloud 69009 LYON Tél, 78.36.5269 Fax. 78.25.5084 Boutique. 16 rue d'Aguesseau 92100 BOULOGNE Tél. 47.12.09.50 Fax. 47.12.09.59 Mardi au vendredi: 17h & 20h. Samedi: 10h a 12h30 -14h a 17h Soit en tout 9 variables... Cela est, certes, un peu encom- brant, surtout que ProDOS a la délicate attention de déposer un retour-chariot entre chaque variable enregistrée. Heureusement, un peu de réflexion et de sens pratique nous montre que tout cela peut tenir sans trop nous géner au niveau de la longueur minimum des enregistrements. Prenons le cas du fichier des dictons présenté dans le numéro précédent. Nous avons vu qu’il était limité a 99 enregistrements puisque la clé ne peut avoir plus de 2 chif- fres, La premitre variable ne dépassera donc pas 3 octets sur l’enregistrement zéro (2 chiffres et un retour-chariot). La longueur de la clé occupe 2 octets et la longueur d’enre- gistrement 3, Le fichier n’étant pas indexé, chaque groupe d'information d’index occupe 6 octets (3 zéros et 3 retours- chariot). En tout, nous avons besoin de 20 octets exac- tement pour tout enregistrer. Le fichier des dictons ayant une longueur d’enregistrement de 75 octets (sans le retour- chariot), il y a donc de la marge. Il est peu fréquent de définir des fichiers dont la longueur d’enregistrement soit vraiment petite et puisse poser des problémes de valeurs essentielles sur le record-zéro. Si ce cas se pose néammoins, il est toujours possible de s’en sortir, d’une maniére ou d’une autre, par quelques astuces de programmation appliquées a un cas précis. Pom’s n° 49 Pour que notre “outil” de gestion des records-zéro fonctionne dans les meilleures conditions possibles, il est préférable de fixer des limites entre lesquelles les valeurs essentielles pourront varier. Dans notre systéme structuré (et donc dans le programme proposé) ces limites sont les suivantes : > longueur de la clé : variable, de 2 4 5 chiffres. Une clé a un seul chiffre supposerait un fichier ne pouvant avoir plus de neuf enregistrements... Avec 5 chiffres nous pouvons aller jusqu’a 99999 enregistrements ; > longueur d’enregistrement : ProDOS permet d’aller jus- qu’a 32 768 octets. Nous nous sommes limités 4 8 192 octets soit 4 chiffres. Pour les index, le bornage sera identique dans les deux cas, soit > rang du ler octet : en accord avec la longueur maximum de l’enregistrement et de la zone & indexer, la valeur variera de 1 48190 (14 chiffres) ; > longueur de la zone a indexer : elle variera entre 2 et 99 octets (1 ou 2 chiffres) ; > nombre de postes : suivant les valeurs possibles de la clé, les bornes se situent entre 99 et 99999 (2a 5 chiffres). Tout cela est résumé dans le tableau de la figure 1. Nous connaissons maintenant les limites dans lesquelles nous pourrons évoluer. Les formules de calcul et de contréle mises en ceuvre dans le programme de gestion des records- zéro en tiennent compte. Le lecteur pourra éventuellement les modifier pour les mettre en conformité avec les travaux qu’il envisage. Le programme mn7Rzero peut calculer le nombre de postes pour chacun des index précisés. Pour cela, il suffit de ne pas informer les zones “Nombre de postes” (ou de les effacer). Dans le calcul mis en place dans le programme publié, le premier index est toujours privilégié au regard de la capacité mémoire allouée au calcul, ici 24 576 octets, mais l'utilisateur pourra faire intervenir des modifications. En changeant plusieurs fois les grandeurs introduites, on peut aussi affiner progressivement le résultat des calculs en tenant compte des paramétres du fichier de données. Lorsque le résultat souhaité sera obtenu, le déclenchement de la touche de fonction 3 autorisera la création du fichier ou la modification du record-zéro. Un peu de mathématiques L’un des problémes rencontrés concernait la possibilité d’introduire des variables non obligatoires. Or, l’absence d'une variable suffit 4 “planter” un programme au niveau de linstruction de lecture de ces variables. Pourtant, il nous a paru nécessaire d’introduire la notion de plus haute clé possible pour un fichier, ne fut-ce que pour pouvoir bloquer la numérotation 4 une valeur que l’on ne souhaite pas dépasser. Imaginons un catalogue prévu pour 300 articles maximum. La longueur de clé nécessaire, soit 3 chiffres per- mettrait de numéroter jusqu’a 999. En fixant la plus haute clé possible 4 350 par exemple, on est sir que le fichier ne dépassera jamais cette limite et que les programmes con- serveront de bonnes performances, surtout au niveau des balayages. Pour arriver a cette fin, la converiiion suivante a été mise en ceuvre : > si une plus haute clé possible est spécifiée, elle est combinée avec la longueur de clé ; > si aucune plus haute clé possible n’est spécifiée, il est considéré que les enregistrements peuvent aller jusqu’au maxima permis par la longueur de la clé et seule cette longucur de clé est enregistrée. La formule de combinaison de la longueur de clé avec la plus haute clé possible est la suivante : Chiffre = (Plus Hte Clé * 5) + Long clé - 1 Et les formules d’extraction des valeurs d’origine sont les suivantes : Plus Haute Clé = INT(Chiffre / 5) Long.clé = (Chiffre - (Plus Hte Clé*5)) + 1 La valeur critique permettant de savoir si une plus haute clé possible est combinée avec la longueur de clé est 5, ce qui correspond au maximum de la longueur autorisée pour la clé, Dans nos programmes nous mettrons en ceuvre une comparaison entre la longueur de clé lue et la valeur 5. Sila valeur lue est supérieure, il y a une plus haute clé possible et on extrait les valeurs combinées. Dans le cas contraire, la valeur lue est la vraie longueur de clé. Une autre astuce concerne la notion de “record-map”. Il s'agit d’enregistrer, dans les index, la chaine qui indique la présence ou l’absence d’enregistrements dans le cas of un fichier est indexé automatiquement c’est a dire sans que Vutilisateur ait @ intervenir au niveau du rang des enregistrements. Ces “record-maps” sont de simples chaines de 100 octets (on peut faire mieux !) enregistrées avec les index. On génére autant de chaines que de centaines d’enregistrements possibles, cela sur commande et si les programmes ont été prévus pour gérer ces chaines. Plus de Copy II Central Point SoftWare nous annonce que de récents changements de lois dans différents pays a propos de la protection des logiciels interdisent a partir de maintenant toutes ventes hors U.S.A. des logiciels Copy II Plus et Copy I Mac. Pom'’s vendra donc Copy I jusqu’& €puisement de son stock, mais ne sera malheureusement pas en mesure d'effectuer de mise & niveau. Pom’s n° 49 Le nombre de chaines existantes est enregistré en (TI$))) - (We * 2) 340 TIS = LEFTS (WBS,W%) + TIS + LEFTS (WBS,We + combinaison avec la longueur de la zone indexée qui n’est ww) jamais supérieure 4 99. Si ce nombre est supérieur 4.100, 350 WNS(1) = "01012TF -> I=Aide 3-Ecriture R- alors le chiffre des centaines indique le nombre de “record- eezot = Baesor WVeMalents® maps” existantes, et le nombre en dessous de 100 la 76 WNS(2) = "02012": FOR W = 1 TO B0:HNS(2) = longueur de la zone indexée. MN LAY tn Ae NEAR 8 370 WN$(3) = "03012" + WD$ + TIS + PGS 380 WNS(4) = "04092" + LEFT$ (WBS,Wt) + WS 400 WN$(05) = "06017Nom du Fichier 4 traiter...." Pour terminer 410 WNS(06) = "06300:" 420 WN$(07) = "06462Préfixe : 430 WNS$ (08) = "08010 Quantum du Fichier...... _ 440 WN$(09) = "09010 Longueur de clé nunéeique., Nous espérons que le lecteur nous aura suivi sans trop de 450 WNS(10) = "10010 Valeur maxi de la clé...... problémes tout au long de ces laborieuses explications et 469 WNS(11) = "11010 Longueur d'enregistrement.. que la mise en cuvre du programme mvrrzeRo lui ap- 472 WNS(12) = "13010Nom du ler FRAG: winnie neisinsis portera des facilités au niveau de la création et de la pe ei TEAR) Rane Lex eae es deritager i 4 oa (14) = "15010 Longueur zone ler Index.... maintenance des fichiers. Certaines modifications pourront 559 wys(15) = "16010 Nombre de postes ler Index avantageusement étre faites sur ce programme pour le 570 wns(16) = "15460 Record-Map (O/N). " mettre en harmonie avec les applications que chacun pourra 530 wNS(17) = "16460 Nombre de chaines * envisager. 540 WN$(18) = "18010Nom du 2éme Index.... , 550 WN$(19) = "19010 Rang ler octet 2éme Index. Dans un prochain article, nous présenterons une application 6° #NS (20) = wenn? Longueur zone 2éme tne en vraie grandeur de gestion d’une petite bibliothéque avec es ee ae 7 ene hier aise Eiimel — double index permettant la liste alphabétique des livres par 599 wys(23) = "22460 Nombre ae acre, eceeee dt titre et par auteur, ainsi qu’une recherche rapide par mots- 99 wws(24) = "06550 " cle, 650 WNS(29) = "2312" + RIGHT (WNS (2), 00) 660 W2S(1,01) = "0632092":W2$(2,01) = LEFTS$ (WBS, 9) 670 W2$(1,18) = "0656242":W2$ (2,18) = WX$ 680 WARGS = "":AARGS = "":WMES$ = "01 " CG 690 REM 700 W2$(1,2) = "0832051":W2Z$ (1,3) = "0932013":WZ$ (1,4) = "1032053" Programme Mntrzero 720 W2$(1,5) 1132043":W2$ (1,6) = "1332111": W2$ (1,7) = "1432043" 10 REM *hRRRRNANEHER RAR RREE RRR RARE EHR 780 W2$(1,8) = "1532023":WZS (1,9) = "1632053" 20 REM * MNTRZERO - Maintenance des Records-Zéro 800 W2$(1,10) = "1575012":WZ$(1,11) = 30 REM * Auteur : R-J Anderson "1675023": W2$ (1,12) = "1832111" 40 REM AARARARARRHH HR RRR OREM E HERR R HONE 820 W2$ (1,13) = "1932043":W2S$(1,14) = 50 REM "2032023":WZ$ (1,15) = "2132053" 60 PRINT CHR$ (4); “PRE3” 840 W2$(1,16) = "2075012":WZ$(1,17) = "2175023" 100 TEXT : NORMAL : CLEAR :D$ = CHR (4) 880 GOSUB 900: GOTO 1000 120 FOR W = 1 TO 080:wBS = WBS +" "; NEXT 900 FORW= 2 TO WZ - 1:W2S$(2,W) = LEFT$ (WBS, VAL 130 RMS = "*$$*": FOR W = 1 TO 100:RM$ = RMS + " ( MIDS (W2$(1,W),5,2))): NEXT NEXT 910 W2$(2,10) = "N":W2$(2,16) = "N” 140 WN = 25: DIM WNS(WN): REM Tableau des Libellés $20 RETURN Ecran 1000 REM TAG --~ 150 WZ = 18: DIM WZ$(2,WZ): REM Tableau des champs Point-retour et affichage de l'écran 160 FOR W= 1 TO 9:LV$ = LVS + "O":HV$ = HVS + "9": 1050 HOME :W=0 NEXT 1210 FOR WW = 1 TO WN:WV = VAL ( MID$ 180 VG = 768:PG$ = "MNTRZERO":F1$ = "" (WNS (WH) ,1,2)): VTAB WV 200 REM ----~ 1220 WH = VAL ( MID$ (WNS(WW),3,2)):WT = VAL ( 210 REM Saisie du Préfixe et de la Date MIDS (WN$ (WW), 5,1)) 220 Clt = PRINT D$; "PREFIX": INPUT WX$: PRINT D$ 1230 POKE 1403,WH - IF WY > 4 THEN WT = WT - 230 W= INT ( PEEK (49041) / 2):WD$ = STRS (W) POKE 50, 63 240 WD$ = RIGHTS ("0" + STRS (( PEEK (49041) - W * 1250 PRINT MIDS (WN$(WH),6, LEN (WNS(WH)) ~ 5); 2) * 8+ INT ( PEEK (49040) / 32)),2) + "/" + POKE 50,255 wos 1260 IF WE > 1 GOTO 1290 250 WD$ = RIGHTS ("0" + STR$ ( PEEK (49040) - INT 1270 W = W+ 1: POKE 1403, ( VAL ( MIDS ( PEEK (49040) / 32) * 32),2) + "/" + WDS (W2$(1,W),3,2)) ~ 1) 300 REM ~~ 1260 IF MID$ (W2S(1,W),7,1) < "6" THEN PRINT Définition Ecran et Zones W2S (2,W)¢ 310 TI$ = "GESTION DES RECORDS ZERO" 1290 NEXT WW 320 WS = "": FOR W= 1 TO LEN (TI$):WS = WS + "-"; 1300 WM = VAL ( LEFTS$ (WMESS,2)) - 1 NEXT 1310 VYAB 24: POKE 1403,0: CALL - 868 330 WS = (64 - ( LEN (TIS))) / 2:WW = (64 - (LEN 1320 PRINT RIGHTS (WMES$, LEN (WMESS$) - 3); Pom’s n° 49 10 1330 IF MID$ (WMES$,3,1) 1500 REM TAG ------: Entrée Argument et Données 1510 WO$ = "":WM = WM + 1: IF WM > WZ THEN WM = 1 1520 IF WM <1 THEN WM = Wz 1530 WO = O:WENT$ = W2$(2,WM):WL = (W2$ (1,WM),5,2)) 1540 WV = VAL ( MIDS (WZ$(1,WM),1,2)) :WH = MIDS (WZ$(1,WM),3,2)) - 2 "E" THEN CALL - 198 VAL ( MIDS VAL ( 1550 WT = VAL ( MIDS (WZ$(1,WM),7,1)) 1560 IF WI = 1 AND WK = 27 THEN WM = WM ~ 2: GOTO 1500 1570 IF Wr = 1 GoTo 1500 1600 WO = WO + 1: IF WO > WL GOTO 2000 1610 VTAB WV: POKE 1403,WH + WO: POKE 50,127 1620 PRINT MID$ (WENT$,WO,1);: POKE 50,255 1630 WAIT 49152,128: POKE 49168,0:WK = PEEK (49152) 1640 IF WK = 10 OR WK = 11 OR WK = 124 THEN 1630 1650 IF WK = 24 THEN IF WM > 1 THEN WZ$(2,WM) = LEFTS (WB$,WL + 2): VTAB WV: POKE 1403,WH + WO: PRINT WZ$(2,WM);: GOTO 1530 1660 IF WI = 2 AND WK > 96 AND WK < 123 THEN WK = WK ~ 32 1680 WKS = CHRS$ (WK):WO$ = ""; IF PEEK (49249) > 127 THEN WO$ = WKS 1690 POKE 1403,WH + WO: IF WK = 13 GoTo 2000 1710 IF WK = 9 THEN PRINT MIDS (WENT$,WO,1);: Goro 2000 1720 IF WK = 27 THEN POKE 1403,WH + 1: PRINT W2$ (2,WM)7:WM = WM - Goro 1500 1740 IF WK = 21 THEN PRINT MID$ (WENT$,WO,1);: FOR K = 1 10 48: NEXT : GOTO 1600 1770 IF WK = 8 AND WO < 2 THEN WO = 0: GOTO 1600 1780 IF WK = 8 THEN PRINT MID$ (WENT$,WO,1);:WO = WO - 2: GOTO 1600 1810 IF WK < > 127 THEN 1900 1820 IF WO = WL THEN WENTS = LEFT$ (WENT$,WL ~ 1) +" ": GOTO 1860 1830 IF WO = 1 THEN WENT$ = RIGHTS (WENT$,WL - 1) +" ": GOTO 1860 1840 WENT$ = LEFT$ (WENT$,WO - 1) + (WENT$,WL - WO) + 1860 W2$(2,WM) = WENTS: POKE 1403,WH + 1: PRINT WENT$: GOTO 1610 RIGHTS 1900 IF WoS < > "" GoTo 2000 1920 IF WT = 3 AND (WK < 47 OR WK > 57) AND WK < > 32 GOTO 1630 1960 PRINT WK$;: IF WL = 1 THEN WENT$ = WK$: GOTO 1600 1970 IF WO = 1 THEN WENT$ = WK$ + RIGHTS (WENTS, WL - WO): GOTO 1600 1980 IF WO = WL THEN WENTS = LEFT$ (WENT$,WO ~ 1) + WKS: GOTO 1600 1990 WENT$ = LEFTS (WENTS,WO - 1) + WKS + (WENTS,WL - WO): GOTO 1600 RIGHTS 2000 POKE 1403,WH + WO: PRINT MID$ (WENT$,WO,1); 2010 W2$(2,WM) = WENTS: IF WOS = "" AND WK < > 13 GOTO 1500 2030 VTAB 24: POKE 1403,0 2500 REM -: Saisie du Préfixe 2520 IF W2$(2,18) < > LEFT$ (WBS, (W2$(1,18),5,2))) GOTO 2600 2530 PRINT D$;"PREFIX"; INPUT WX$: PRINT D$ 2550 WZ$(2,18) = LEFT$ (WX$ + WBS, VAL ( MIDS (W2$ (1,18),5,2))) 2600 REM ne VAL ( MID$ Construction de 1'argument 2620 WX$ = "": FOR W = 1 TO 24 2630 IF MIDS (WZ$(2,18),W,1) < >" " THEN WX$ = WXS + MIDS (WZ$(2,18),W,1) 2640 NEXT W: IF LEFT$ (WX$,1) < > "/" THEN WX$ = 7" + WKS 2650 IF LEN (WXS$) > 24 THEN WX$ = 2660 WZS(2,18) = LEFT$ (WXS + WBS, 24) 2670 IF RIGHTS (WX$,1) < > "/" THEN WX$ = WX$ + nye 2700 Fl$ = "": FOR W = 1 70 clt 2710 IF MID$ (WZ$(2,1),W,1) < F1I$ + MID$ (W2$(2,1),W,1) 2720 NEXT W:WARGS = WX$ + F1$ 2800 WMES$ = "00 ":WPS = "": 3000 REM ~~~: Test des Touches de Fonction 3050 IF WO$ < > "1" AND WK < > 38 GOTO 3250 3100 FOR W= 1 T0 5: HOME : PRINT "PANEL D'AIDE" SPC( 60)PG$; 3120 PRINT MID$ (WN$(2),6,80);: FOR WW = 1 TO 20 3130 READ WS: IF WS = "**" THEN WS = "":WW = 21:W = 5 3150 PRINT W$: NEXT WW: VTAB 23: POKE 1403,0 3170 PRINT MID$ (WN$(2),6,80);: PRINT Touche "; 3180 GET WS: 3190 PRINT : LEFT$ (WX$,24) >" " THEN F1$ = IF WOS = "" THEN 4000 "Pressez une IF WS = "" GOTO 3180 NEXT W: RESTORE 3200 WMES$ = LEFTS ("0" + STRS (WM),2) + terminée": GOTO 9000 3250 IF WO$ = "3" OR WK = 34 GOTO 4000 3270 IF wos = OR WK = 39 THEN NEW : 3310 IF WOS = "V" OR WO$ = "v" GOTO 4000 3410 WMESS = LEFT$ ("0" + STR (WM),2) + 3420 WMES$ = WMES$ + "Touche de Fonction non définie": Goro 9000 4000 REM ~ -- Traitement selon arguments 4010 IF F1$ = “" THEN WMESS = absent": GOTO 9000 4020 IF WARG$ = AARG$ GOTO 5000 4030 GOSUB 900:R1% = O:WF = 0:WZ$(2,2) = " 4050 ONERR GOTO 4080 4060 PRINT D$;"PREFIX";WX$ 4070 PRINT D. GOTO 4100 4080 WMES$ = "18APréfixe " + WxXS + " 4090 PRINT D$: GOTO 9000 4100 ONERR GOTO 4150 4110 PRINT D$; "VERIFY"; WAS 4120 PRINT D$: GOTO 4200 4150 WMES$ = "O3AFichier inexistant, possible" 4160 PRINT D$: POKE 216,0: GOTO 9000 4200 WF = 1 4210 PRINT D$; "OPEN"; WAS 4220 ONERR GOTO 4350 4230 PRINT D$;"READ";WAS 4250 INPUT FO,CO,FO%,1I1,11%,X1,12,12%,X2 4260 PRINT D$; "CLOSE": PRINT DS 4270 R1* = 1: GOTO 4400 4350 FO = O:W2$(2,2) = LEFT$ ("0" + WBS, 5) 4360 W = PEEK (222) :WMES$ = "03AAnomalie sur record zéro, mais" 4370 IFW 5 THEN WMESS = "03APas de record zéro," 4380 WMES$ = WMESS + “ création possible” 4390 PRINT D$;"CLOSE";WA$: PRINT D$: POKE 216,0: Goro 9000 4400 FO = FOR ~ 1: les valeurs lues "AAide END “O1ENOm fichier introuvable" création REM Remplissage des zones par Pom’s n° 49 4480 W2$(2,2) = LEFT$ ( STR$ (FO) + WB$,5) 4490 HO = 0: IF CO > 56 THEN HO = INT (CO / 5):CO = (CO - (HO * 5)) +1 4510 W2$(2,3) = STR$ (CO) 4520 WZ$(2,4) = STR$ (HO) 4530 W2$(2,5) = LEFTS ( STR$ (FO%) + WBS, 4) 4600 IF I1 = 0 GOTO 4700 4610 WZ$(2,10) = "N": IF I1% < 100 GOTO 4650 4620 W2$(2,10) = "O":W = INT (11% / 100) 4640 W2$(2,11) = LEFTS ( STRS (W) + WBS,2) 4650 WZ$(2,6) = F1$ + "XI" 4670 W2$(2,7) = LEFTS ( STR$ (I1) + WBS, 4) 4680 W2$(2,8) = LEFTS ( STR$ (11%) + WBS, 2) 4690 W2$(2,9) = LEFTS ( STR$ (X1) + WBS,5) 4700 IF 12 = 0 GOTO 4900 4710 W2$(2,16) = "N": IF I1¢ < 100 GOTO 4650 4720 W2$(2,16) = "O":W = INT (118 / 100) 4740 W2$(2,17) = LEFTS ( STRS (W) + WBS, 2) 4750 W2$(2,12) = F1$ + "x2" 4760 W2$(2,13) = LEFTS ( STRS (I2) + WBS, 4) 4770 W2$(2,14) = LEFTS ( STR$ (I2%) + WBS, 2) 4780 W2$(2,15) = LEFTS ( STRS (x2) + WB$,5) 4900 REM 4970 WMES$ = "02ARecord-Zé6ro existant. Modifications possibles" 4990 Goro 9000 5000 REM TAG -~ Controle de validité des zones 5030 CO® = VAL (W2$(2,3)):CO = CO 5040 HO = VAL (WZ$(2,4)):FO% = VAL (W2$(2,5)) 5050 IF CO& > 0 THEN C9 = VAL ( LEFTS$ (HV$,CO%)) 5060 IF CO’ <1 OR CO% > 5 THEN WMES$ = "03ELongueur de clé incorrecte": GOTO 9000 5080 IF FOt = 0 THEN WMES$ = "05ELongueur enregistrement absente": GOTO 9000 5090 IF FO® < 41 THEN WMES$ = "05ELongueur mini 41 octets": GOTO 9000 5100 IF HO > C9 THEN WMES$ = "O4EValeur maxi hors limite": GoTo 9000 5110 IF HO = 0 THEN HO = C9:W2$(2,4) = STR$ (HO) + WB$,5) LEFT$ ( 5120 IF HO > 0 AND HO < C9 THEN CO = (HO * 5) + CO® -1 5150 REM $160 I1$ = LEFT$ (WB$,9):12$ = I1$ 5170 M1$ = W2$(2,10):M2$ = WZ (2,16) 5190 W = 24576: RE Mémoire réservée aux Index 5200 REM =~ -- Traitement premier Index 5220 I1# = VAL (WZ2$(2,8)):I1 = VAL (W2$(2,7)) 5230 IF I1* = 0 AND Ii = 0 GOTO 5600 5240 IF I1% = 0 THEN WMES$ = "O8ELongueur zone Index 1 absente” 5260 IF I1 = 0 THEN WMES$ = "O7ERang ler octet Index 1 absent” 5270 IF (I1¢ + I1) > FO& THEN WMES$ = "07EValeur incorrecte" 5280 IF LEFT$ (WMES$,2) < > "00" GoTo 9000 5290 I1$ = F1$ + "X1":WZ$(2,6) = LEFTS$ (I1$ + WB$,11) 5310 X1 = VAL (W2$(2,9)) $320 IF X1 = 0 THEN X1 = INT (W / 118) 5330 IF (X1 * 11%) > W THEN WMES$ = "09EIndex 1 trop gros": GOTO 9000 5350 IF X1 > HO THEN X1 = HO 5360 W2$(2,9) = LEFTS ( STRS (X1) + WBS, 5) record-map": GOTO 9000 $440 M1 = VAL (W2$(2,11)):WW = I1€:I1% = (M1 * 100) +11 5450 IF Ml < 1 OR Ml > 10 THEN WMES$ = "11ENombre de chaines incorrect" 5600 REM Traitement deuxiéme Index 5620 12% = VAL (WZ$(2,14)):I12 = VAL (WZ$(2,13)) 5630 IF I2% = 0 AND I2 = 0 GOTO 6000 5640 IF 12% = 0 THEN WMES$ = "14ELongueur zone Index 2 absente” 5660 IF I2 = 0 THEN WMES$ = "13ERang ler octet Index 2 absent" 5670 IF (I2% + 12) > FO THEN WMES$ = "13EValeur incorrecte" 5680 IF LEFT$ (WMES$,2) < > "00" GOTO 9000 5690 I2$ = F1$ + "X2":W2$(2,12) = LEFT$ (12$ + WBS, 11) 5700 W = W - (X1 * WW) 5710 X2 = VAL (W2$(2,15)) 5720 IF X2 = 0 THEN X2 = INT (W / I2%) 5730 IF (X2 * 12%) > W THEN WMESS = "15EIndex 2 trop gros" + STR$ (W): GOTO 9000 5750 IF X2 > HO THEN X2 = HO 5760 W2$(2,15) = LEFT$ ( STR$ (X2) + WBS,5) 5800 IF M2$ = "N" GOTO 6000 5820 IF M2$ < > "O" THEN WMES$ = "16EO/N pour la record-map": GOTO 9000 5840 M2 = VAL (WZ$(2,17)):12% = (M2 * 100) + 12% 5850 IF M2 <1 OR M2 > 10 THEN WMES$ = "17ENombre de chaines incorrect": GOTO 9000 6000 REM Fin traitement Index 6020 IF LEFT$ (WMES$,2) < > "00" 7000 REM ~~ - Visualisation des Valeurs essentielles 7020 IF Wo$ < > "V" AND WOS$ < > "v" GOTO 7500 7050 HOME : PRINT "VALEURS ESSENTIELLES" SPC( 52) PGS; 7060 PRINT MID$ (WNS(2), 6,80); 7080 VTAB 4: PRINT "Nom Fichier = ";F1$; 7100 PRINT TAB( 28)"Préfixe = ";WX$: PRINT 7110 PRINT " Long, Clé = ";CO%; TAB( 28);"P.H. clé = ";HO; 7120 PRINT TAB( 47);"Long. Enregistrement = 7130 PRINT "| Enregistré = ";CO 7200 VTAB 09: PRINT "Nom Index 1 7210 PRINT " Rang ler octet 40) "Record-Map = ";M1$ 7220 PRINT " Longueur de zone = ";I1% TAB( 40) "Chaines = "3M 7230 PRINT " Nombre de postes = ";X1 7300 VTAB 15: PRINT "Nom Index 2 ";12$: PRINT Goro 9000 "7FO8 ";I1$: PRINT = ";T1; TAB( 7310 PRINT " Rang ler octet = ";12; TAB/ 40)"Record-Map = ";M2$ 7320 PRINT " Longueur de zone = ";12¢ TAB( 40) "Chaines = "2M2 7330 PRINT " Nombre de postes = ";X2 7340 VTAB 23: POKE 1403,0: PRINT MID$ (WNS (2), 6, 80); 7350 PRINT “Pressez une Touche ";:W$ = "" 7360 GET W$: IF WS = "" GOTO 3970 7430 WMESS = LEFTS ("0" + STRS (WM),2) + "AAffichage terminé” 7450 GOTO 9000 7500 REM 7520 IF WO$ < > "3" AND WO$ < > WMES$ = "01ADonnées correctes. CHR$ (34) THEN 1F3 écrit le 5400 IF M1$ = "N" GOTO 5600 Record-Zéro": GOTO 9000 5420 IF Mi$ < > "O" THEN WMES$ = "10EO/N pour la 8000 REM ---: a a : Pom’s n° 49 11 Mise a Jour du Record Zéro 8020 FO = VAL (WZ$(2,2)) 8050 WMES$ = "Création fichier " 8060 IF WF = 1 THEN WMES$ = "Modification fichier " 8070 WMESS = WMESS + F1$ + " en cours...": GOSUB 8900 8120 FOt = FOt + 1: PRINT D$;"OPEN"; WAS; ",L";FO% 8130 PRINT D$;"WRITE";WA$;",RO" @140 PRINT FO: PRINT CO: PRINT FO* 8150 PRINT Il: PRINT I1%: PRINT X1 8160 PRINT 12: PRINT I2¢: PRINT X2 8170 PRINT D$;"CLOSE";WAS 8180 PRINT D$:FO¢ = FOt - 1 8200 IF Il = 0 AND I1# = 0 GOTO 8400 8210 WMES$ = "Création Index " + I1$ + " en cours...": GOSUB 8900 8220 WWS = WXS + I1$ 8230 PRINT D$;"OPEN"; WHS 8240 PRINT D$; "WRITE"; WWS 8250 IF M1$ = "O" THEN FOR W = 1 TO M1: NEXT W 8260 FOR W = 1 TO Xl: PRINT " ": NEXT W 8270 PRINT D$;"CLOSE";WWS$: PRINT D$ 8400 IF I2 = 0 AND I2¢ = 0 GOTO 8500 8410 WMES$ = "Création Index " + I2$ + " en cours...": GOSUB 8900 8420 WWS = WXS + I2$ 8430 PRINT D$; "OPEN"; WWS 8440 PRINT D$; "WRITE"; WWS PRINT RMS: 8450 IF M2$ = "0" THEN FOR W = 1 TO M2: PRINT RM$: NEXT W 8460 FOR W= 1 TO X2: PRINT " ": NEXT W 8470 PRINT D$;"CLOSE";WW$: PRINT D$ 8500 REM 8510 PRINT D$;"FRE";WW$: PRINT D$ 8600 WMES$ = "01ACréation Fichier " + WAS +" terminée." 8880 GOTO 9000 8900 VTAB 24: POKE 1403, 0: WMES$;: RETURN 9000 REM TAG - Point d'aboutissement général 9010 AARGS = WARG$: IF MID$ (WMES$,3,1) = 1000 9020 GoTo 1300 9050 DATA “Nom du Fichier : 9060 DATA “Le nom du Fichier ne doit pas excéder NEUF caractéres." 9070 DATA "I1 doit étre entré sans le Préfixe qui est 4 indiquer dans” 9080 DATA “la zone spécifique. Le Préfixe est facultatif si le fichier" CALL - 868: PRINT "A" GOTO DATA 9090 DATA “est créé sur le préfixe en cours.", 9100 DATA "Quantum :": DATA "=~ 9110 DATA "C'est le nombre d'enregistrements existants dans le fichier en" 9120 DATA “cours de traitement. n'existe pas ou s'il n'a pas” 9130 DATA “encore été mis 4 jour, cette valeur est zéro. Le programme" Si ce fichier 9140 DATA “ne peut la modifier.", 9150 DATA "“Longueur de Clé :": DATA "- 9160 DATA "Donner la longueur réelle de la clé numérique qui sera utilisée” 9170 DATA “c'est a dire, la longueur du chiffre de l'enregistrement de plus" 9180 DATA “haut rang du fichier. Les limites sont 2 et: 53%, 9200 DATA “Plus Haute Clé :": DATA " 9210 DATA "La plus haute clé est facultative. C'est une valeur qui sera" 9220 DATA "combinée avec la longueur de la clé, i pour limiter la numérotation" 9230 DATA “des enregistrements au rang voulu.", 9250 DATA “Longueur d'enregistrement :": DATA "~~ 9260 DATA “La longueur d'enregistrement peut varier entre 41 et 8192 octets." 9270 DATA "Donner la vraie longueur des données. Le retour-chariot sera" 9280 DATA “ajouté automatiquement par le programme.", 9300 DATA "“Indexation :": DATA 9310 DATA “Les valeurs pour les index et record- map sont identiques pour" 9320 DATA “chaque index possible. Les index sont calculés selon une place" 9330 DATA "en mémoire conventionnelle de 24.576 octets. Les valeurs limites" 9340 DATA “sont spécifiées sur les écrans suivant. aoe j 9350 DATA “Rang du ler octet DATA * 9360 DATA "C'est la position du ler octet de la i zone a indexer, par rapport" 9370 DATA "au ler octet de l'enregistrement. Le ler octet de l'enregistrement" 9380 DATA "porte le numéro 1. 9400 DATA “Longueur de Zone :": DATA " 9410 DATA “Donner la longueur, en octets, de la zone 4 indexer. Cette valeur" 9420 DATA ‘peut varier entre 2 et 99 octets 9450 DATA “Nombre de postes : DATA: fa0= 9460 DATA “Spécifier le nombre de postes désirés pour l'index. Le programme" 9470 DATA “peut calculer cette valeur automatiquement. Il suffit de ne rien” 9480 DATA "“spécifier dans cette zone ou de l'effacer.",++, 9700 DATA "Record-map DATA ". 9710 DATA "Spécifier par O ou N si un tableau d'assignation d'enregistrements" 9720 DATA “est désiré, dans le cas d'une indexation automatique. Les tableaux" 9730 DATA "“d'enregistrements sont écrits au début des index sous forme de" 9740 DATA "chaines de 100 octets commencant par le code *MAP*.", 9750 DATA "Nombre de chaines :": DATA " 9760 DATA "La record-map est constituée de chaines de 100 octets.” 9770 DATA “Donner le nombre de chaines nécessaires au traitement," 9780 DATA "“compte-tenu de la valeur maximum de la clé.", 9800 DATA **,** 9900 END Pom’s n° 49 Les transferts Mac/GS Avant toute chose, dressons la liste du matériel indispensable pour réaliser cette opération. Giffer 1.06 Un Macintosh ; ¥, Un Apple IIGs ; Le logiciel shareware Giffer sur Macintosh ; Le logiciel shareware Shreonvert SHRConvert sur Apple IGS ; Les logiciels systtmes MacOS 6.0.5 et GS/OS 5.0.2 ou ultérieurs ; Le logiciel ResEdit sur Macintosh . XS 8S SSN S Transfert d’images couleurs Apple IIGS vers Macintosh + Lancez SHR Convert sur |’ Apple IIGS, * Sélectionnez dans la Select picture type to convert liste supérieure de Apple TI fomily oO) l'image ci-contre le Apple Ilgs specific a Atari ST type d’image a Commodore 64/128 charger . Macintosh f . Computer-independent |_|* Sélectionnez ensuite 3] le sous-type /\ Computer tupe ~~ spécifique de Specific type V | l'image a charger. Type $C (PNT) compressed Type $C1 (PIC) non-compressed PS I1gs color graphic PS IIgs built-in (GRAPHIC.C6TO-7) a. Utilisez l'aide en ligne si vous désirez en savoir plus sur le type de fichier ny image Apple II ou GIF. Cliquez & Pintéricur pict Select format for saved pictures de la fenétre Emile Schwarz Cliquez ensuite dans le bouton Save et sélectionnez la taille de l'image. II faut presser Return ou bien cliquer dans un bouton. L’interface standard Apple pour l’enregistrement des fichiers apparait et vous demande sous quel nom vous désirez enregistrer cette image. Donnez donc un nom ou conservez le nom par défaut, puis pressez Rtn ou sur Save. Un nouveau dialogue apparait et affiche un texte informatif ainsi qu’un thermométre montrant I’avancement de la sauvegarde. If this file is to be uploaded toa computer service or BBS, please include the fol lowing dota in its description: ONO x 200 x 167 N09 information (the picture's zontal & vertical size, number of Une fois l’enregistrement terminé, un bouton le signalant s'affiché a la place du thermométre. L’image ainsi sauvegardée est du type $06 (BIN), auxtype $0000, 1 turn out on their porticulor srophics hardware, tee Apple File Exchange Lancez Apple File Exchange sur Macintosh, Transférez l'image GIF puis quittez et lancez ResEdit. Sélectionnez l'image transférée. Puis ouvrez une fenétre d'information a I'’aide de l’option Get Info du menu File. Lisez le manuel d’accompagnement de ResEdit pour la description du fonctionnement de ResEdit. Attention, ResEdit est un produit a utiliser avec précautions. En effet, mal utilisé, il peut détruire des fichiers. wo Il faut maintenant modifier le type et le créateur afin que Giffer puisse charger cette image. Pour ce faire : Preterencar. W sélectionnez la case Type et remplacez 06 par GIFf ; Sove représentée ci- WV sélectionnez maintenant la case Creator et remplacez $C0,0PointWorks+ 1.0 (obsolete) [O) contre pdos par GIFf. $C0,1 PackBytes (obsolete) Sél ‘ $C0,2 Apple Preferred ectonnez . : C1 non-compressed screen Voption GIF (CIS Lorsque le type et le créateur du fichier GIF a été modifié GIF (CIS Graphics Interchange) Graphics comme sur l'image ci-aprés, enregistrez les modifications ty Interchange). ou bien fermez la fenétre. Pom’s n° 49 13 14 Creator [Bit Si vous n’avez pas Ries Biekee pee enregistré les snares ONo Inits modifications, le Elmo suntcn unc Mislogus Cleese vous demande si vous désirez le faire. ove “Info for Mie SCAEEN.6IF™ Defers cisting? Pressez Return ou cliquez sur = Yes. Quittez ResEdit par @-Q ou bien en sélectionnant l’option Quit du menu File, Vous pouvez maintenant lancer Giffer en ouvrant le menu File, et sélectionnant l'option Open GIF file. A l'aide de l'interface standard Apple de sélection de fichiers, choisissez une image. Aprés quelques secondes, une fenétre contenant l'image transférée apparait. Un détail cependant : comme vous pouvez le constater sur votre écran, l'image est distordue. Pas de panique ! ba we Ouvrez le menu Zoom... oA Tk hU lide: Shift Scan Line... 3H reesaeey eama Use Default Palette #1 Toption Zoom... La résolution affichée est de 640 x 200, celle de l'Apple IIGs, Now width: [eo] New height: Modifiez donc la valeur verticale pour afficher 400 lignes au lieu de Greslae egies ie) 200 et pressez Retour {F3 or emi ou cliquez dans le Sélectionnez l'option Memorize Picture du menu ImageStorage, puis utilisez l'une des options de sauvegarde du menu File afin de sauver l'image. Transfert d’images couleurs Macintosh vers Apple lIGS Lancez Giffer sur Macintosh, puis chargez une image a l'aide de l'une des options Ouvrir du menu File. WY Sélectionnez l'option Save as GIF file... et sauvegardez l'image. vA aide d'AFE, transférez l'image Mac sauvegardée au format GIF sur une disquette Apple II. Lancez SHRConvert. Utilisez l'option Changing: /VIDE/NOC SIF Change File Métiietwe: OCT — ew filetave: [ET] attributes du menu 1d oox_tape: S008 oo wxx.tovw: [0000 ] File. Modifiez le type Detetwte et donnez lui la valeur Kees chee Fj Weitesble $06 (BIN), puis teetaite —— _toneel_) passez le sous-type & la valeur $0000. Sélectionnez le type Apple II fomily rn d’image a charger & Apple 119s specific ry partir de la fenétre Atari ST Select picture type to Merial Wi convert. Computer-indépendént is Cliqueidans 16 Cin orfaee Si ait Vv. H et boa ton Load, puis, GIF Chraphics Interchange Format) [> Taide de l'interface ALE (Run Length Encoding) ry standard de sélection de fichier, chargez une image GIF, |_| oy Pronesstny BIFE7 las Un dialogue de sélection aster widt Hie Raster height: 200 apparait et vous Propose 1 Color map size: 16 Plusieurs choix. Palette range: 4096 @ Calculated palette A vous d'effectuer le bon |} C) Default color palette choix en fonction de la définition d'origine de l'image et des couleurs présentes. } © 6royscale palette Ou trouver les produits ? ‘= Giffer pour Macintosh : sur la disquette Pom's n°49 ; ‘= SHRConvert pour Apple IIGS : CalvaCom, GS Club et Pom’s (DPA 007) ; ResEdit pour Macintosh : APDA France et CalvaCom ; im Les logiciels systtme MacOS 6.0.5 et GS/OS 5.0.2 : revendeurs Apple. Erratum L’adresse du revendeur de Keylock (Pom's 48, encadré page 43) est: MACTIQUE Box 965. S-801 33 Gavl, Suéde Télécopie : (46) 26 17 24 02 Pom’s n° 49 GS: Ics Un CDA formateur Format Dans le Pom’s n° 35, Pierre Demblon se lamente : on ne dispose toujours pas d'une commande Format univer- selle, permettant de formater tout disque ProDOS. C’était vrai, mais il se trompait en avangant qu’une telle commande n’existerait qu’a partir de la future version 2.0 du ProDOS 16. En effet, dans les ProDOS 16 v1.1 Release Notes and Documentation Updates du 15 décembre 1986, la ProDOS Team annonce que ce formatage existe dans ProDOS. Oui, il s’agit bien de l’appel $24, expliqué et commenté dans le source APW du CDA qui suit et, qui permet, selon Apple, de formater tous les lecteurs pouvant supporter ProDOS, dont ceux se branchant sur le Smart- Port, et les Disk II. Je peux d’ores et déja vous dire que cela fonctionne tres bien sur le vieux Disk II, les 3.5” ou le Ramdisk. Le tout était donc de l’utiliser. La version actuelle de ce CDA est comme l’appel $24 (For- mat) : elle ne supporte actuellement que ProDOS. Mais plus tard, elle devrait pouvoir formater les autres systémes d’exploitation d’Apple, du DOS 3.1 aux systémes du Mac, en passant par CP/M ou le Pascal UCSD, Tout dépendra de ce qu’Apple mettra dans sa commande Format. Testez déja les CDAs sous un vieux ProDOS 16 et sous GS/OS, vous m’en direz des nouvelles. Mieux encore, avec le source de Format, vous pouvez obtenir un autre CDA : l’Effaceur, qui vous sera utile si vous voulez supprimer rapidement le contenu de votre disque, sans attendre, sans avoir & le reformater, sans avoir a effacer un A un les fichiers, et sans avoir & charger un autre logiciel. C’est ce qu’on trouve de plus rapide quelle que soit la capacité du disque, puisque ce CDA se contente d’effacer les blocs servant & booter et de vider le répertoire et la Bitmap d’occupation des blocs. Pour modifier le source de Format afin d’obtenir celui de l’Effaceur, il suffit de remplacer l'appel & Format par un appel a l'une des derniéres commandes ProDOS décrites dans les Release Notes for System Disk 2.0 du 4 mars 1987, l’appel $25 (Erase Disk), quia exactement les mémes paraméires qué Format. Vous changez l’en-téte du CDA situé dans le segment Data, et il n’y a plus qu’a assembler. Sous APW Pour ne pas se casser la téte et automatiser un peu l’assemblage / linkage des CDAs, nous avons deux fichiers. Pour utiliser vos CDAs, il ne vous reste plus qu’a les mettre dans le sous-directory /System/Desk.Accs puis de relancer le systéme, ou encore de les charger a l’aide du NDA de Frédéric Rozay. Utilisation C’est simple comme un bon CDA. Installés dans le menu Desk Accessories (6-Ctrl-Esc), ces deux outils tiennent compte du mode vidéo 40 ou 80 colonnes, et des lecteurs ProDOS installés. Sous GS/OS par exemple, vous pouvez appeler le disque a traiter de multiples fagons : @ par son nom de volume s’il a déja 16 formaté (donc commengant par un /); Patrice Neveu @ pat ile nom du _ lecteur (.AppleDisk3.5A, OU .DEV3 par exemple) ; @ = parle nom abrégé du lecteur (. D2 par exemple). Ensuite, tapez le nouveau nom du volume. Si vous ne tapez rien, le disque sera nommé /Disque. Vide. Bibliographie ; n'oubliez jamais, amis programmeurs, de foulner dans les System Disk Release régulié- rement imprimées. Elles contiennent bien souvent les réponses a vos questions aussi bien aii niveaii des nouveaux appels qui vous font cruellement défaut, qu'au niveau des bugs connus des développeurs Apple. A signaler Au fait, puisqu’on en est a rectifier quelques erreurs, en voici deux qui m’ont fait tout dréle : @ Pom’s 35, page 29: sous APW, 1 280Ko de RAM (dont une partie en Ramdisk) et 1 080Ko d’espace disque (plus le Ramdisk) suffisent & programmer d'assez grosses appli- cations en assembleur (plus de 200Ko de source), quoi qu’en dise Apple. @ Pom’s 37, page 63 : pour ceux qui font de la programmation Multi- Langages, il existe un troisitme choix : APW (eh oui), avec lequel vous pouvez assembler vos segments séparément et les linker plus tard, avec ou sans bibliothéque. D’ailleurs un exemple de passage de paramétres entre un segment écrit en C et un autre en Assembleur est donné dans la documentation développeur. Pom’s n° 49 16 Erase.Edline JEDI III ISIGOIIUI III IIIT ISIS III IOI * Edbine v2.1 Patrice Neveu - Joliciel 90. * * * * Editeur de ligne aux fonctions reduites: * * * * Possibilite de coder l'affichage * *[Delete], Fleches gauche et droite, [Return],* * [Escape] * * Chaine de caracteres precedee par sa taille * * * * Appel: 1dx #Nbr_Car_Max Nombre de caract max* * Ilda #Buffer_Adr_@ Adresse 8 bits du buffer * % c= 1 code l'affichage par des X * jsr EdLine * * *bec Bonne Saisie c= 1 si eu esc pour sortir * * * * UO OE EOD OneR RHI Le 20/02/90 *hHKR EERE Edbine anop Buffer anop Kbdstb gequ $00C010 teeeeneoeee Seeeeeeeeeeeeeeseenneeeeeeseeet * Utilisation: % * * * Appeler ainsi: - * * * jsr EdLine D'affichage du debut de la chaine* * * Les Codes lus sont tous avec le bit 7 a1. La routine de lecture clavier 8 *l'annule. Ainsi, on a: Les ConTRoLes [00..1F)* *La ponctuation [20..2F] U (3A..3F] U [5B..60]* * * Les chiffres [30..39] * * Les majuscules [41..5A] * « Les minuscules [61..7D] U [40] * * . wee Le 18/03/89 =asemnnnant * Initialisation et attente d'une touche * + php Empile pour garder carry ldy #$FFFF sty Masque_AND stz Masque _ORA plp Recupere carry bee No_Code Sic=1 alors on doit proteger ldy #$58 Code de 'X' sty Masque_ORA Met un X a chaque caractere tape stz Masque_AND Efface le caractere No_Code anop stx Max_Length sta Buff Add_1+1 sta Buff Add_2+1 sta Buff Add_3+1 stz Char Ptr Position du curseur stz Line Length Nombre de caracteres tapes Get_Char lda >KBd d'une frappe au clavier bmi YATouche Attente Il y a eu touche *** Dans l'attente d'une touche, fait clignoter LO CUFSOUL. cee eeeeeeeeeccreceee Curseur_Norm da #'_' Affiche le curseur pha _WriteChar PushWord #8 Revient en arriere pour que le caractere _WriteChar Soit au meme endroit jsr WaitAMoment idy Char_Ptr Prend le caractere qui est en dessous iny shortm lda Buffer,y longm and Masque_AND ora Masque_ORA pha _WriteChar Affiche le caractere PushWord #8 Revient en arriere pour que le caractere _WriteChar Soit au meme endroit Buff_Add_1 jsxr WaitAMoment bee Get_Char a eu touche depuis stily YATouche lida >KBdstb _ReadChar derange les valeurs de Wnd... ton. * Quel type de touche est-ce ? * Key Pressed — longm and #$7F —- Filtre: bit 8 a zero sta Pressed_Key cmp #$1F En dessous, c'est un CTRL bee Control _Key omp #$7F L'unique cas, c'est [Delete] beq Control_Key *** Touche normale: affiche le caractere a ltecran, ajoute le dans le buffer... FEM cwanew nies see. puis retourne attendre lda Pressed_Key and Masque_AND ora Masque_ORA pha _WriteChar Affiche le caractere lda Pressed_Key Stocke Pom’s n° 49 le caractere dans la ligne ldy Char_Ptr iny ltoctet de longueur shortm stocke que le caractere Buff_Add_2 sta Buffer,y cpy Max_Length beq EOL longm ine Line_Length caractere a ete accepte, la Not_Larger ine Char_Ptr Go_Get_Char _ brl Get_Char Control _Key cmp _#$1B beq Escapade cmp #$0D beq EOL cmp #$08 beq Left_Arrow cmp #$15 beq Right_Arrow cmp #$7F beq Delete bne Go_Get_Char menu Escapade sec Signale qu rts * Fin de ligne signalee par un EOL lda Char_Ptr la fin de ligne shortm Buff_Add_3 sta Buffer longueur pour String longm cle La rts caractere Left_Arrow ldy Char_Ptr est deja en debut de chaine beq Go_Get_Char on ne peut aller au dela... dec Char_Ptr d'un caractere a gauche Deplace Curs da Pressed_Key le caractere en question pha _WriteChar le quand meme Saute Le ligne S'allonge *** Controle: agit de facon adapte@.....+eeeeee Escape ? Delete? Si ce ntest rien de tout cela, frappe * Escape, alors on ne sauve rien et on va au ‘on a fait escape retour chariot Signale Met la chaine est bonne * Fleche a gauche, pour revenir en arriere d'un Si on Alors Revient Prend Affiche bra Go_Get_Char Et retourne attendre une frappe * Fleche a droite, pour avancer d'un caractere Right_Arrow ldy Char_Ptr Si on est a la fin de la ligne, une cpy Line_Length Fleche a droite bippe bee Avance Sinon, elle avance dans la chaine _SysBeep bra Go_Get_Char Avance inc Char_Ptr Avance dans la chaine Ida #28 Forward Space sta Pressed_Key bra Deplace_Curs Va deplacer le curseur a droite * Pour l'instant, delete agit comme la fleche a gauche (n'efface rien) Delete Ida #8 Simule une fleche a gauche sta Pressed_Key bra Left_Arrow * Sous-Routines de l'editeur de ligne i ae WaitAMoment Entry sec Pas defaut phy Sauvegarde ¥ ldy #$C000 WAL lda >KBd Ilya eu une touche de frappee bmi Pas Attendre dey bne WAL cle Si on a bien attendu Pas_Attendre ply Recupere ¥ rts mateeemenernmnmeieeemenm rem midsole aes animes * Donnees utiles a l'editeur de ligne * fe eananeeaeasaesasessss5==: Pressed Key ds 2 Code de la touche Char_Ptr ds 2 Position du curseur dans la ligne Max_Length ds 2 Nombre maximum de caracteres Line_Length ds 2 Taille de la ligne Masque_AND ds 2 Masque pour coder ou non 1‘affichage Masque_ORA ds 2 Pom’s n° 49 17 | | Eraser.Macros MACRO lab pushlong éaddr, soffset &élab ANOP LCLC 6C LCLC 6REST &C AMID éaddr, 1,1 AIF "éC"="#", , immediate AIF "6C"="[", .zeropage AIF C:60ffset=0, .nooffset AIF "soffset"="s", .stack pushword éaddr+2, éof fset pushword éaddr, soffset MEXIT snooffset pushword &addr+2 pushword addr MEXIT -immediate ‘REST AMID addr, 2,L:6addr-1 de I1'$F4', 12" (6REST) |-16" de I1'$F4',12'6REST' | Mexrr | . stack pushword saddr+2,s pushword saddr+2,s MEXIT .zeropage | ldy #soffset+2 | pushword saddr, y ldy #6offset pushword saddr, y MEND MACRO lab pushword &SYSOPR lab ANOP AIF c:6SYSOPR=0, .b LCLC &C &C AMID "&SYSOPR", 1,1 AIF ("6C"="4#") AND. (S:LONGA), .imme diate ida &SYSOPR pha MEXIT -b pha MEXIT simmediate LCLC &REST LCLA &BL BL ASEARCH "&SYSOPR"," ", 1 AIF &BL>0, .a BL SETA L:&SYSOPR+1 +a REST AMID "SSYSOPR", 2, 6BL~2 de I1'$F4',12'6REST' MEND MACRO élab str éstring lab de il'l:éstring',c'sstring' MEND MACRO élab movelong &from, 6tol, 6to2 &lab ANOP LCLC &C LCLC GREST &C AMID &from,1,1 &REST AMID &from, 2, L:¢from-1 AIF "6C"="[", .zeropage AIF C:6to2=0,.a AIF ("etol"="s") or. ("Etol"="x") .o F. ("6tol"="y"), . indexed moveword &from, &tol, 6to2 AGO .b a moveword &from, 6tol -b AIF "6C"="#", immediate AIF C:6t02=0, .c moveword &fromt2, 6tol+2, 6to2+2 MEXIT e moveword &from+2, 6tol+2 MEXIT . immediate AIF C:6to2=0, .d moveword #°GREST, 6tol+2, 6to2+2 MEXIT a moveword #*6REST, 6tol+2 MEXIT - zeropage moveword &from, 6tol, 6to2 idy #étol+2 Ida &from,y sta 6to2+2 MEXIT - indexed da &from, 6tol sta @to2 Ida &from+2, stol sta 6to2+2 MEND MACRO &lab moveword &from, étol, 6to2 &lab ANOP LCLe &C &C AMID &from,1,1 ALF "6C"="(", .2eropage Ida &from sta étol AIF C:6t02=0,.a sta &to2 .a MEXIT -Zeropage AIF "6tol"="0", .b Idy #stol Ida &from,y sta &to2 MEXIT -b ida &from sta &to2 ‘MEND ‘MACRO lab longm &lab ANOP rep #%00100000 longa on MEND MACRO lab shortm &lab ANOP sep #800100000 longa off ‘MEND MACRO élab _FWEntry lab ldx #$2403 js1 $£10000 MEND MACRO élab _ReadBParam lab ldx #$0C03 jsl $£10000 ‘MEND MACRO &lab _SysBeep Slab ldx #$2C03 jsl $£10000 MEND MACRO &lab _GET DEV_NUM sparams élab js1 $£100A8 de 12"$20" de i4"sparams" MEND ‘MACRO élab _ERASE_DISK sparams lab jsl $E100A8 de 12"$25" de i4"éparams" MEND MACRO Slab _GET_VERSION sparams Slab Jsl $£100A8 de 12"$2a" de i4"éparams" MEND MACRO $lab _D_INFO sparams Slab js $£100A8 de i2"$2c" de i4"6params" MEND MACRO lab _ReadChar 6lab ldx #$220¢ js1 $£10000 jam MACRO lab _SetOutGlobals lab ldx #$0A0c js1 $£10000 ‘MEND MACRO élab _WriteChar flab ldx #$180C jsl $£10000 ‘MEND MACRO élab _WriteCstring lab ldx #§200C js1 $£10000 MEND MACRO Slab _Int2Dec élab ldx #$260B jsl $£10000 MEND ‘MACRO &lab _Int2Hex Slab ldx #2208 js1 $£10000 MEND 18 Pom’s n° 49 Erase.CDA FEIT RRR RARER RE * Effaceur v2.0 * * * (c) Patrice Neveu, le 14 mars 1990. . * * FOI IO ICICI SIS IIOIU SIUC IIOR IOI IOI oe keep Eraser mcopy Eraser.Macros * Bloc d'identification du CDA * Eraser_Info Start str 'Effacage' Nom du CDA de i4'Eraser Init’ Adresse d'ouverture du CDA de i4'Eraser ShutDown' Adresse de fermeture du CDA End * Point d'entree du CDA * sia ic ea ia eel cba aganioabaaucarea W Eraser Init Start using Eraser Data ZPage gequ $0000 KBD gequ $c000 KBDSTRB gequ $C010 phb Ne pas oublier de le depiler en sortant phk Data Bank = Program Bank plb Sans deranger la pile * Teste la version de ProDOS (8/16) . * Demande quelle version de ProDOS 16 est appellee * OS_Kind equ $E100BC lda >0S_Kind and #S00FF Ne garde que l'octet interessant bne Kind_OK PushLong #ProDOs_Err Write Err _Writecstring PushWord #0 Attend une frappe au clavier PushWord #0 _ReadChar pla brl Quitte Kind_OK _Get_Version GetVersion_Pm ida GetVersion_Pm and #$7FFF emp #$0101 si c'est inferieur, alors Eraser ne bes Good_vs pas dans ProDOs. Sera PushLong #Version_Err bra Write Err Good_Vs pha xba and #$00FF pha PushLong #Major_Vs PushWord #1 PushWord #0 _Int2Dec pla and #$00FF pha PushLong #Minor_Vs PushWord #1 PushWord #0 _Int2Dec lda GetVersion_Pm and #$8000 bne Prototype Ida #$20 Version finale --> espace bra Proto Prototype Ida #80 Version proto --> P Proto shortm sta Minor_Vs+1 longm * Affichage du cadre CDA * ae Open_CDA PushWord #0 Place pour le resultat PushWord #$19 Mode video de la Battery RAM _ReadBParam ida #$2800 plx beq Video4o ora #$0014 Video4o sta >$0020 PushWord #$FF And Mask PushWord #$80 Ora Mask _SetOutGlobals Pour GS/0S 5.0 PushLong #En_Tete _Writecstring PushLong #Bords _WritecString PushLong #En_Queue _Writecstring ldy #0 Des espaces pour blanchir les buffers Ida #$2020 Poms 49 19 Clear Path sta sta iny iny ey bee ida jsr idx Device Name, y Volume_Name, y fae Clear Path #$0302 Tab #16 Longueur maximale d'un volume Ida #Device_Name ele jsr Edbine bes Quitte Ida #$0801 jsr Tab PushLong #Ask_For_Volume _Writecstring Ida #$0402 jsr Tab Idx #16 lda #Volume_Name ele jsr Edbine . bes Quitte 1da Volume_Name _D_Info DInfo_Pm _Erase_Disk Eraser_Pm bee Quitte jsr Erreur * Quitte le CDA Quitte plb qu‘on a empile en entrant rtl * Sous-routines Erreur bee No_Err pha PushLong #ASCII_Code PushWord #4 _Int2Hex lda #§0602 MoveLong #Blank_Name,New_Name and #$00FF Ne garde que la taille beq NewName_Ok MoveLong #Volume_Name,New_Name NewName_Ok _Get_Dev_Num GetDevNum_Pm jsr Tab PushLong #£rreur_Msg _Writecstring PushLong #0 frappe au clavier _ReadChar pla Attente d'une Retour au No_Err rts fautif Tab sta >$0024 Ida #$FC22 pha pha pha pha pha pha pha pha _FwEntry pla pla pla pla rts * Copie ici l'editeur de ligne * Eraser_ShutDown Start rtl End * Donnees * Eraser_Data Data Device _Name ds 16 Commence par un '.' ou '/' Volume_Name ds 16 Nom donne par l'utilisateur Blank_Name str '/Disque.Vide' Nom par defaut GetDevNum_Pm anop de i4'Device_Name' | Parametres de GetDevNum DInfo_Pm anop I ds 2 to Eraser_Pm anop ! Parametres de DInfo de i4'Device Name’ ro New_Name dc i4'Blank_Name' | de iit ! Parametres de Eraser GetVersion Pm ds 2 Byte 0: Minor Release ! Byte 1: Major Release 20 Pom’s n° 49 al ! dont MSB= 1 for prototype releases CNORM equ 24 ¢ caracteres normaux CSOUR equ 27 ? souris NORM equ 14 ¢ normal INV equ 15 7 inverse FF equ 12 + equivalent de HOME Fs equ 28 F3 deplace d'un caractere a droite BARH equ 76 ; L ($4C= 76) barre en haut RC equ 77 7M ($4D= 77) retour chariot BARD equ 90 72 ($5A= 90) barre a droite BARG equ 95 ; ($5F= 95) barre a gauche En_Tete de il'FF,CNORM,NORM',c' ',38c'_',c' dc il ' INV, CSOUR, BARD, CNORM, NORM',c' Effacage v2.0 de il'INv’ de 10c' ' de e'ProDos v' Ma jor_Vs dec’ .! . Minor_Vs dect ¢ de i1'CSOUR', i1'BARG' de 11'BARD', 3811'BARH', 11'BARG' de h'00" bords de il ‘INV, CSOUR, BARD’, 3811'FS', i1'BARG' de il 'INV, CSOUR, BARD', 3811'FS', 11'BARG' de il ‘INV, CSOUR, BARD', 38i1'FS', 11'BARG' de i1' INV, CSOUR, BARD', 3811'FS', i1'BARG' dc 11 "INV, CSOUR, BARD', 3811'FS', i1'BARG' de h‘o0' En_Queue de il 'BARD,CNORM, NORM’ de c' Nom de Device ou de Volume puis de i1'INV,CSOUR, RC' de 4i1'FS',i1'BARG' dco i1'CNORM, NORM',c! +, 41 INV, CSOUR', 3811'BARH! de il'CNORM,NORM',h'00' Erreur_Msg de c'Errevr $' ASCII_Code ds 4 de h‘00" ProDOS_Err dc h'0C',c' Desole, il me faut ProDOS 16.',h'00' Version Err de h'0C',c' ProDOS 16 v1.1 ou apres.',h'00' Ask_For_Volume de c' Nouveau nom de Volume puis de il'INV,CSOUR, RC’ de il'CNORM,NORM',c! de h'00' End Erase.Récap Aprés avoir saisi ces codes sous moniteur, vous les sauvegarderez par : Create Erase,T$b9 Bsave Erase,A$2000,L2560,T$B9 Ce fichier est 4 mettre dans votre dossier : /Desk.aces 00/2000:05 00/2008:5F 00/2010:00 00/2018:00 00/2020:00 00/2028:2C 00/2030:20 00/2038:20 00/2040:F2 00/2048:66 00/2050:00 00/2058:AB 00/2060:b0 00/2068:A2 00/2070:00 00 00 00 00 00 20 20 SF 00/2080:22 00/2088:00 00/2090:C9 00/2098:F4 00/20A0:FF 00/20A8:03 00/20B0:0B 00/20B8:FF 00/20C0:03 00/20C8: 0B 00/20D0:03 00/20D8:00 00/20E0:8D 00/20E8:F4 00/20F0:00 00/20F8:09 00/2100:FF 00/2108:22 00/2110:3D 00/2118:E1 00/2120:0C 00/2128:00 00/2130:00 00/2188:03 00/219 IC 00/2198:00 00/21A' 1 00/21A8:Aa8 00/21Bi 19 26 00 Fa 26 29 80 92 19 El 14 00 00 03 4 20 Fa 00 AD Ag 00 20 00 00 ol 00 01 40 20 20 0s 63 FD BC Fa 20 Fa 00 00 AD 01 0s 48 01 22 48 Ol 22 00 03 03 00 Ag 00 4 00 A2 00 22 92 El FE 10 B2 18 08 34 £l 10 01 03 OE OE 8D 00 El ag 00 00 00 00 00 00 20 20 00 61 02 00 00 22 00 El El 3B BO 80 F4 00 00 Fa 00 00 80 Ag c2 A2 00 8F 80 £1 oc 00 00 04 AO 02 00 01 20 20 05 Ag 00 BO AQ 03 03 37 2B 2 00 00 00 00 00 00 20 20 20 00 67 00 El 00 00 00 68 2A 03 08 cB 00 Fa 00 00 Fa 00 po 50 20 03 28 20 00 Fa 20 F4 00 A2 00 99 90 A2 cp B2 A2 02 Ag 43 00 a2 8D 03 03 00 El 00 0A 00 00 00 20 20 20 08 65 00 29 Fa 00 A2 82 00 29. Fa 48 00 00 El 00 00 El 05 00 F4 oc FA 00 A2 00 22 BF El oc 00 OE F3 10 01 01 oc 04 OE Ag 00 Po) 35 22 00 2F 25 00 04 00 00 00 20 20 20 45 11 8B FF F9 £1 oc 40 3B FF 00 EB F4 00 68 Fa 00 AD Ag £2 00 22 FO 00 oc 00 00 03 Fa 20 Ag 03 Ag 00 BO Fa 20 20 03 1E 8D 00 03 Ag 00 03 00 00 01 00 00 00 20 20 66 00 4B 00 04 F4 ee ol 03 7F 00 29 OF 29 91 A2 3B 20 20 00 00 03 Fa 0A Fa 00 A2 00 22 20 ce 02 Ag 68 00 22 B2 18 03 37 FO Ag 22 00 31 Pom’s n° 49 PAL 22 00/21B8:03 00 00 90 03 20 7D 01 00/23C0:20 OF 20 20 20 20 20 20 00/25C8:02 00 46 00 3B 03 F5 02 00/21C0:AB 6B 90 32 48 F4 00 00 00/23C8:20 20 20 20 50 72 6F 44 00/25D0:F0 51 00 19 05 F5 02 00 00/21C8:F4 F4 04 F4 04 00 A2 0B 00/23D0:4F 53 20 76 20 2E 20 20 00/25D8:54 00 19 05 F5 02 FO SF 00/21D0:22 22 00 00 El A9 02 06 00/23D8:20 1B 5F 5A 4C 4C 4C 4C_ 00/25E0:00 8F 03 F5 02 00 62 00 00/21D8:20 BZ 01 F4 00 00 F4 EC 00/23E0:4C 4C 4¢ 4C 4C¢ 4C 4C 4C 00/25E8:8F 03 F5 02 FO 77 00 91 00/21E0:04 A2 OC 20 22 00 00 E1 00/23E8:4C 4C 4C 4C 4C 4C 4C 4C ©00/25F0:03 FS 02 00 7A 00 91 03 00/21E8:F4 00 00 F4 00 00 A2 0C 00/23F0:4C 4C 4C 4C 4C 4C 4C 4C ©00/25F8:F5 02 00 8A 00 3B 03 FS 00/21F0:22 22 00 00 El 68 60 8F 00/23F8:4C 4C 4C 4C 4C 4C 4C 4C —00/2600:02 00 9C 00 92 03 F5 02 00/21F8:24 00 00 A9 22 FC 48 48 00/2400:4C 4C SF 00 OF 1B 5A 1C 00/2608:FO C8 00 3D 03 F5 02 00 00/2200:48 48 48 48 48 48 A203 00/2408:1C 1¢ 1C 1¢ 1¢ 1C 1C 1C 00/2610:CB 00 3D 03 F5 02 FO DS 00/2208:24 22 00 00 El 68 68 68 00/2410:1C 1c IC IC IC 1C 1C 1C © 00/2618:00 BF 03 FS 02 00 DB 00 00/2210:68 60 08 AO FF FF 8C F9 00/2418:1C 1¢ 1C IC IC 1C IC 1c 00/2620: BF 03 F5 02 FO E2 00 92 00/2218:02 9C FB 02 28 90 09 AO 00/2420:1C 1¢ 1¢ 1¢ 1¢ 1 1¢ 1¢ ©=00/2628:04 F5 02 00 E5 00 92 04 00/2220:58 00 8C FB 02 9C F9 02 00/2428:1C 1¢ 1¢ 1¢ 1C 5F OF 1B 90/2630:F5 02 00 F5 00 FE 02 F5 00/2228:8E FS 02 8D 1A 02 8D 6C 00/2430:5A 1C 1¢ 1C 1¢ 1C 1C 1C =: 90/2638:02 00 FB 00 OE 03 FS 02 00/2230:02 8D Al 02 9C F3 02 9C 00/2438:1C IC 1¢ 1C 16 1C IC IC —00/2640:00 05 01 B2 01 FS 02 00 00/2238:F7 02 AF 00 CO 00 30 40 00/2440:1C 1¢ 1¢ IC 1¢ 1¢ 1C 1C 00/2648:0B 01 FE 02 F5 02 00 OF 00/2240:A9 5F 00 48 A2 0C 18 22 00/2448:1C 1¢ 1¢ 1¢ 1¢ 1¢ 1C 1C 00/2650:01 CD 01 F5 02 00 17 01 00/2248:00 00 E1 F4 08 00 A2 OC 00/2450:1C 1¢ 1¢ 1C IC IC 1C 5F 00/2658:B2 01 F5 02 FO 1A 01 34 00/2250:18 22 00 00 El 20 E0 02 00/2458:0F 1B SA 1C 1C 1¢ 1C 1¢ 00/2660:05 FS 02 00 1D 01 34 05 00/2258:AC F3 02 C8 E2 20 B9 CD 00/2460:1C 1¢ 1¢ IC 1C 1¢ 1C 1C 00/2668: FS 02 00 2A 01 B2 O1 FS 00/2260:01 C2 20 2D F9 02 0D FB 00/2468:1C 1¢ 1¢ 1¢ 1¢ 1C IC 1¢ 00/2670:02 00 30 01 OF 03 FS 02 00/2268:02 48 A2 0C 18 22 00 00 00/2470:1C 1¢ 1¢ 1¢ 1¢ 1¢ 1C 1C_ 00/2678:00 34 01 CD 01 FS 02 00 00/2270:E1 F4 08 00 A2 0C 18 22 00/2478:1C 1C IC 1¢C 1C. 1C IC 1C © 90/2680:39 01 1E 03 F5 02 00 3C 00/2278:00 00 El 20 £0 02 90 BA 00/2480:1C 5F OF 1B SA1C 1C 1C 00/2688:01 35 03 FS 02 FO 3F 01 00/2280:AF 10 CO 00 C2 20 29 7F = 00/2488:1C IC 10 16 1¢ 16 1C 1C 00/2690:1E 03 FS 02 00 42 01 37 00/2288:00 8D Fl 02 C9 1F 00 90 00/2490:1C 1¢ 1 1¢ 1C 1C 1C 1C_ 00/2698:03 F5 02 00 45 01 OE 03 00/2290:32 C9 7F 00 FO 2D AD Fl 90/2498:1C 1¢ 1¢ 1¢ 1C 1C 1C 1C © 00/26A0:FS 02 00 4D O01 OE 03 FS 00/2298:02 2D F9 02 OD FB 02 48 00/24A0:1C 1C 1¢ 16 1C 1C 1C IC 00/26A8:02 00 50 01 35 03 FS 02 00/22A0:A2 0C 18 22 00 00 El AD 00/24A8:1C 1C 1C SF OF 1B 5A 1C 00/26B0:FO 53 01 OE 03 F5 02 00 00/22A8:F1 02 AC F3 02 C8 E220 00/24B0:1C 1¢ 1C 1C 1C 1C 1C 1C 00/26B8:56 01 37 03 FS 04 00 SE 00/22B0:99 CD 01 CC F5 02 FO 28 00/24B8:1C 1¢ 1¢ 1C 1C 1C 1C 1C —00/26C0:01 2B 03 F5 04 00 68 01 00/22B8:C2 20 EEF? 02 EE F3 02 00/24C0:1C 1¢ IC 1C 1C 1¢ 1C IC 00/26C8:2F 03 F5 04 00 72 O1 31 00/22C0:82 77 FF C9 1B 00 FO 16 = 00/24C8:1C 1¢C 1¢ 1¢ 1¢ 1¢ 1C 1C_ §=00/26D0:03 F5 02 00 79 01 7D 01 00/22C8:C9 0D 00 FO 13. C9 08 00 = 90/24D0:1C 1¢ 1C 1C 1C SF 00 5A 00/26D8:F5 02 FO 81 01 F4 04 FS 00/22D0:FO 1A C9 15 00 FO 2A C9 00/24D8:18 OF 20 4E 6F 6D 20 64 00/26E0:02 00 84 01 F4 04 FS 02 00/22D8:7F 00 FO 41 DO E2 38 60 00/26E8:00 94 01 B2 01 F5 02 FO ID F3 02 E2 20 8D CD O01 00/26F0:97 01 EC 04 F5 02 00 9A 2 20 18 60 AC F3 02 FO 00/26F8:01 EC 04 F5 02 00 D2 O1 F CE F3 02 AD Fl 02 48 00/2700:F9 02 F5 02 00 D5 01 FB 2 OC 18 22 00 00 El 80 00/2708:02 F5 02 00 DE 01 FB 02 FAC F3 02 CCF? 02 90 00/2508:4C 4¢ 4 4C 4C 4C 4C 4C 00/2710:F5 02 00 E1 01 F9 02 F5 9 A2 03 2C 22 00 00 E1 00/2510:4C 4 4c 4C 4C 4C 40 4C_ 00/2718:02 00 £4 01 F5 02 F5 02 0 AE EE F3 02 A9 1C 00 00/2518:4C 4¢ 4C 4C 4c 4C 4C 4C 00/2720:00 E7 01 1A 02 F5 02 00 ID F1 02 80 D7 A¥ 08 00 00/2728:EA 01 6C 02 F5 02 00 ED 1D F1 02 80 C7 38 5A AO 00/2730:01 Al 02 F5 02 00 FO 01 0 CO AF 00 CO 00 30 04 00/2738:F3 02 F5 02 00 F3 01 F7 00/2330:88 DO F7 18 7A 60 00 00 00/2538:24 00 00 00 00 00 0C 20 00/2740:02 F5 02 00 11 02 EO 02 00/2338:00 00 00 00 00 00 00 00 00/2540:44 65 73 6F 6C 65 2C 20 00/2748:F5 02 00 14 02 F3 02 F5 00/2340:00 00 6B 00 00 00 00 00 00/2548:69 6C 20 6D 65 20 66 61 00/2750:02 00 1A 02 CD 01 F5 02 00/2348:00 00 00 00 00 00 00 00 00/2550:75 74 20 50 72 6F 44 4F 90/2758:00 1F 02 F9 02 F5 02 00 00/2350:00 00 00 00 00 00 00 00 00/2558:53 20 31 36 2E 00 0C 20 90/2760:22 02 FB 02 F5 02 00 37 00/2358:00 00 00 00 00 00 00 00 00/2560:50 72 6F 44 4F 53 20 31 00/2768:02 EO 02 F5 02 00 45 02 00/2360:00 00 00 OC 2F 44 69 73 00/2568:36 20 76 31 2E 31 20 6F 00/2770:F1 02 F5 02 00 52 02 Fl 00/2368:71 75 65 2E 56 69 64 65 00/2570:75 20 61 70 72 65 73 2E 90/2778:02 F5 02 00 55 02 F9 02 00/2370:FE 02 00 00 00 00 FE 02 00/2578:00 20 4E 6F 75 76 65 61 00/2780:F5 02 00 58 02 FB 02 F5 00/2378:00 00 1E 03 00 00 01 00 00/2580:75 20 6E 6F 6D 20 64 65 90/2788:02 00 63 02 Fl 02 F5 02 00/2380:00 00 0C 18 OF 20 5F 5F 00/2588:20 56 6F 6C 75 6D 65 20 00/2790:00 66 02 F3 02 FS 02 00 00/2388:5F 5F 5F 5F 5F 5F 5F 5F 00/2590:70 75 69 73 20 OF 18 4D 90/2798:6C 02 CD 01 F5 02 00 6F 00/2390:5F SF SF 5F SF SF 5F 5F 00/2598:18 OE 20 20 20 20 20 20 0/27A0:02 F5 02 F5 02 00 76 02 00/2398:5F 5F SF SF 5F SF 5F SF 00/25A0:20 20 20 00 F5 04 00 09 g0/27Aa:F7 02 F5 02 00 79 02 F3 00/23A0:5F 5F 5F SF 5F 5F 5F 5F 00/25A8:00 11 00 F5 04 00 0D 00 90/27B0:02 F5 02 00 9C 02 F3 02 00/23A8:5F 5F 5F 5F 20 OF 1B 5A 00/25B0:FD 02 F5 02 FO 1B 00 F9 00/27B8:F5 02 00 Al 02 CD 01 FS 00/23B0:18 OF 20 45 66 66 61 63 00/25B8:04 00/27C0:02 00 A8 02 F3 02 FS 02 00/23B8:61 67 65 20 76 32 2E 30 00/25 00/27C8:00 AD 02 F3 02 F5 02 00 Pom’s n° 49 00/27D0:BO 02 Fl 02 FS 00/27D8:02 F3 02 F5 02 00/275: 00/27F8:04 00 2B 03 FE 00/2800:00 31 03 FE 02 00/2808:35 03 1E 03 00 00/2810:00 00 00 00 00 00/281 00/2820:00 00 00 00 00 00/2828:00 00 00 00 00 00/2830:00 00 00 00 00 00/283 00/284 00/284 00/2880:00 00 00 00 00 BD 00/2888:00 00 00 02 00/2890:00 00 00 00/2898:00 00 00 00/28A0:00 00 00 00/28A8:00 00 00 04 00/28B0:00 00 00 00 00/28B8:00 00 00 00 00/28C0:00 00 00 00 00/28C8:00 00 00 00/28D0:00 00 00 00 00/28D8:00 00 00 00 00/28E0:00 00 00 00 00/2888:00 00 00 00/28F0:00 00 00 00/28F8:00 00 00 00/2900:00 00 00 00/2908:00 00 00 00/2910:00 00 00 00/2918:00 00 00 00/2920:00 00 00 00/2928:00 00 00 00/2930:00 00 00 00 00/2938:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00/2940:00 00 00 00 00 00 00 00 00/2948:00 00 00 00 00 00 00 00 ©00/2950:00 00 00 00 00 00 00 00 00/2958:00 00 00 00 00 00 00 00 © 00/2960:00 00 00 0c 00 00 00 00 00/2968:00 00 00 00 00 00 00 00 ©90/2970:00 00 00 00 00 00 00 00 00/2978:00 00 00 00 00 00 00 00 ©00/2980:00 00 00 00 00 00 00 00 00/2988:00 90 00 00 00 00 00 00 00/2990:00 00 00 00 00 00 00 00 00/2998:00 00 00 00 00 00 00 00 00/29A0:00 00 00 00 00 00 00 00 00/29A8:00 00 00 00 00 00 00 00 00/29B0:00 00 00 00 00 00 00 00 00/29B8:00 00 00 00 00 00 00 00 00/29C0:00 00 00 00 00 00 00 00 00/29C8:00 00 00 00 00 00 00 00 00/29D0:00 00 00 00 00 00 00 00 00/29D8:00 00 00 00 00 00 00 00 00/29E0:00 00 00 00 00 00 00 00 00/29E8:00 00 00 00 00 00 00 00 00/29F0:00 00 00 00 00 00/29F8:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Format Les sources de Format.CDA étant quasiment iden- tiques aux sources d’Erase.CDA, nous avons préféré ne pas les publier pour consacrer nos colonnes a d’au- tres programmes ou articles. Vous trouverez donc les fichiers, ressource.S, Edline et Format.CDA ainsi que l’objet exécutable dans le sous-catalogue /Format de la dis- quette Pom’s 49. Les fichiers corres- pondants pour Erase seront, eux, placés dans le sous-catalogue /Erase. CG Frappe au kilometre, rapidité d'écriture, souplesse de correction. Ooriboullle Traitement de texte francais Pour Apple //e, Apple //c, Apple GS. Glossaire puissant, recherche - remplacement. Creation de caractéres téléchargeables sur Image Writer Impression rapide, pilotage précis de mise en page. Coupure correcte des mots, justification en proportionnel, condensé et expansé, (notation mathématique, alphabets étrangers etc...) Gribouille, une valeur sdre pour un public averti. Pour recevoir Gribouille, envoyez ce bon de commande a: Humblot Gribouille SARL. 5, Tue HUNG 77 75015 PARIS - Tel: (1) 4 Je vous prie de m'envoyer a l'adresse ci-dessous: Nomi... le logiciel Gribouille * version GS Ci-joint un cheque de.. Prix (port compris) * version //e - //c pour lecteur de disquettes 5 1/4 S99 frH.T. 710 fr T.T.C. * version //e - //c pour lecteur de disquettes 3 1/2 632 frH.1. 750{r T.T.C. 835 fr H.T, 990 fr T.T.C. ...francs libellé a l'ordre de GRIBOUILLE SARL Pom’s n° 49 2 24 SuperFonts : Jean Ollion les polices Font.Codes.1 est destiné aux utilisateurs du tandem-logiciel AppleWorks et TO.SuperFonts perdus dans le dédale des codes & insérer au texte pour obtenir un caractére qui sort un tant soit peu de Vordinaire. Font.Codes.1 est un fichier texte AppleWorks qui, imprimé avec TO. SuperFonts, permet de voir les caractéres d’une police donnée en référence sous la forme d’un tableau, oii chaque caractére est présenté associé a son code ASCII, décimal, hexa- décimal, et au caractére a utiliser dans AppleWorks, en l’associant aux commandes <x2> ou <x3> de TO.SuperFonts, pour pouvoir impri- mer le caractére de référence. Il est intéressant de se “personnaliser” quelques polices en les complétant, au- dessus du code 128, par des caractéres, symboles, logos ou icénes, dont on a souvent besoin. Cela permet d’avoir moins de polices 4 charger. Mais le nombre de ces caractéres nouveaux augmentant, les moyens mnémo- techniques pour se les remémorer diminuent. Imprimer Font.Codes.1 avec ces quelques fontes vous permettra d’avoir les équivalences clavier completes sous les yeux. Comment s’en servir ? Une fois imprimé ce tableau (sur la disquette n° 49), on repére facilement Vic6ne “Gertrude” et l’on voit que pour I’imprimer il faudra insérer dans le texte la séquence <x3>g<x1>. D’autre part, lorsqu’on veut compléter une police avec un éditeur, pour la franciser par exemple, il est trés facile de repérer & la place de quel code il faut placer tel caractére accentué. Exemple : pour éditer un “é”, on trouvera tout de suite que c’est a la place du caractére dont le code décimal est “142” qu’il faut copier le “e” pour le compléter. Faute de quoi, un Trai- tement de textes doué de la capacité de franciser, comme TO.SuperFonts, risque de ne pas s’y retrouver. Le tableau Sous chaque caractére, on trouvera : @ = lere ligne, le code ASCII dé- cimal ; @ 28 me ligne, le code ASCII hexa- décimal ; @ = 3eme ligne, le caractére a utiliser avec AppleWorks. Note : sur cette troisiéme ligne, certains caractéres sont suivis d'une barre de division et d'un ou deux autres caractéres, signifiant que l'on pourra utiliser, soit le caractére situé a gauche du / en l'associant aux commandes <x2> ou <x3>, soit le caractére situé a droite, en l'associant a la commande de “francisation" <td> de TO.SuperF onts. Comment procéder ? @ = Inscrire tout en haut du fichier Font.Codes.1, en police nu- méro 1, la police utilisée pour les codes (dans l’exemple : SHASTON, FIX.08). Note : n'utilisez pas une police trop large (maximum 12 points). Une po- lice non proportionnelle, dont la largeur des caractéres est constante, donnera une meilleure présentation. @ = Inscrire en police numéro 2 la police de référence (dans |’exem- ple : VENICE.28). Note : il est recommandé de ne pas dépasser une largeur maximum de 37 points. Toutefois lorsqu’un caractére dépasse cette limite, il sera imprimé, mais le suivant lui “marchera dessus” ; cependant, cela ne géne pas forcément la lisibilité du tableau. En revanche, si ce caractére trop large se trouve en bout de ligne, il sera imprimé “a la ligne” et la mise en page du tableau sera détruite. Dans la police BASEL.48, par exemple, si le “O” n’avait fait que 37 points de large au licu de 40, il serait resté & sa place, au lieu de passer a la ligne. Les autres sont correctement imprimés, méme étant plus larges (le “M” fait 49 points). @ = Inscrire éventuellement le titre de la fonte de référence, La mise en page est libre dans le sens de la hauteur, c’est--dire quelle est a orga- niser en fonction des désirs, de la longueur des pages et de la hautcur des polices, Mais il ne faut rien changer dans le sens de la largeur, a savoir la largeur du chariot (= 8) et les marges gauches et droites (= 0). D’aucuns remarqueront dans le texte (passionnant) quelques répétitions ou espaces inutiles. Ils permettent seulement de ne pas couper en fin de ligne une commande de tabulation de To.SuperFonts, ce qui en général donne de mauvais résultats. Pour finir, un truc Pour faire tenir l’ensemble d’un tableau sur une page 21 x 29,7, uti- liser une police de référence taille 24 et une police de code taille 7. Exemple : TIMES.24 et COURIER.7 en demandant la qualité supérieure a lV’'impression, avec COURIER.14 “en ligne”. Remarque : Etant donnée la longueur des tableaux, nous n' avons pas pu les publier en exemple. Vous les trouverez donc sur la disquette d’accompagnement de la revue n° 49 sous les noms /FONT.CODES.1 et /FONT. CODES.2. Pom’s n° 49 Budget facile 3.0 Ee Dimitri Geystor Voici aujourd’hui un programme, Budget Facile, qui pourrait grandement simplifier la vie aux personnes qui n’adorent pas consacrer le dimanche aux comptes familiaux. Et, pour tirer pleinement parti des nouvelles qualités d’AppleWorks 3.0, un “micro-programme” destiné au traitement de texte et un TimeOut, To.Debug, offrent un complément naturel a UltraMacros 3. Les ensembles de macros correspondants pour AppleWorks 1.4 sont déja parus dans des numéros précédents de Pom’s, et vous pourrez vous y reporter si la comparaison vous intéresse. Les macros que Pom’s vous propose aujourd’hui tirent parti des nouvelles commandes des versions 3, elles ne sont donc plus compatibles avec AppleWorks 1.4. Budget.Facile C’est une version entiérement revue. Elle tire largement parti des nouvelles possibilités d’ AppleWorks 3.0, en particulier pour ce qui est des menus et de la facilité d'emploi. Etant donné l’importance de cette application, les fichiers qui la composent sont rassemblés dans le dossier BUDGET. Le programme est géré automatiquement par deux fichiers Task, supGerT et BuD.8rs. Recopiez-les sur votre disque de démarrage AppleWorks, celui qui contient le fichier ULTRA, system. Recopiez sur votre disque de données —celui ot AppleWorks lit/sauve habituellement ses fichiers— les fichiers MENU, MODELE, LIVRE, LISTE et survr. En cing minutes, c'est fait, et Budget.Facile est prét & fonctionner. Il peut tre lancé depuis AppleWorks en passant par |’option Macros Options du menu TimeOut, ou directement a partir d’un sélecteur. Le programme charge de lui-méme tous les fichiers dont il a besoin, et en assure automatiquement la sauvegarde une fois que vous avez fini d’y travailler. Budget.Facile justifie pleinement son nom : cing autres minutes pour lire le début de la documentation (incluse sur la disquette), et vous étes paré pour commencer & travailler. Les opérations sont pilotées par deux menus, et sur chaque écran apparait un message pour indiquer les gestes 4 faire. Budget.Facile permet de gérer 6 comptes (banques, cartes de crédit, especes), 7 catégories de revenus et 23 catégories de dépenses. Des noms de catégories directement utilisables sont proposés par défaut sur le fichier MopzLe, mais vous pouvez facilement attribuer d’autres noms qui conviendraient micux & vos besoins, une petite macro utilitaire est 14 pour vous aider. L’écran de travail od vous faites la saisie des opérations contient dans sa partie supérieure une fenétre od s’affichent en permanence les 36 soldes courants de vos comptes dépenses et revenus, plus le total des avoirs et le revenu net. C’est la principale originalité de Budget.Facile : vous pouvez en quelque sorte surveiller l’évolution de vos finances en “temps réel”, Le fichier de travail est un fichier mensuel, et il vous donne la “photographie” de vos dépenses et de vos revenus du mois courant ; étant donné que le report des avoirs se fait automatiquement d'un mois sur l'autre, les soldes des comptes affichés sont constamment tenus & jour. Pour que la “photographie” soit fidéle, Budget.Facile sait non seulement transcrire des opérations simples, mais aussi ventiler une opération entre divers postes. Avez-vous payé dans une grande surface —avec un seul chéque-|’achat d'un manteau, d'un disque et de vos courses alimentaires ? Qu’a cela ne tienne : en une seule opération Budget.Facile débitera globalement votre compte en banque, mais répartira les dépenses entre les postes Vétements, Loisirs et Aliments. I suffit de pointer et cliquer avec la souris sur les catégories en question, il est inutile de retaper chaque nom de catégorie. Dans le nouveau Budget.Facile, la saisie des montants ventilés est encore plus souple que dans la version précédente : pour terminer la saisie, il est inutile de calculer le dernier montant particl ; on se contente de valider le Reste qui est affiché a l'écran. Dans l’exemple précédent, on tapera le montant du chéque, le montant du manteau et le montant du disque ; Budget.Facile attribuera automatiquement le reste au poste Aliments. A tout moment, un message guide I’utilisateur. Les commandes sont ultra-simples et consistent & taper sur la touche suggérée : Return pour commencer la saisie, K pour recalculer, P pour imprimer, S pour sauver, Esc pour revenir au Menu. Souhaitez-vous consulter ou supprimer des écritures ? La liste des écritures du mois courant est immédiatement accessible & partir du Menu. On peut la consulter en y promenant la souris, imprimer un écran ou toute la liste, éventuellement supprimer des lignes d’écriture et sauvegarder le fichier. Le passage du mois courant 4 un nouveau mois est automa- tisé : Budget.Facile se charge du report de soldes des comptes. Si vous le lui demandez, il fera aussi A votre place le report des écritures du mois dans une Base de données générale LIvRE, et dans un tableau annuel suzvz. Ce tableau annuel calcule automatiquement les valeurs moyennes et les valeurs cumulées de chaque catégorie. Une colonne voisine est réservée (@ cété des moyennes) pour vos estimations budgétaires, Le tableau est imprimable sur double page, c’est une nouveauté AppleWorks 3.0. Pom’s n° 49 25 26 La Base générale LIVRE sert & faire des pointages. Il existe aussi une Base de données “de travail”, oh vous pouvez copier totalité ou partie des écritures d’un mois. Le tout est géré sans souci et automatiquement. Entre autres choses, Budget.Facile offre de grandes facilités d’impression. I] suffit d’appuyer sur quelques touches —clairement indiquées sur des menus successifs~ pour imprimer les données de LIVRE et Liste 4 1’écran ou sur papier. Vous avez le choix entre une liste générale, ou des sélections par catégories : c'est Budget.Facile qui fait le travail, et vous n’avez besoin de recourir 4 aucune commande d’ AppleWorks. Les utilisateurs de I’ancienne version de Budget.Facile seront agréablement surpris par les innovations de la version AW.3. En particulier, le nouveau format du fichier MopELE permet des reports plus rapides (ne plus utiliser les fichiers de I’ancien BUDGET, bien entendu !), et le Presse-papiers d’AppleWorks 3.0 n’est plus limité 4 250 lignes. Budget-Facile dans votre Apple //, c’est l’assurance, au prix de quelques minutes d’attention quotidienne, d’avoir toujours des finances claires et & jour... Un nouveau jeu de macros pour Traitement de Texte Comme promis, voici les macro-commandes pour Traitement de Texte, revues et adaptées pour le nouvel AppleWorks 3.0. La disquette Pom’s contient 3 fichiers : =+ le fichier source Macros. ro1T3, format TdT AppleWorks ; =+ le fichier Task rpr3, ce sont les mémes macros sous forme compilée, et prétes a lancer ; =+ une application TimeOut ro. Arpe. ror. aw3, & copier dans le dossier des applications TimeOut pour pouvoir la consulter —quand les macros sont actives— en tapant Option-?. TO.Debug version francaise TO.Debug est indispensable pour vous faciliter la vie lors de l’écriture de macro-programmes. Elle donne a tout moment les indications suivantes : Fiche signalétique Voir variables numériques Voir variables chaines Voir noms des macros actuelles Ftant donné que le nouvel UltraMacros permet de disposer de huit jeux distincts de variables que vous stockez ou appelez avec les instructions <putvar NUM> et <getvar NUM>, le nouveau Debug indique aussi le numéro du jeu de variables actif. AppleWorks : Randy Brandt, Dimitri Geystor Les lecteurs de Pom’s connaissent bien Randy Brandt. Créateur de SuperMacroWorks et d’UltraMacros, il est aussi l’un des co-auteurs du nouvel AppleWorks 3.0. Dans le numéro de juin 90 d’AppleWorks Forum, Randy publiait un premier article dans lequel il décrivait les mécanismes de démarrage d’AppleWorks 3.0, A la demande de ses lecteurs, Pom’s en propose ici une adaptation frangaise. Nagutre, pour écrire ses macro-langages, il avait fallu que Randy désassemble et décrypte par lui-méme le code d’AppleWorks, qui était un secret jalousement gardé, Ce tour de force n'est pas a Ja portée du premier venu. D'autres pourtant ont fait comme lui, en particulier Daniel Lurot, auteur de la version francisée d’ AppleWorks 3.0, auquel les lecteurs de Pom’s doivent toutes les versions frangaises de ces compléments intégrés 4 AppleWorks que sont les logiciels de la série TimeOut. Ainsi, petit & petit, le voile s’est levé sur la face cachée d’AppleWorks. La maison Claris a désormais mis dans le domaine public des “Notes techniques sur AppleWorks” qui énumérent les adresses d’accés aux diverses routines internes d’AppleWorks 3.0 ainsi qu'une note qui décrit la structure sur disque des fichiers AppleWorks. Ceux que ces notes intéressent peuvent les commander auprés d'AppleWorks Forum, l'association américaine des utilisateurs d’AppleWorks pour le prix modique de 12 $ US (voir Vencadré, page 17 du n° 48 de Pom’s). Sur la disquette n° 49 Dans le dossier /AppleWorks, vous trouverez : 2+ BUDGET. FACILE, version AW 3.0; =* Un fichier de macros format TdT AW 3.0: MACROS, TDT3, accompagné du fichier Task TDT3, qui sont les mémes macros sous formes compilée ; =+ Le TimeOut T0.AIDE.TDT.AW3 ; = TO.DEBUG AW 3.0, Pom’s n° 49 Le chargement Le démarrage Ily atrois fagons différentes de démarrer AppleWorks : lancer la disquette “Startup” d’ AppleWorks ; ~ utiliser un “sélecteur” (c’est-A-dire un logiciel lanceur de programmes plus ou moins sophistiqué) ; taper la commande voulue a partir du Basic Applesoft. Mais quelle que soit votre méthode, AppleWorks suivra toujours la méme procédure pour activer le programme. Le présent article décrit ce qui se passe entre le moment ot vous donnez l’ordre de démarrage, et celui ob Apple- Works, apres s’étre chargé en mémoire, affiche son premier menu al’écran, ProDOS 8 est le systtme d’exploitation de votre Apple en mode 8 bits. Lorsque vous démarrez a partir d’une disquette qui contient ProDOS, celui-ci se charge d’abord lui-méme en mémoire (c’est le fameux “boot”, raccourci de “to lift oneself by one’s boot-straps”, littéralement “se soulever du sol en tirant sur ses lacets de chaussure”), puis ProDOS re- cherche le premier fichier du catalogue dont le nom se termine par . sys T=, et le démarre A son tour. Dans le cas d’une disquette AppleWorks non modifiée, ce fichier se nomme Aplworks.System. Quand vous ajoutez UltraMacros a votre AppleWorks, celui- ci débaptise Aplworks.System eM Aplworks.Sys, et installe un nouveau fichier nommé viTRA.sysTEM ; c'est donc ce dernier que ProDOS fera démarrer en priorité, et Ultra.System a son tour démarrera Aplworks.Sys. Si vous démarrez a partir d’un sélecteur de programmes ou avec une commande Applesoft, cela signifie que : ® ProDOS est déja installé en mémoire ; @ c’est vous qui décidez quel fichier sera lancé ; par exemple, vous pourrez soit lancer Aplworks .Sys —ce qui aura pour effet de démarrer un AppleWorks normal— soit lancer vitra.system (qui démarrera UltraMacros, puis AppleWorks). Des utilitaires de démarrage complexes comme ProSel vous permettent de lancer en chapelet plusieurs programmes différents : par exemple configurer d’abord un RAM disque avant de lancer AppleWorks. Le fichier aplworks.System contient le code de démarrage d’ AppleWorks, mais aussi une bonne partie des principales instructions internes de controle d’AppleWorks, y compris les routines liées au clavier et & l’affichage écran utilisées par les divers modules du programme. En effet, AppleWorks est un programme d’une telle ampleur qu'il est hors de question de le faire tenir en entier dans la mémoire d’une machine de 128Ko. Il recourt donc a la technique des “overlays”, c’est-4-dire qu’il charge a tour de role —et selon les besoins— telle ou telle partie du programme principal. Ces fractions de programme sont appelées “segments” ; AppleWorks en compte plus de trente. C’est la partie d’ AppleWorks surnommée “Host” (le Maitre des lieux) qui se charge de gérer le va-et-vient des divers segments. Mais n’anticipons pas trop, et revenons au démarrage. La premiére des taches d’aplworks «System est de s’assurer que votre Apple dispose d’au moins 128Ko. Ceci fait, il s’installe lui-méme en mémoire de telle sorte que élément de programme appelé “Host” soit présent en permanence pour gérer AppleWorks. Puis, AppleWorks organise son environnement de travail : tout d’abord, il déconnecte /ram (vous savez, ce petit disque virtuel que crée ProDOS, et qui utilise la deuxitme banque de 64Ko présente sur tous les Apple de 128Ko). En effet, Apple- Works a besoin de cet espace mémoire pour y entreposer les informations relatives aux fichiers du Bureau. Autant déconnecter /RaM tout de suite, pour que personne ne soit tenté d’y mettre autre chose. Ceci fait, AppleWorks met a I’abri le nom d’accés utilisé lors du démarrage d’apiworks.system. AppleWorks utilisera ce nom d’accés chaque fois qu’il ira chercher d'autres fichiers AppleWorks, quel que soit le préfixe en vigueur lors du lancement du programme. Par exemple, si vous choisissez le préfixe /our mais que vous lanciez AppleWorks avec la commande en Basic Applesoft »—/DUR/AW/Aplworks.System”, AppleWorks ira quand méme chercher ses fichiers dans /pur/AW. Les gestionnaires de mémoire Il y ena quatre sur la disquette, et AppleWorks choisit celui qui convient A votre machine. Le gestionnaire de mémoire a pour réle de mémoriser et de rappeler au moment opportun les informations relatives au Bureau. Grace a ces quatre gestionnaires différents, AppleWorks sait utiliser au mieux les diverses configurations de mémoire pouvant exister dans différents systémes Apple //. Pom’s n° 49 27 28 Voici comment AppleWorks choisit le gestionnaire approprié : @® le programme vérifie tout d’abord s’il est en présence d’un Apple IIGS. Dans 1’affirmative, il charge le segment SEG. RM. Sinon, il passe a |’étape suivante ; @ maintenant qu’AppleWorks est sfir qu’il n’a pas affaire a un IGS, il vérifie si votre Apple est équipé d’une carte de mémoire auxiliaire du type RamWorks, Z-RAM ou MultiRam. Si AppleWorks repére une carte dotée d’au moins deux fois 64Ko, le programme charge szc.am. Sinon, il passe a la suite ; ® Acette étape, AppleWorks vérifie si votre Apple est équipé d’une carte de mémoire périphérique (dite “slinky”) du type RamFactor, RamExpress ou carte mé- moire Apple. S’il trouve une telle carte, AppleWorks charge SEG.XM et crée un fichier disque virtuel a utiliser pour l’espace mémoire du Bureau. Note : la carte mémoire auxiliaire est prioritaire par rapport Qune carte “slinky” ; de la sorte, si votre Apple est doté de l'un et de l'autre type de carte, il vous est loisible d' utiliser la carte périphérique comme RAM-disque, tandis qu' Apple- Works utilise la carte auxiliaire pour son espace Bureau. Si AppleWorks ne décéle pas de carte périphérique, il passe 4 l’étape suivante : ® dans cette 4°™® et demitre hypoth’se, vous n’avez pas de IIGS, pas de carte auxiliaire ni périphérique... Bref, vous étes propriétaire d’un //e ou //c “minimum” de 128Ko. AppleWorks charge donc sec.00. Vous ne disposerez, une fois le programme et ses fichiers en place, que de 40 maigres Kilo-octets pour le Bureau. A ce stade, AppleWorks demande au gestionnaire de mé- moire de répartir et d’attribuer la mémoire disponible, puis de calculer l’espace Bureau. Il est & noter qu’AppleWorks n’utilise & chaque fois qu’un seul gestionnaire de mémoire ; si vous connaissez celui dont votre machine a besoin, vous pouvez enlever les autres de votre disque de travail, si cela vous arrange. L’environnement de travail L’étape suivante est le chargement du fichier sec. 21. Ce fichier contient les fonctions arithmétiques élémentaires SANE (Standard Apple Numerics Environment). Le gestionnaire de mémoire copie le sec. £1 dans la zone de mémoire de la carte langage, ow il fournira les routines mathématiques qu’utiliseront les modules Tableur et Base de données. Ceci fait, AppleWorks passe en revue les “slots” de votre Apple //, afin d’identifier ceux attribués aux lecteurs et a Vimprimante. Il enregistre cette information pour en disposer par la suite. Puis, AppleWorks charge le sec.er. C’est le fichier ot sont regroupées les informations relatives aux divers réglages que vous définissez au moyen du menu Valeurs Standard. Ce fichier se souvient de la configuration de dé- marrage de votre choix, des options du vérificateur d’orthographe, des formats date/heure, de la désignation du disque de données standard, et des drivers d’imprimante. Note : bien que les drivers d'imprimante eux-mémes soient contenus dans le fichier sec.pR, AppleWorks ne |’ appelle qu'une seule fois, quand vous changez les valeurs standard. Une fois qu' AppleWorks est configuré, il n'a plus besoin que de SEG.ER et vous pouvez enlever SEG.PR du disque de travail. Aprés avoir chargé sec.er en mémoire, AppleWorks s’adresse a ProDOS pour demander si vous avez une horloge. Si oui, AppleWorks reléve la date dans l’horloge ; sinon, le programme vous demande de taper la date. AppleWorks enregistre la date dans le fichier sec. £R. Préchargement Il est temps de charger en mémoire les modules que vous avez spécifiés. AppleWorks vérifie si la mémoire est suffisante, puis charge les modules spécifiés dans l’espace Bureau oi il pourra les retrouver rapidement. C’est l’élément “Host” (chargé dés le début avec Aplworks. System) qui s’occupe d’appeler selon les besoins les multiples segments (plus de 30) qui composent AppleWorks. Chaque fois qu’AppleWorks a besoin d’un segment, le “Host” vérifie si celui-ci est déja sur le Bureau. Sil y est, le “Host” le charge instantanément. Si le segment n’est pas déja en mémoire, le “Host” le charge a partir du disque. C’est pourquoi, durant la méme opération, le disque peut tourner une premiére fois, mais pas la fois suivante, En effet, quand un segment est chargé a partir du disque, le “Host” essaye de le conserver en mé- moire en vue d’un éventuel appel ultérieur du méme segment. Si AppleWorks n’arrive pas a trouver le segment voulu sur disque, il vous en informe en demandant de placer le disque approprié dans le lecteur. A ce stade, les choses sont en place, les segments nécessaires ont été chargés et l’environnement de travail est défini. AppleWorks va donc appeler le segment Organiseur qui affichera le Menu principal. Randy Brandt nous promet un prochain article oi il décrira le rdle de l’Organiseur. Pom’s n° 49 Bibliographie Marcelle Godefroid, Christian Piard Macintosh Toolbox, Programmation en C, de Frédéric A, Huxham, David Burnard, Jim Takatsuka. Editions Sybex, 520 pages, 328 F. Il est rare que nous soyons aussi séduits par un livre mais 1a, nous avons une bible. Sybex nous a toujours proposé des livres de qualité et celui-ci fait partie de la série des parfaits. Ce n’est pas “Inside Macintosh” car c’est transportable, c’est en frangais et c’est didactique. Ce livre est destiné au programmeur en C qui se met au Macintosh ; on commence par les régles de base de l’interface Macintosh pour arriver & une application compléte en fin d’ouvrage. L’ensemble est réellement progressif, commengant bien entendu par la gestion des événements, masquage, priorité, etc. Puis sont passés en revue les gestionnaires de fenétres, de menus, le dessin avec QuickDraw, le gestionnaire de mémoire, les problémes de multi-fenétrage, TextEdit, les ressources, les contréles, les dialogues, la gestion de disque. On y ajoute l’art et la manitre de faire une véritable application avec les problémes liés au passage des événements aux accessoires de bureau. Ce n’est pas tout a fait un roman mais, on n’abandonne pas la lecture en cours de route, on est impatient de poursuivre. Test réellement accessible au débutant en C qui refermera ce livre avec

Showing the first 100000 of 275524 characters.

mp.ls