Skip to main content

poms03

  • PublicationApple Periodicals
  • Pages68
  • Sourcepoms03.pdf
← Magazines poms03
/ 68
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
ISSN : 0294-6068 poms Sommaire Editorial 3 Apprentissage de |’assembleur (I) Jean-Louis Meillaud 5 Contrélez le nettoyage-mémoire Guy Mathieu 17 Un exemple de HELLO Guy Mathieu 19 Analyse du directory Pascal (I!) Michel Crimont 21 Notions de base Gérard Michel 32 Conversion Pascal/BASIC/Pascal Gilles Mauffrey 35 Communication grace a |’APPLE Bruno Estrangin 44 Copie d’écran-texte Christian Guérin 51 Routine de présentation graphique Jean-Francois Duvivier 53 Les fichiers EXEC Bruno Rives 55 Personnalisez vos disquettes Pierre Boutreux 61 Les clubs ont la parole 63 Courrier des lecteurs 64 Numéro 3 - Mars 1982 - 35 Francs eN tre Dame Je-Lorette - 75009 PARIS 82.19.80 290350 F eterect ioe eee Ordinateur Apple // 128 K Disque dur 5 M.O. profile en option, moniteur $.O.S. + basic + 1 soft au choix! Apple ll + 48 K + floppy + contréleur + moniteur 12° 13.800 Tensemble Apple M7 sons profile: 28.000.« Honsemble Ref prcissee: Un véritable service avant et aprés-vente. e 44 conseils du spécialiste e Dépannages rapides par e Une garantie 1 an piéces pour le matériel et le notre service aprés-vente et M.O. sur tous les logiciel. intégré. produits. Des micro-prix sur tous les micros. A“ Extrait de notre tarif. Prix TTC. MATERIELS LOGICIELS APPLE II APPLE Il 4 APPLE Ill JAPPLE Il + 48K 8950,00 F | CARTE IEEE 488 2895,00 F |DOS TOOLKIT 540,00 F | VISICALC Hil 1700,00F DISK il + CONTROLEUR DOS 3.3 4720,00 F | TABLETTE GRAPHIQUE 6000,00 F | APPLE PILOT 1180,00 F ] APPLE WRITER ill 1500,00 F DISK 1! SANS esl yea 3375,00 F | CARTE PROTOTYPE 145,00F | VISICALC 16 SECT 1620,00 F | ACCESS ill 1000,00 F ISILDISK 8° 2 X 256K 19150,00 F | CARTE TIMER CCS. 1150,00 F | VISITREND + vSrtOT 2170,00 F | SCRIPT lit 850,00 F | MODULATEUR N/B EN KIT. 150,00 F | CARTE 80 COL. BIT3 FULL VIEW -2750,00 F | DESKTOP PLAN Il 1620,00 F | PASCAL Il 1700,00 F |CARTE COULEUR SECAM 1050,00 F | CARTE 80 COL. SUPER TERM 2950,00 F | CCA DATA MANAGEMENT 1010,00 F | BUSINESS BASIC 850,00 F [CARTE COULEUR RVB SONOTEC 920,00 F | CARTE DE COMMUNICATION 1350,00 F | VISIDEX. 1620,00 F |-MAIL LIST MANAGER 1000,00 F CARTE COULEUR RVB ‘SILENTYPE Ih 2800,00 F | VISIPLOT 1500,00 F | COMPTABILITE PL/DISQUE DUR 4700,00 F |CHAT MAUVE 140000 F | APPLE Ill 128K + SOS. 26000,00 F | VISITERM. 1260,00 F | FICHIER PFS 1200,00 F CARTE COULEUR RVB ISTC 1550,00 F | DISK Ill ADDITIONNEL 4400,00 F | FICHIER PFS 760,00 F | FICHIER PFS REPORT 1050,00 F INTERFACE PARALLELE 1150,00 F | MONITEUR Ill 2500,00 F | FICHIER PFS oe 760,00 F INTERFACE SERIE V24 RS 232 1300,00 F | DISK DUR PROFILE 5 MEGA |26000,00 F |COMPTA SAAI 3100,00 F CARTE INTEGER 1250,00 F | SILENTYPE lit 2500,00 F | PAIE SAARI 2350,00 F \RTE APPLESOFT 1250,00 F | CARTE PROTO APPLE Ill 375,00 F | APPLE WRITER: 530,00 F |CARTE LANGAGE 16K RAM. 1280,00 F | INTERFACE PARALLELE APPLE Ill 1500,00 F | APPLE PLOT 520,00F Ps L 3050,00 F |CARTE MICROSOFT 280 CP/M 2430,00 F DOCUMENTATION GENERALE SUR DEMANDE. En raison des fluctuations monétaires ces prix sont susceptibles d'étre modifiés sons préavis. Nous consulter pour confirmation. JCR, Pinformatique service compris. TIED communication EDITORIAL De nombreux lecteurs nous téléphonent ou nous écrivent pour nous poser des questions sur l’Apple et ses utilisations possibles. I] ne nous est malheureusement pas possible de répondre 4 tous. D’une part, cela demande souvent du temps, et il s’agit 14 de notre ressource la plus rare. D’autre part, il y a encore beaucoup de choses que nous ne savons pas, ou pour lesquelles l’équipement nous fait défaut. Les questions les plus fréquentes ou les plus intéressantes peuvent aussi trouver leur réponse dans le Courrier des Lecteurs. Nous vous prions de nous excuser de ne pas pouvoir faire plus en ce moment, mais nos moyens ne nous permettent pas encore d’assurer ce genre de service. Nous vous offrons quatre longs articles dans ce numéro. Tout d’abord, l’article d’initiation 4 l’Assembleur, de Jean-Louis Meillaud, annoncé dés le numéro 1... Ensuite, la seconde partie de l’analyse du directory, de Michel Crimont. Enfin, le programme de transfert BASIC-Pascal-BASIC réalisé par Gilles Mauffrey pour la disquette Pom’s N° 2, et un article de Bruno Estrangin sur les joies de la communication a l’aide d’un Apple. De nombreux autres articles viennent compléter ce numéro 3, y compris (et c’est 14 une premiére pour nous) des contributions de lecteurs. N’hésitez pas 4 poursuivre dans cette voie : le prosélytisme et la participation sont les clés de la réussite de votre revue. C’est vous qui faites votre revue; nous ne sommes que des catalyseurs! Les lecteurs nous demandent souvent s’il est encore possible de commander le numéro 1, ou sil’on peut acquérir les disquettes séparément. La réponse est affirmative dans les deux cas. N’hésitez pas non plus a nous faire parvenir des petites annonces. Elles seront gratuites, sous réserve qu’il s’agisse effectivement d’annonces de particuliers. La périodicité trimestrielle est en effet quelque peu un frein pour les annonces, mais cela n’empéche pas le rapport performance/prix d’étre excellent... Personne n’ayant trouvé la bonne réponse a notre concours publié dans Pom’s N° 2, nous vous donnons page 60 une seconde chance de prouver votre sagacité et de gagner ainsi un abonnement d’un an. Nous vous donnons rendez-vous au salon Micro-Expo, qui se tiendra 4 Paris du 14 au 19 juin 1982. Nous y partagerons un stand avec les revues La Commode (Commodore) et Trace (TRS-80). Hervé Thiriez Directeur de la publication - rédacteur en chef : Hervé Thiriez - Siége social : Editions MEV - 49, rue Lamartine - 78000 | Versailles - Rédaction et abonnements : 59, bd de Glatigny - 78000 Versailles - Tél. (3) 918.13.07 - Régie publicitaire : Force 7- | 41, rue de la Grange-aux-Belles - 75483 Paris Cedex 10 - Tél. (1) 238.66.10 - Diffusion auprés des boutiques informatiques et | librairies : Editions du PSI - 41-51, rue Jacquard - BP 86 - 77400 Lagny - Tél. (6) 007.59.31. Ont collaboré 4 ce numéro : Pierre Boutreux, Michel Crimont, Jean-Francois Duvivier, Bruno Estrangin, Christian Guérin, Guy Mathieu, Gilles Mauffrey, Jean-Louis Meillaud, Gérard Michel, Bruno Rives - Dessin : Jean Mourot. Pom's No 3 3 gerie ve La deo “etn par 22 Fre nT ore -Y quverte de! ngptesalt porte LEY - Recueil ragtd pat Mc! destine a wording cull pect rend son. et facie agrarnMe fur un 2 ca pratique 6°! Ap Nelume par Nicole Le pratian' volume? ar nieve & g-powigv®! 220 Ge second YO ede Ce pratique det ‘apple ext consacre 22 wate OOK. jiaitavon e yn des foniers aux tes, vmprienant mpprecio®DS aornexe8 "acu gustren"eS andes OF 108 jee a ry -sitnaroe ier! gn 71 Bosc 2010S Les prix Sot yaxes> ernnatlag® ver part cone {par ev orfouter 5 FF pariivee) pRENOM ——~ Apprentissage de Il’assembleur (I) Jean-Louis Meillaud IL N'Y A PAS DE LANGAGE UNIVERSEL Le possesseur d'un Apple qui veut se lancer dans la programmation est tout de suite sollicité par une pléiade de langages, BASIC, Pascal, Forth etc, sans parler de quelques "vieilleries" comme le Cobol et le Fortran. Ces langages ont sans doute beaucoup d'attrait pour ceux qui disposent 4 la fois du temps et du budget nécessaires! Mon propos n'est pas d'entamer une polémique avec ceux qui vantent les mérites de Pascal et du pari qu'il représente A mon niveau, que je pense étre celui de nombreux utilisateurs, l'Apple, tel qu'il est livré, avec son BASIC et son MONITEUR, a de quoi contenter les plus exigeants. Les softs, je devrais dire les logiciels, proposés par les sociétés spécialisées (une bonne centaine rien qu'aux Etat-Unis) sont écrits A 99% dans wun mélange de BASIC et de langage-machine, et ils marchent en effet trés bien. Prenons comme référence 1'Apple II+ avec Applesoft et Autostart, qui représente le Standard actuel. Ce BASIC est un langage d'une souplesse et d'une facilité d'emploi inégalées. Le fait que le BASIC Applesoft soit interprété et soumis a un contréle syntaxique au moment de cette interprétation rend nos programmes immédiatement opérationnels; ce n'est pas le cas avec des langages compilés. Les limitations mémes de 1l'Applesoft me paraissent plutdt un avantage. Il est facile, quand le besoin s'en fait sentir, de trouver des sous-programmes simulant le PRINT USING (voir POM'S numéro 4, en juin) ou les instructions de traitement de matrices qu'on trouve généralement dans les BASICs plus "étendus". Sans gotit immodéré pour le paradoxe, je dirais que l'Applesoft est efficace en proportion de sa simplicité. LES VRAIES LIMITES Le BASIC, quelque soit son parfum, Applesoft ou Integer, se montre invivable dans certaines applications. Pour des calculs trés répétitifs, sa lenteur devient exaspérante. Qui n'a jamais "piqué une crise" devant son écran A attendre qu'une boucle en BASIC finisse de s'exécuter, ou encore qu'un segment de programme soit chargé ? Ceux qui ont essayé d'utiliser un Mailing List tel qu'APPLEPOST me comprendront. Et pourtant ce progiciel a été écrit par les gens de PERSONAL SOFTWARE, les auteurs de VISICALC. Certaines solutions employées sont certes ingénieuses et de nature A inspirer le programmeur en quéte de routines élégantes. Mais, en la circonstance, le BASIC se montre d'une telle gourmandise qu'il a fallu segmenter le programme et que la majeure partie du temps d'exécution se passe en appel de ces segments de programme. LA SOLUTION HARMONIEUSE le BASIC est irremplacable pour les petites taches qui s'exécutent en une fois, comme les affichages d'écran. I1 faut le compléter par des sous-programmes en langage-machine pour tous les travaux répétitifs tels que les conversions de codes. Il faut remarquer que le langage-machine, comme le fait d'ailleurs le BASIC, peut utiliser des sous-programmes fort efficaces qui se trouvent dans le Moniteur. D'autre part il n'est pas interdit de brancher un programme en langage-machine sur Pom's No 3 5 une fonction Applesoft dont on connait le point d'entrée. L' ARTICULATION La communication entre Applesoft et langage-machine est prévue dans 1'Applesoft grace aux quatre instructions CALL, PEEK, POKE et USR. fh outre, différentes techniaques sont répertoriées pour effectuer ces mixages (cf S.H.LAM Routine, expliquée dans.POM'S numéro 2). LES OUTILS DE TRAVAIL La "Bible", c'est le "REFERENCE MANUAL" , le bouquin que vous avez soigneusement mis de cdté le jour ot vous avez pris livraison de votre Apple ! Il est grand temps de le faire sortir de sa cachette et de se familiariser avec les commandes du Moniteur; les exercices sont obligatoires pour une bonne compréhension. Il vous faut également un manuel de programmation en assembleur et ... un assembleur. L' ASSEMBLEUR Je commence par lui car il constitue une option fondamentale. Son choix entraine en partie celui du manuel. PREMIERE HYPOTHESE :; Vous avez un ancien APPLE II, que nous appelerons APPLE II MOINS. Vous étes vernis car vous disposez du "MINI-ASSEMBLER"; le "Vieux" Moniteur et le BASIC fntier, moins voraces que l'Applesoft Autostart, laissent la place a ce petit bijou, ainsi qu'aux sous-programmes Step et Trace, bien utiles pour les mises au point. DEUXIEME HYPOTHESE : Vous avez un APPLE II +. Vous n'avez plus ni Trace ni Step et le MINI-ASSEMBLER a également disparu. Pour le récupérer, il faut que votre APPLE soit muni soit de la carte "Integer", (TRACE et STEP réapparaissent dans la foulée), soit, (plus normalement, car l'intérét de 1' INTEGER en PROM est limité), de la Carte Langage qui vous redonne le Mini-Assembleur, mais cette fois sans le pas-a-pas ni le tracage. Si vous @tes réduit A 1'APPLE II + sans plus... pas de mini-assembleur, ce qui est bien génant car méme si un "grand" Assembleur est pratiquement indispensable, le "mini" rend bien des services pour les programmes courts et les modifications rapides. Le mini est trés pratique car il vous permet de voir ce que vous faites au fur et A mesure que vous écrivez votre programme. Aussitét écrite, votre instruction est assemblée, A l'endroit méme ot elle devra @tre exécutée. L'écriture est particuliérement simplifiée et rapide. Il est par contre impossible d'assortir vos lignes de commentaires, pourtant bien pratiques pour savoir ce que vous aviez voulu faire, quand vous redécouvrez votre programme quelque temps plus tard. LES GRANDS ASSEMBLEURS L'inconvénient majeur du mini-assembleur pour les programmes importants est que, a la différence des grands, il ne permet pas les étiquettes symboliques. Ces étiquettes (Symbolic Labels) sont le principal atout du langage assembleur . Elles vont vous permettre, dans un assembleur adulte, de dire par exemple "Branchez-moi sur les TRAVAUX D'HERCULE", ou plus exactement sur "TVXDHERC", car il y a quand méme une limite dans le nombre de caractéres permis (4 a 8 suivant les modéles); pendant la phase d'assemblage, le programme assembleur ira chercher l'adresse de votre routine TRAVAUX D'HERCULE quand celle-ci sera définitive . Le Programme d'assemblage, qui a pour mission de transformer votre programme source (langage 6 Pom's No 3 assembleur) en programme objet (langage-machine) déterminera automatiquement cette adresse en début d'exécution lors du premier passage. C'est quand méme une bonne maniére de s'affranchir du GOTO X du BASIC, qui vous obligera A mettre impérativement votre routine en ligne X, ou si vous changez d'avis, A modifier toutes vos références 4 X dans les GOTOs et autres GOSUBs. Ces étiquettes symboliques et bien d'autres merveilles ne sont disponibles que sur les assembleurs complets. Il y en a une demi-douzaine de connus sur le marché et il n'est pas toujours facile de les départager. Ils sont en pleine crise de croissance et chaque nouvelle version représente un progrés sur la derniére version du concurrent... Dans un état larvaire il y a deux ans, d'aspect encore trés "bricolé" il y a seulement un an, ils s'améliorent de trimestre en trimestre et on peut considérer aujourd'hui qu'ils ne sont pas loin d'atteindre leur majorité. mh outre les assembleurs actuels s'accompagnent d'une foule d'utilitaires : désassembleur pour transformer un programme en langage-machine en programme en assembleur, tracage pour aide A la mise au point et table de références pour retrouver toutes les instructions qui utilisent une étiquette donnée. L'existence de ces utilitaires vous simplifie la vie. Nous prendrons comme assembleur de référence le LISA car, d'une part, c'est le plus répandu en France et, d'autre part, son auteur, Randy Hyde, est bourré dtidées qu'il a le bon goft de nous faire partager, non seulement en les incorporant dans ses logiciels, mais aussi en-nous les commentant dans différentes publications (revue Applesauce et livre de programmation du 6502) et méme a l'intérieur des listings-source de ses programmes. LISA - prononcé "Lailleza" comme Minelli- Interactive Assembleur est un assembleur conversationnel de format libre. Il a le grand avantage, comme 1'INTEGER, de signaler vos erreurs de syntaxe au fur et A mesure de l'écriture sans avoir a attendre le premier passage. fh outre il met A votre disposition un large éventail de "pseudo-codes", commandes qui s'exécutent pendant l'assemblage. Il y en a pour chaque situation ! MANUELS DE PROGRAMMATION EN ASSEMBLEUR Dans ce domaine également, 1'évolution est rapide. Il y a encore un an nous n'avions A nous mettre sous la dent que des livres sur l'assembleur pour le microprocesseur 6502 en général, ce qui permet de programmer 1'Apple mais ne tient aucun compte de 1a mine de programmes tout faits que sont le Moniteur et le DOS, sans parler de l'Interpréteur BASIC. Toutes les routines de gestion de l'écran, du clavier et des autres périphériques existent déja. Il convient simplement d'avoir la clé d'accés. Ces livres sur le 6502 sont d'ailleurs excellents. In dehors du Rodnay Zaks, que je ne connais que de réputation (bonne, merci et vous!), mon coeur balance entre le R. Findley (6502 Software Cookbook, chez Scelbi) et le L.A. Leventhal (6502 Assembly Language Programming, Osborne/McGraw Hill). L'Apple-o-mane (ou Pommolatre) francais est désormais comblé. Il peut apprendre l'assembleur spécifique de son P.S.I. favori et dans sa propre langue . hm effet, Nicole Bréaud-Pouliquen a publié son Tome III de la Pratique de l'Apple (Edition du P S I). & collaboration avec Daniel-Jean David, elle nous disséque le langage-machine et l'assembleur du 6502. Il est important d'avoir un livre spécialement orienté APPLE, car le programmeur est souvent appelé 4 utiliser directement des routines du Moniteur. Il serait titanesque d'avoir A les ré-écrire, sans compter qu'il serait difficile de faire aussi bien que Steve Wozniac. Comme le disent (aussi) les Américains 4 tout bout d'article : "Il est inutile de réinventer la roue!". Pom's No 3 “7 Le Don & Kurt Inman , "Apple Machine Language" édité par Reston/Prentice Hall est lui aussi spécifique. Le pas-a-pas trés "enseignement programmé" est agréable a suivre . Pour les amateurs de sons et de graphiques, il est fait de larges incursions dans ces domaines. Malheureusement le livre s'arréte au moment ot ca devient vraiment intéressant, c'est & dire au moment d'aborder le véritable assembleur, avec étiquettes symboliques et pseudo-codes. A conseiller néanmoins au débutant, s'il lit l'Anglais. Le bouquin que j'attendais personnellement avec le plus d'impatience, le Randall Hyde, est enfin sorti. Il s'agit de "How anyone can program the Apple II - Using 6502 assembly Language". Il est parfait pour les utilisateurs de LISA, car il donne un tas de tuyaux complémentaires (utilisation des pseudo-codes LISA et du TRACE 65 pour la mise au point des programmes). Mais bien qu'il s'intitule de lui-méme "Best Seller", son manque d'universalité empéche de le recommander 4 des gens qui n'auraient pas l'intention d'utiliser le LISA. Ces derniers par contre ne pourront s'empécher d'avoir l'eau a la bouche a l'annonce des futurs volumes de la collection "Advanced 6502 L/M programming (Graphics, Disk I/0...)" et "Z80 and 6809 programming on Apple". Infin, pour rester dans les nouvelles alléchantes, signalons la sortie aux U.S. de "Everyone's Guide to Assembly Language". C'est la réunion des exceptionnelles chroniques parues dans SoftTalk depuis plus d'un an. Elles sont signées Roger Wagner, auteur d'Appledoc (voir Pom's numéro 2) et patron de la société de Software S D S_. Ce livre constitue l'initiation la plus progressive et la plus compléte au langage-machine de l'Apple et 4 1'assembleur. LES SOFTS UTILES Ltamateur est noyé sous les logiciels mis A sa disposition . C'est peut-étre cette multiplicité qui lui a fait préférer 1'APPLE . Mais ces logiciels, ainsi que les dispositifs "hardware" mis sur le marché, ne sont pas tous d'une égale utilité. Dans chaque numéro de Pom's, des articles nous permettrons d'y voir plus clair et de sélectionner, par exemple, les aides 4 la programmation les plus efficaces. Dés qu'il nous faut écrire, A titre professionnel ou privé, un systéme de traitement de texte est le premier pas vers la rentabilisation de notre "micro". Personnellement, j'ai un gros faible pour "Applewriter". C'est un bon soft, dont l'acquisition est peu onéreuse. Attention A Applewriter II, annoncé par Apple Computer ! Il parait qu'il "tire dans les coins". Mais il sortira en version protégée... et il ne sera pas donné. Notre Applewriter actuel, s'il est un peu frustre, en ce sens qu'il lui manque un certain nombre d'optios, disponibles sur SUPER SCRIBE et autres MAGIC WINDOWs, est perfectible. La plupart des options ou gadgets qui lui font défaut peuvent lui &étre greffés. Il suffit pour cela de parler sa langue, le langage-machine. A mes yeux, la plus belle qualité d'Applewriter est d'étre un systéme ouvert. Il existe nombre de "softs sophistiqués" qui vous rendent malade. Aussi perfectionnés soient-ils, ils ne peuvent toujours correspondre & ce que vous en attendez et il arrive fatalement qu'un jour ou l'autre vous souhaitiez leur faire subir une petite opération de chirurgie esthétique. Jl y a un truc en trop, une commande dont l'texécution vous parait exaspérante, ou un truc qui manque, une idée A vous qui vous parait géniale et dont la mise en oeuvre vous simplifierait bien la vie. Bref, vous voulez apporter des modifications. Hélas pas de "modif" possible. Ces softs sont généralement cadenassés et leurs auteurs se sont évertués, par psychose du piratage, A vous empécher d'en trouver la clé. Avec Applewriter, tout est possible ! Non seulement on trouve dans le commerce des programmes tout faits ( AppleWriter Extended de chez Brillig Systems, Proportional 8 Pom's No 3 Text Formatter pour les Centronics 737/9 de Micro-Media, dont les produits n'ont pas l'air d'étre trés diffusés, ou encore "Go-Between", un programme qui, d'aprés Apple-Europe, serait disponible en Angleterre), mais encore n'importe qui peut s'écrire les modifs, a condition de posséder suffisamment le langage-machine. C'est méme la meilleure maniére de se familiariser avec le langage-machine, (cf. la modification qu'a écrite Sheila Widnall pour utiliser son adaptateur de minuscules "Paymar Chip" avec 1'Apple-Writer (Call-A.P.P.L.E. de Septembre 80), alors qu'un mois auparavant elle ignorait l'existence du LDA et les joies de la gestion de pile!). Je suis résolument hostile aux adaptateurs de minuscules qui donnent de bien vilains caractéres. De méme je pense que les cartes 80 colonnes ont un intérét trés limité. Je me satisfais parfaitement de ce que l'Apple affiche sur l'écran. Par contre je tiens A ce que mon imprimante écrive en francais. La modification que je vous propose aujourd'hui et qui nous servira de tremplin pour nous familiariser avec le langage assembleur permet de disposer de la quasi-totalité des lettres francaises accentuées que l'imprimante est capable de produire. Il faut bien entendu que l'imprimante dispose d'un jeu de caractéres francais, mais c'est le cas le plus répandu et c'est le cas en particulier des Centronics 730-2 et 737/739. Les seuls caractéres pour lesquels nous n'apportons pas de solution immédiate sont le tréma et l'accent circonflexe, ces caractéres qu'Applewriter sait éditer, mais ne sait pas positionner sur les lettres correspondantes. Pour le moment, nous non plus , nous ne savons pas les imprimer et nous ne saurons pas le faire avant d'avoir résolu le délicat probléme de l'espacement arriére sur les imprimantes A lignes. Rassurez-vous, la solution existe et elle fera l'objet d'un prochain article. CARACTERES FRANCAIS Sans la moindre modification il est possible d'obtenir (manuel Apple Writer, extraordinary characters, p.31 ) les caractéres suivants: é CTRL N * ESC CTRL N * CRTL SHIFT P @ SHIFT M a ESC CTRL SHIFT P § ESC SHIFT M “ ESC SHIFT N ¢* SHIFT N La modification que nous proposons est directement inspirée du "patch" proposé par Lou Rivas pour utiliser le dispositif "Lower Case Adaptor" avec AppleWriter (Apple Orchard, Automne 1980). Cette modification permet d'imprimer le i, le ¢ et le trait mode soulignage, en appuyant simultanément sur trois touches (CTRL A et, suivant le cas, la touche Barre oblique ou la touche Moins): a «CTRL A / ¢ ESC CTRL A / - ESC CTRL A - Aprés cette modification, la totalité des caractéres ASCII 224 a 255 peut &tre affichée sur l'écran ( il faudra se familiariser avec les nouveaux symboles!). Plus important, il est désormais possible de produire sur l'imprimante la quasi-totalité des lettres francaises accentuées. Il est impératif que le programme modifié soit appellé TEDITOR car aprés l'impression (par "PRINTER") le retour a l'éditeur se fait par "BRUN TEDITOR" (en langage-machine... of course). Si vous désirez conserver le programme original sur Pom's No 3 9 la méme disquette (on ne sait jamais!), prenez le soin, avant toute modification, de changer son nom. MODE D'EMPLOT Il faut commencer par écrire le "patch" (moins francais, mais plus joli que "verrue") en langage-machine. Nous allons utiliser LISA. Tout autre Assembleur fera l'affaire. Si on utilise le Mini-Assembleur il faut prendre particuliérement soin des adresses ot doivent s'exécuter les branchements. Mais en l'occurence, la tache est grandement facilitée par la présence du listing d'assemblage LISA. Il reste encore la solution qui consiste A taper directement les instructions en HEXA avec la fonction "CHANGE MEMORY" du Monitor, ultime recours de celui qui n'a pas encore d'assembleur. Nous prendrons comme origine $1848, qui se trouve en dehors du programme TEDITOR. Le pseudocode "ORG" s'toccupera de tout. Une fois le programme assemblé, il convient de le sauver sur disquette. Pour cela faire "BSAVE CARFRAN.OBJ, A$ 1848, L$50". Le patch fait moins de 80 octets, mais il vaut mieux prévoir trop large que trop juste. N'oubliez pas que sur la disquette vous enregistrez par multiples de 256 octets (100 en hexadécimal) et qu'en conséquence l'avarice n'est pas payante! Tellement peu payante que, entre membres d'Apple-holic Anonymous, je peux bien vous confesser qu'il m'est arrivé de perdre trois heures A rechercher une erreur dans un programme en langage-machine, que j'avais tout simplement amputé du dernier octet. Ih effet, pour calculer la longueur de mon "BSAVE", j'avais retranché l'adresse d'origine de l'adresse de fin et j'avais ainsi escamoté un octet... C'est un grand classique, moins grave que d'oublier d'éteindre quand on retire une carte... mais tout aussi populaire ! Le coté farce de cette panne ne vous échappera pas quand je vous aurai dit que, aux premiers essais, mon programme "marchait comme sur des roulettes". Pour le tester, j'avais en effet fait suivre mon BSAVE d'un BRUN, sans prendre la précaution de vider la mémoire et du coup j'avais récupéré mon octet final, sagement resté A sa place en la circonstance. PRECAUTIONS ET SOINS Pour vous éviter une pareille mésaventure, je vous conseille la manoeuvre prophylactique suivante : avant de recharger un programme a tester, utilisez le "MOVE MEMORY" du Monitor pour mettre A zéro une zone aussi grande que possible. Par exemple, en supposant que votre programme de quelques centaines d'octets débute en $800, passez en Moniteur (CALL-151). Puis tapez 800:0 801800 .2000M Le TEDITOR prend chaque caractére du texte que l'on est en train d'éditer et lui fait subir un certain nombre de traitements pour voir de quoi il retourne (Lettre Ma juscule, si précédée d'un Escape, minuscule, ou caractére de contrdle correspondant A une commande du programme). Puis, s'il s'agit d'un caractére du texte proprement dit, il lui fait subir un changement radical de code. L'Apple II modifie 1égérement le code ASCII pour son usage interne. Il lui ajoute un bit 4 la position la plus significative de l'octet (on parle alors d'ASCII négatif). Applewriter le secoue bien davantage : les majuscules sont descendues dans la zone des caractéres en INVERSE ($01 A $1A), les minuscules prennent la place des majuscules en NORMAL ($C1 A $DA), quant aux signes de ponctuation et aux chiffres, ils viennent se placer avant les majuscules ($A1A $BF). 10 Pom's No 3 ‘Quand Applewriter a fini de tester le caractére a écrire (au moyen d'instructions CMP) et lui a fait subir les conversions voulues (avec des AND et des ORA), il le range dans une chaine, dont l'adresse de départ se trouve dans la mémoire $28 et qu'il fait progresser en incrémentant le registre -Y. Il s'agit de l'adressage indirect post-indexé par Y que nous retrouverons plus loin. Les Modes d'adressage trés variés sont un des points forts du 6502, mais aussi un sujet de perplexité pour le néophyte. Pour s'y retrouver, il suffit d'appliquer les conventions classiques suivantes: $ renvoie A l'adresse > ajoute a l'adresse la valeur du registre nommé aprés la virgule () donne l'adresse de l'adresse. C'est une boite aux lettres. £$ nt'tindique pas une adresse, mais une constante A utiliser immédiatement. (| Ne vous étonnez pas si, sur certaines imprimantes, le jeu de caractéres francais change le signe "pound" -notre signe mathématique sensiblement égal- en signe Livre Sterling ). MISE EN OEUVRE A l'aide de l'assembleur de votre choix vous avez préparé sur une disquette le fichier pinaire CARFRAN.OBJ, ou encore vous possédez la disquette Pom's qui contient ce fichier. Vous disposez également d'une copie d'Applewriter. Il est recommandé de ne pas utiliser l'original ... 1) Vous chargez la Modif: BLOAD CARFRAN.OBJ 2) Vous mettez votre disquette Applewriter et vous chargez 1'Editeur: BLOAD. TEDITOR Pour garder une copie de sécurité, vous changez le nom : UNLOCK TEDITOR RENAME TEDITOR, VIEUX TEDITOR LOCK VIEUX TEDITOR 3) Vous passez en Moniteur (CALL-151) et vous utilisez l'instruction pour changer la mémoire (Reference Manual p.44), afin d'introduire les nouvelles valeurs suivantes : *811: 8D 10 CO AC 48 18 *3D0G ou 9DBFG (retour 4 1'Applesoft) 4) Vous enregistrez votre nouvel Editeur sur disquette: BSAVE TEDITOR, A$803, L$ 186C 5) Aprés l'avoir essayé, vous verrouillez le nouvel éditeur LOCK TEDITOR REMARQUE: Si vous ne disposez ni d'un assembleur ni de la disquette Pom's, vous pouvez encore vous en sortir : vous commencez directement au pas 2) et quand vous arrivez au pas 3) vous enregistrez également la modif en HEXA a partir de *1848: Bien entendu vous vous limitez au code objet qui est dans la partie gauche du listing d'assemblage. Pom's No 3 11 LIGNES SOURCE POUR ASSEMBLAGE AVEC LISA TTL "CARACTERES FRANCAIS" ORG $1848 Le pseudocode TTL permet, en LISA Version 2.5, d'imprimer le titre au début de chaque page de 1l'Assemblage. Ih outre, si vous disposez d'une Horloge Temps Réel, du type Mountain Computers (née Mountain Hardware), la date et l'heure stimprimeront A cdté du titre, ce qui est une facon agréable d'assurer la pagination d'un long listing. Le pseudocode ORG est lui indispensable; il permet A 1'Assembleur de calculer l'adresse des branchements. Il est de la responsabilité du programmeur de placer son programme objet 4 l'adresse indiquée au moment de l'exécution (4 moins que son programme ne soit écrit de facon 4 pouvoir étre déplacé -"relocatable" disent les anglophiles-, c'est-a-dire ne comporte aucun saut 4 une adresse absolue. Si ce ntest le cas, il faut faire appel A un programme de déplacement (cf. J.-F. Duvivier Déplacement des programmes en Assembleur, Pom's N 1) C'est une bonne habitude que d'écrire, autant que faire se peut, des programmes recasables ("relocatable"). Il n'en est évidemment pas question dans notre exemple puisqu'il s'agit d'une modification qui doit se raccorder A une adresse bien définie (par JMP $1848 que nous avons placé en $814 dans AppleWriter). Le pseudocode OBJ, qui indique l'adresse de départ de 1'Assemblage du code-objet est inutile ici car, A moins d'en décider autrement et de le spécifier expressément avec OBJ, ORG génére automatiquement un OBJ & la méme adresse (en LISA). 2. EQUATE Le pseudocode Equate (EQU) permet d'affecter- une étiquette a une cellule de mémoire ot se trouve une valeur ou un début de programme. S'il s'agit d'un programme, il suffira par la suite de faire un saut inconditionnel (JMP) ou un branchement conditionnel (BEQ) 4 cette étiquette. C'est beaucoup plus gai que la solution du BASIC, qui consiste A définir un numéro de ligne fixe au point d'tentrée du sous-programme. Les "equates" servent beaucoup pour les sous-programmes du Moniteur. Si le sous-programme est en ligne (A l'intérieur du programme principal), vous faites figurer simplement 1'étiquette avant la premiére instruction (cf. BAROBL infra). L'Assembleur LISA sait qu'il s'agit d'une étiquette parce que vous ne la faites pas précéder d'un espace, alors qu'il en faut au moins un avant un code instruction. Dans le dialecte spécifique A LISA, un equate a une mémoire en page zéro ($00 A $FF) s'écrit EPZ (equate page zero) et ne sera suivi, bien entendu, que de deux chiffres hexa au maximum. 3. TEXTE EPZ $0028 Il stagit de la mémoire ot le programme va chercher 1'adresse de la chaine de caractéres qu'il est en train de constituer 4 partir des entrées au clavier. 4. CLAVIER EQU $CO000 Quand le caractére prélevé par un LDA a cette adresse est "négatif" (bit 7, le plus significatif, positionné), c'est qu'une touche du clavier a été enfoncée. Cet 12 Pom's No 3 état sera constaté par l'échec du test BPL. 5. STROBE EQU $C010 Remet le bit le plus significatif A zéro pour pouvoir accepter une nouvelle entrée clavier. Le programme va effectuer une série de tests afin de voir si les touches qui nous intéressent ont été activées, pour se rebrancher finalement au point d'ou est partie la dérivation (au moyen d'un RTS). Si les caractéres testés sont bien ceux que nous recherchons, ils doivent étre stockés entre temps dans la chaine de caractéres qu'utilise A/W. Ceci est effectué par STA ($28), Y suivi d'un INY pour mettre a jour le pointeur. 6. VALEUR IMMEDIATE - ADRESSE - ADRESSE DE L' ADRESSE LDA : Load Accumulateur permet de placer une valeur dans 1'accumulateur. Cette valeur peut étre contenue dans l'instruction : LDA £$Valeur en hexa, indique qu'il n'y a pas aA chercher loin l'tadresse de la valeur puisqu'il faut prendre littéralement la valeur contenue dans l'instruction. On parle alors d'adressage immédiat. La valeur peut étre recherchée directement dans une cellule de mémoire dont l'adresse est contenue dans l'instruction: LDA $ adresse (en Hexa). C'est l'adressage direct. On peut encore indiquer dans l'instruction l'adresse de la cellule ot se trouve ltadresse de la valeur : LDA ($ adresse de l'adresse ot se trouve la valeur). Ce systéme de boite aux lettres s'appelle l'adressage indirect. Il permet d' utiliser la méme instruction pour toute une série de valeurs. L'adresse de la boite aux lettres est fixe, seul son contenu varie. Une autre maniére de faire varier l'adresse consiste a associer un registre (X ou Y) dont le contenu vient s'ajouter a l'adresse. Il s'agit de l'adressage indexé. Ltadresse indiquée dans 1l'instruction ne varie pas, mais on fait progresser le registre. Sion marie l1'indexage avec l'adressage indirect on obtient l'adressage indirect indexé. On peut de la sorte faire varier l'adresse de la "boite aux lettres", adressage indirect pré-indexé par X, ou faire varier l'adresse trouvée dans la boite aux lettres, adressage indirect post-indexé par Y. Ici le rdle des deux registres d'index est nettement différencié, ce qui est bien agréable pour éviter les confusions ! Ainsi LDA ($28),Y permet de charger l'accumulateur avec le contenu de l'adresse A+Y, A étant l'adresse contenue dans la mémoiré 40 (28 en hexadécimal). Les beautés de l'adressage indirect post-indexé par Y résident dans le fait qu'il n'a pas besoin de toucher au contenu de la cellule 40 et qu'il suffit d'incrémenter le registre-Y (INY) pour faire progresser l'adresse ot l'on va lire ol stocker le caractére suivant. 7. LIGNES 9 A 11 CMP £$81 ; TOUCHES CTRL-A? BEQ BAROBL RTS Les branchements conditionnels se font en deux temps. D'abord, on met en présence les quantités A comparer. Ici l'accumulateur et la valeur 129 (81 en hexa). Fnsuite, on indique la condition et la branche & prendre si cette condition est remplie. Pom's No 3 13 fh BASIC cela donnerait: 10 LET A = ACCUMULATEUR : LET B = 129 : REM 129=$81 20 IF A = B THEN GOTO 1000 30 REM SOUS-PROGRAMME BAROBL COMMENCE EN LIGNE 1000 40 RETURN Remarque : 1a comparaison n'est pas a proprement parler une comparaison, mais une soustraction : avec CMP (et ses variantes) on soustrait la valeur a comparer de l'accumulateur (ou du registre concerné). th indicateur est positionné selon le résultat de cette soustraction C - pour Carry - s'il est positif Z- pour Zero - s'il est nul N - pour Negative - s'il est négatif Tous ces indicateurs (flags) sont combinés dans un méme registre, le Mot d'Etat (Status Word). L'instruction suivante de branchement conditionnel examine ensuite l'état de l'indicateur qui l'intéresse. BEQ (Branch if equal), par exemple, effectuera le branchement si la soustraction a donné pour résultat 0, c'est-a-dire si l'indicateur Z = 1. Par contre le branchement ne sera pas effectué si l'indicateur Z = 0. Surprenant, mais logique... Surtout si l'on considére que "0" veut dire Faux et que "1" veut dire Vrai. Sila comparaison ne donne pas l'égalité c'est qu'il ne s'agit pas de CTRL-A. Retour au programme principal (RTS). Par contre si c'est un CTRL-A il convient de déterminer si celui-ci est accompagné d'une barre oblique ou d'un moins. Chaque fois que la bonne séquence de touches aura été décelée, nous transformerons le code ASCII dans le code qui donnera le caractére désiré a l'impression. Cela est effectué par.un LDA avec adressage immédiat, c'est A dire que l'on charge directement l'accumulateur avec la valeur ASCII qui servira au programme PRINTER. La différenciation provoquée par l'emploi préalable de la touche ESC (majuscules) sera effectuée dans le tronc commun du programme principal (TEDITOR classique). 8. SOUS-PROGRAMME BAROBL: . LDA CLAVIER BPL BAROBL ; RIEN! RELIRE CLAVIER. CMP £$AF ; TOUCHE "/"? BNE TIRET? LDA £$DC ACCEPTE: STA STROBE ; LE CLAVIER EST PRET A RTS ;ACCEPTER UN CARACTERE TIRET?: CMP £$AD 3 TOUCHE "-"? BNE ACCEPTE ; RIEN AU NUMERO.FAITES VOS JEUX! LDA £$DF ; SOULIGNERA A L' IMPRESSION BNE ACCEPTE ; STROBE MET BIT7 A O POUR LIRE STA (TEXTE), Y ; RANGE LE CARACTERE TRAITE INY ;DANS LA ZONE-TAMPON RTS END 14 Pom's No 3 JSR que (Jump to subroutine) exécute un branchement inconditionnel. Il est au JMP ce le GOSUB est au GOTO. C'est-a-dire qu' il s'attend a trouver ultérieurement un RTS (Return from subroutine), 1'équivalent du RETURN du BASIC. BNE (Branch Le branchement zéro. sera effectué STA de (Store l'accumulateur dans if not equal) ne doit guére poser de probléme si on a compris le BEQ. si l'indicateur Z (dans le Mot d'Etat) est égal a accumulateur) est la manoeuvre inverse de LDA. Tl transfére le contenu la mémoire spécifiée. Ici nous utilisons done 1l'adressage indirect post-indexé par Y. Nous rangeons le contenu de 1'accumulateur a l'adresse obtenue en 1'EPZ on sait qu'il s'agit de indique le point de (qui, lui, progressera d'une unité au prochain INY). ajoutant le contenu de la boite aux lettres étiquetée "TEXTE" (d'aprés la cellule $28 en hexa. départ de la chaine de caractéres) au contenu du registre Y soit 40 en décimal, qui LISA 2.5 CARACTERES FRANCAIS 0800 1 TTL "CARACTERES FRANCAIS" 1848 2 ORG $1848 1848 3 3 0028 4 TEXTE EFZ $0028 1501 S DISQUE EQU $1501 cooo 6 CLAVIER EQU $C000 co10 7 STROBE EQU $C010 1848 C9 81 8 CMF #$81 3TOUCHES CTRL -A? 184A FO 01 9 BEQ BAROEL. 184C 460 10 RTS 184D 11 BAROBL? 184D AD 00 CO 12Z LDA CLAVIER 1850 10 FE 13 BFL. BAROBL sRIEN! RELIRE CLAVIER, 1852 C9 AF 14 CMF #$AF $TOUCHE "/"? 1854. D0 06 15 BNE TIRET? 1856 AQ DC 16 LDA #$DC 1858 17) ACCEPTE? 1858 8D 10 CO 18 STA STROBE $LE CLAVIER EST FRET A 1856 60 19 RTS sACCEPTER UN CARACTERE 185C 20 TIRET?? 185C C9 AD 21 CMP #$AD 3 TOUCHE “--"? 18SE DO F8 22 BNE ACCEFPTE $RIEN AU NUMERO.A VOS MISES! 1860 A9 DF 23 LDA #$DF 3SOULTIGNERA A L.’ IMPRESSION 1862 DO F4 24 BNE ACCEPTE 3STROBE MET BIT7 A O POUR LIRE 1864 91 28 25 STA (TEXTE),Y ;RANGE LE CARACTERE TRAITE 18466 C8 26 INY 3DANS LA ZONE-TAMFON 1847 60 27 RTS 1848 28 END ICALL-151 *1848,1868 1848- C9 81 FO 01 60 AD 00 co 1850~- 10 FE C9 AF DO 06 Ag OC 1858~ 8D 10 CO 60 CF AD DO F8 1860- A? DF DO F4 91 28 CB 40 1868-- 00 Pom's No Afin de mieux tirer profit de toutes les possibilités dAPPLE, et de ses extensions. Loin des contacts anonymes, pour un rapport plus humain, des revendeurs régionaux spécialisés vous proposent des logiciels sur mesure, standards, ou d‘apprentissage. Un service technique avant et aprés-vente. N’hésitez pas a contacter le revendeur le plus proche pour un conseil ou un renseignement Pappic en Ge EUROPROCESS Annecy/Faverges Siége social : Doussard 74210 (80) 44.31.12 LE CALCUL INTEGRAL Bayonne 3, rue Aristide-Briand 64100 (69) 55.43.47 BOUTISOFT 33 Bordeaux 9, rue de la Lande 33000 (56) 91.55.08 NEYRIAL Clermont-Ferrand 9 NEYRAY 63000 (73) 35.02.70 MAGENTA GESTION Epernay 7, av. A.-Thévenet Magenta 51200 (26) 53.19.93 CIRCE Lyon 9, rue P.-Florence 69003 (78) 54.31.95 ORDITEL Marseille 2 Siége social : BELCODEN 13000 (42) 04.44.00 Montpelier MCROrorMamo 34000 (67) 58.58.28 SEMITEC Nancy/Laxou 69, rue Mareville 54250 (8) 340.43.38 4 AMC Orléans 13, rue des Minimes 45000 (38) 62.62.58 s MAB Perpignan 2, place de Catalogne 66000 (68) 34.04.46 CONSEIL COMPUTER Rouen 20, quai Cavelier-de-la-Salle 76100 (35) 63.36.06 CILEC Strasbourg 18, quai Saint-Nicolas 67000 (88) 37.31.61 SIA Toulon Lepaillon, avenue de Brunet 83100 (94) 23.74.30 H MICROMEGA Valenciennes 38, rue de Famars 59300 (27) 46.89.22 Si cette publicité vous intéresse, contactez le CALCUL INTEGRAL Contr6élez le nettoyage mémoire Guy Mathieu Un article de Gérard MICHEL paru dans le numéro 2 de POM'S étudie l'effet de différentes méthodes de "Garbage Collection" pour nettoyer la mémoire centrale des vieilles chaines qu'elle contient : - "garbage" automatique par Applesoft, - FRE (0) qui force le "garbage", - d'autres "FRE", par exemple FRE (16) avec un programme approprié en langage machine. Il peut étre intéressant de voir de plus prés comment fonctionne le "garbage collection", en vue de choisir la méthode la plus convaincante pour un programme donné. Une fagon de le faire est de visualiser sur écran graphique les stades successifs de l'occupation mémoire, ce que fait le programme listé ci-aprés. L'image écran dont le fac-similé est reproduit ici montre que le "garbage" automatique par Applesoft est fait au dernier moment, quand de la place doit effectivement étre dégagée : il nécessite alors un certain temps d'attente (selon les programmes, ce temps, souvent chiffré en secondes, peut dépasser la minute). Un "garbage" forcé régularise le processus et ne demande que des temps unitaires faibles. Mais bien souvent, la somme de ces temps unitaires atteint, et dépasse méme, parfois notablement, le temps total exigé par le "garbage collection" automatique. Le choix entre diverses facons de nettoyer la mémoire se pose par conséquent en des termes différents, car on ne peut plus parler d'optimum général. En mode conversationnel, on préférera généralement des attentes courtes, méme si le temps total est plus long : psychologiquement, c'est une solution mieux acceptée; techniquement, le temps le plus long est de toute facon celui qui dépend de l'opérateur. Ti nten va pas de méme pour les travaux en temps différé ou semi-différé (par ex. : chargement en mémoire centrale d'un gros fichier d'index). Quelques commentaires sur le programme - Les instructions 60 4 67 étudient la composition et la position sur écran de la chaine de caractéres destinée 4 former les nombres de 1'échelle. - Les instructions 50 4 59 constituent un sous-programme de dessin de chiffres. - Les instructions 1500 A 1530 visent A mettre A égalité les 3 cas étudiés : un "LOMEM" remet A O la zone de pointeurs cependant que la mémoire 40185 (indestructible par le DOS) contient les valeurs successives d'une variable Z destinée 4 réinitialiser la "boucle J". - fin, chacun connait les vertus des mémoires 111 et 112 (instruction 81) qui contiennent la valeur décimale de la plus basse mémoire occupée a chaque instant par un tableau de "strings". Pom's No 3 17 0 HOME S DS = CHRS (4) 10 11 13 15 20 21 22 23 24 25 56 REM INITIALISATION LOMEM: 163853 REM FROTECTION ZONE HGR POKE 40185,50 DIM A$(150) REM DESSIN DU CADRE HGR 3 HCOLOR= 2 HFLOT 50,0 TO 50,150 TO 270,14 50 TO 270,0 HPLOT 86,145 TO 86,150 HFLOT 186,145 TO 186,150 FOR Y = 0 TO 150 STEF 50% HFLOT 50,Y TO SS,Y¥% NEXT REM ECHELLES FOR J = 0 TO 3 3? IF ZX% < 20 THEN ZX% = 708ZY% = 1593ZAS = "2000 0"3 GOSUB 60 2X% = U702ZY% = 1592ZA$ = "300 00"3 GOSUB 460 HCOLOR= 3% VTAE 233 PRINT "NE ITER.? ~ OCCUF. MEM. GOTO 1000 HFLOT ZX% - 2,ZY% TO ZX% + 2, ZY% TO ZX% + 2,ZY% ~ & TO ZX % ~- 2,ZY% - 6 TO ZX% - 2,ZY% + RETURN HFLOT ZX%,ZY% TO ZX%,ZY% - & TO ZX% - 2,ZY% - 4% RETURN HFLOT ZX% - 2,ZY% - & TO ZX% + 2,ZY% ~ 6 TO ZX% + 2,Z2Y%X ~ 4 TO ZX% - 2,ZY% TO ZX% + 247 Ya? RETURN HFLOT ZX% - 2,ZY% TO ZX% + 2, ZY% TO ZX% + 2,ZY% - & TO ZX % - 2,ZY% - 6% HPLOT ZX% ~- 2 +ZY% ~ 3 TO ZX% + 2,ZY% ~ 33 RETURN HPLOT ZX% - 2,Z¥% - 6 TO ZX% ~ 2,ZY% ~ 2 TO ZX% + 2,2Y% - t HFLOT ZX%,ZY% - 4 TO ZX%, Y%? RETURN HPLOT ZX% - 2,ZY% TO ZX% + 2, ZY% TO ZX% + 2,ZY% - 3 TO ZX % - 2,ZY% - 3 TO ZX% - 252% - 6 TO ZX% + 2,ZY% - 6% RETURN 2 Zz HFLOT ZX% - 2,ZY% ~ 6 TO Z2X% ~- 2,ZY% TO ZX% + 2,ZY% TO ZX% + 2,ZY% - 3 TO Z2X% - 2,ZY% - 3 + RETURN 59 60 61 % 63 64 HPLOT ZX% - 2,ZY% TO ZX% + 2, 2¥% - 6 TO Z2X% ~ 2,ZY% - 6% RETURN HPLOT ZX% - 2,ZY% TO ZX% - 2, : ZY% ~ & TO 2X% + 2,Z¥% - 6 TO ZX% + 2,Z2Y% TO ZX% - 2,Z2Y%2 HPLOT ZX% - 2,ZY% - 3:°TO 2X% + 2,2 Y%-~ 3% RETURN HFLOT ZX% + 2,ZY% TO ZX% + 2, ZY¥% - 6 TO 2X% - 2,ZY% - & TO ZX% - 2,Z2Y% - 3 TO ZX% + 2,2 Y% ~ 3% RETURN REM ECRITURE SUR ECRAN H.R. LEN (ZA$)$ FOR I = 1 TO ASC ( MIDS (ZA$,I,1)) - ON 23% GOSUE 50,51,52,53,54,5 5,56,57,58,59 65 ZX% = ZX% + 8B 66 NEXT I 67 RETURN 80 REM TRACE CARTE MEMOIRE 81 MM = FEEK (112) x 256 + PEEK (11D 82 X = 50 + (MM - 16385) / 100 83 HFPLOT X,J TO 270,u 84 VTAE 233 HTAB 12! PRINT Jt VTAB 23% HTAE 33% PRINT MM 85 RETURN 1000 REM CONSTITUTION DE STRINGS 1010 FOR J= 0 +270 49 + Z 1020 AS(T) uu 1030 FOR I 1 TO 100 1040 AS(T) = AS(T) + "AN 1050 NEXT TI 1060 IF J < 50 THEN VTAB 22:3 PRINT "“GARBAGE COLLECTION’ AUTOMA TIQUE": GOSUE 80: GOTO 1500 1070) VTAB 1 1080 IF J > 99 THEN 1110 1090 IF J / 4 = INT (J / 4) THEN PRINT FRE (0)3 VTAB 22! PRINT ““FRECO)’ TOUTES LES 4 BOUCL ES " 1100 GOSUE 80: GoTO 1500 1110 PRINT FRE (0)$ VTAB 22: PRINT ““FRECO) A CHAQUE BOUCLE , 1120 GOSUE 80 1500 NEXT J 1510 LOMEM: 16385 1520 DIM A$(101) 1530 Z = FEEK (40185)! POKE 4018 18 Pom's No 3 S,Z + 50: IF Z = = 100 THEN 1000 wet 45h Un exemple de HELLO Guy Mathieu Rien n'est aussi triste que le programme "HELLO" dont sont affligées tant de disquettes ! Un bon programme "HELLO" doit avoir deux caractéristiques : - dire de quoi il s'agit (et ceci qu'il s'agisse d'un programme sophistiqué destiné & votre publicité, ou d'une simple disquette de travail utilisée chaque jour). - permettre de faire ensuite... ce qu'il est logique de faire : un "RUN" sur un programme, ou ltobtention du catalogue. Accessoirement, il n'est pas désagréable que le programme "HELLO" soit extrémement simple a mettre au point. Eh voici un exemple. Le cadre est valable pour tous vos programmes : votre nom ou celui de votre société, un copyright, un sigle,... Dans le corps du programme, 2 instructions seulement servent 4 personnaliser. L'instruction 11 définira tous les titres : DATA X$, N,XI$, X2$,..-N[de 14 3] Dans l'texemple numéro 1 ci-dessous : X$ = "DISQUE DE TRAVAIL" N=2 XI$ = "PRESSER LA BARRE D' ESPACEMENT" X2$ = "POUR OBTENER LE CATALOGUE" Ltinstruction 300 lance la suite. Ici PRINT D$ "CATALOG": END Les choses ayant évolué, les programmes en cours de mise au point sont devenus opérationnels. Votre disquette est préte A étre utilisée (peut-étre 4 @tre commercialisée. Pourquoi pas ?). L'instruction 11 devient : DATA MON PROGRAMME, 3, PROGRAMME DESTINE, A MONTRER A TOUS, A QUEL POINT JE SAIS PROGRAMMER. L'instruction 300 devient, elle : PRINT D$ "RUN MON PROGRAMME" . Pom's No 3 19 1D$ = CHRS (4) 10 REM DATA DANS L XTE 11 DATA DISQUE DE SSEZ LA BARRE D‘ESFACEMENT,P QUR OEBTENIR LE 20 REM LECTURE DATA 21 READ T1¢ 22 L1 = LEN (T1$) 23 HT = INT (18 - Li / 2) 24 Tig =" " + T1S 25 Tos = LEFT$ (" 31 FOR IT = 1 TO NT IF NT : ‘ORDRE?NOM DE CODE DU FROGRAMME,NOMBRE DE LIGNES DE TEXTE,LIGNES DE TE IF NT = 4 THEN EC = 2 TRAVAIL, 2,PRE CATALOG uo "JLab + 3} READ T$(1)t NEXT = 2 THEN VT = 120 130 140 150 160 170 210 220 240 250 260 270 280 300 INVERSE $ FOR I = 1 TO 3 STEF 2% VTIAB IT? HTAE HT? PRINT TO $2 NEXT VTAB 23 HTAB HT? INVERSE ¢ FRINT T1s NORMAL FOR I = 1 TO NT VITAE VT? PRINT T$(T) VT = VT + EC NEXT FOR I = 1 TO 4% PRINT ¢ NEXT VTAB 20! INVERSE ¢ FRINT "CO PIC" NORMAL. PRINT "GROUPE" PRINT "EUREQUIF = tARRE D’ESFAC." FRINT "VAUCRESSON POUR CONTINUER" IF PEEK ¢( ~ 16384) =< = 127 THEN 280 HOME $ FRINT D¢"CATALOG" XPOSITION SOUBIRON S.A. En plein coeur de TOULOUSE cest: - 100 m? d’exposition spécialisée — Une équipe de techni a votre service pour Etudes Programmes Mise en place Formation Service aprés-vente ‘SOUBIRON S.A. BOUTIQUE MICRO INFORMATIQUE LIBRAIRIE BD 107SF agai Tél. : (61) 21.64.39 - 21.04.57 . Telex LPS INF 521075 F 9, rue Kennedy . 31000 TOULOUSE 5 ve DE CONTRAT D’ENTRETIEN 20 Pom's No 3 S.A.V. DEPANNAGE RAP! Analyse du directory Pascal (II) Michel Crimont A. Présentation générale Nous avons vu dans le précédent numéro comment lire directement le répertoire du disque Pascal sans passer par le "FILER". Nous allons voir maintenant comment tirer parti de ces procédures pour placer automatiquement dans un fichier unique tous les répertoires de nos disques Pascal, ce qui permettra une recherche beaucoup plus aisée; l'article du prochain numéro montrera en complément comment réaliser les procédures de sélection dans le catalogue. Les types et variables précédemment définis restent valables, ainsi que les procédures et fonctions, excepté ECRIREP et LIREREP que nous n'utiliserons pas ici. Il convient d'ajouter le type ELEMENT qui est une ligne du catalogue définie comme un RECORD comprenant GENRE : deux caractéres servant A définir l'utilisation et le type de programme; par exemple J : Jeux, G : Graphisme, U: Utilitaire, M : Mathématiques -pour l'utilisation- et P : Programme, L : Librairie, U: Unit, etc. - pour le type -. NOMFILE : nom du fichier. NOMDISK : nom du disque comportant le fichier. NUMBOITE : numéro de la boite contenant le disque. DATEFILE : date de création du fichier. Les ELEMENTS sont placés dans un fichier nommé GARDE. L'item NUMBOITE de la fiche zéro conserve le nombre de fiches du fichier. PAPIER : nom du fichier d'impression. QUIT : Booléen d'arrét du programme. IMP : impression si Vrai. NUMCAT : nombre de fiches du catalogue. NUMLINE : numéro de la ligne courante sur 1'écran. Afin de rendre le programme trés fiable, il est fait usage de diverses procédures filtrant tout ce qui est entré par l'utilisateur au clavier; par ailleurs, quelques procédures facilitent les affichages d'écran. C'est ainsi que MESSAGE : affiche une chaine de caractéres A la ligne Y et efface la fin de la ligne. ALARME : efface l'écran, sonne, affiche un message d'erreur et attend un [Return]. PRENCHAINE et ENTIER : permettent de prendre au clavier en toute sécurité et avec correction éventuelle par la fléche arriére une chaine de caractéres ou un entier; enfin un [Return] A la place d'une entrée clavier renvoie la chaine ou l'entier donné en Variable, ce qui permet de garder une valeur par défaut. TRAIT et TRAITFIN : permettent l'ouverture et la fermeture du fichier impression avec édition d'un trait. CONTINUE : permet la lecture d'un écran et attend un [Return] pour afficher la suite. ZEROELEM : donne une valeur par défaut Aa Elément. DECODATE ; renvoie une chaine de caractéres standard correspondant au type Pom's No 3 21 dtentrée "Date". AFFICHE : place A l'écran une ligne du catalogue avec le numéro de la fiche. IMPRIME : imprime une ligne du catalogue. RAPPEL : rappelle a la fin du programme qu'il faut replacer le disque systéme dans le lecteur 1 [£4:]. TITRE : affiche ou imprime les tétes de colonne. Le fonctionnement du programme est le suivant : une fois le programme chargé apparaissent 4 options E(nregistrer, L(ire, M(odifier, F(in. Si l'on demande l'enregistrement, le disque dont le répertoire sera enregistré dans le catalogue sera placé dans le lecteur 1 [£4:], le disque contenant le catalogue général dans le lecteur 2 [£5:]. Afin d'éviter toute erreur, le disque du lecteur 2 devra porter un nom particulier, ici "CARNET", le plus simple étant de prendre un disque Pascal formaté, de lui donner le nom de "CARNET" et de placer dessus CATALOG.Code, si bien qu'il suffira lorsqu'on voudra ajouter un répertoire au catalogue de faire eX(ecute £5:CATALOG, le disque "CARNET" contenant ainsi A la fois le programme et le catalogue général. La Lecture ne permet aujourd'hui que la lecture du catalogue général. Elle sera perfectionnée, pour permettre toutes les sélections imaginables, dans le prochain numéro. La Modification permet de modifier les éléments d'une fiche; cette fiche apparait A l'écran. Si un item ne doit pas étre modifié, il suffit de taper le [Return] pour garder la méme valeur, sinon on entre d'autres données. B. Les procédures. 1. OUVERTURE ouvre le fichier GARDE s'il existe et attribue 4 NUMCAT sa valeur (nombre de fiches du catalogue). Si le fichier n'existe pas, il est créé et la premiére fiche enregistrée (fiche non utilisée en dehors de NUMBOITE qui contient NUMCAT). 2. REMPLIR est chargé de constituer une fiche 4 partir du répertoire du disque du £4: et des données complémentaires entrées au clavier. Il faut d'abord lire le répertoire avec LIREREP (4). Si ce répertoire ne peut étre lu, la procédure envoit un message d'erreur. S'il est lu, on prépare une fiche vierge avec ZEROELEM, puis avec ENTETE on place le nom du disque et l'on demande le numéro de la boite ow se range ce disque. Ces valeurs sont ensuite gardées dans IM pour tous les fichiers de ce disque, puis on fait appel a la procédure FILES qui propose un par un les fichiers et demande s'il faut les inclure dans le catalogue (ce qui permet d'inclure seulement les nouveaux fichiers d'un disque sans reprendre les anciens déja enregistrés). Si l'on garde un fichier, on garde son nom, sa date et l'on demande son type et son genre, puis on l'enregistre en place et l'on avance NUMCAT de 1. Quand le disque ne posséde plus d'autre fichier, on ferme le catalogue pour se mettre a l'abri d'une coupure de courant ou d'un incident et on l'ouvre A nouveau. 3. ENREGISTRE appelle simplement de facon itérative la procédure REMPLIR et donne les messages d'écran nécessaires pour les manipulations. 4. LIRE et TRI permettent simplement d'éditer le catalogue soit A l'écran, soit sur 1'imprimante; 22 Pom's No 3 ces deux procédures seront par la suite développées pour permettre des sélections dans le catalogue. 5. MODIFIE affiche un numéro quelconque du catalogue qu'il faudra done noter auparavant par une lecture et permet de modifier un item quelconque dans le cas par exemple ot l'on change un disque de boite ou un fichier de disque, ou encore si un programme a été transformé en UNIT. C. Le programme principal. Le programme principal est trés simple PRINFO : attribue les caractéres de contréle d'écran. OUVERTURE : contrédle l'existence du disque "CARNET" dans le lecteur 2 et ouvre ou erée le fichier "DONNEES". Fnsuite, affichage du titre du programme et du nombre de lignes du catalogue, et attente des options. A la fin, mise A jour de NUMCAT sur la fiche zéro de GARDE - fermeture du fichier et rappel d'insérer le disque systéme au cas ol l'on aurait placé dans le lecteur 1 un autre disque. Quelques perfectionnements sont possibles au gré des lecteurs : 1. Il est possible de placer dans le lecteur 2 un-disque simplement formaté sans nom particulier, auquel cas, lors de l'ouverture, le programme demande un nom pour ce disque (avec PRENCHAINE et 7 caractéres maximum); grace Aa la procédure ECRIREP, ce nom pourra étre placé sur le répertoire du disque du lecteur 2. Le nom peut également €tre préalablement déclaré en constante dans le programme, mais attention si vous faites démarrer accidentellement votre programme avec un disque quelconque dans le lecteur 2 ! 2. A la fin du programme, il est possible d'essayer d'ouvrir un fichier systéme du lecteur 1. Si IORESULT=0, le disque systéme est dans le lecteur 1, sinon l'on passe & RAPPEL. IBRAIRIE LA NACELLE INFORMATIQUE e ELECTRONIQUE AUTOMATISME e MICROPROCESSEUR TOUS OUVRAGES ET ABONNEMENTS FRANCAIS ET ETRANGERS Tous les ouvrages francais ou étrangers signalés dans cette revue peuvent étre obtenus ou commandés a La Nacelle 2, rue Campagne-Premiére 75014 PARIS - Tél. 322 56 46 Métro Raspail - Parking a la hauteur du 120 bd du Montparnasse ouvert tous les jours lundi compris, sans interruption de 9 h 30 4 18 h 50, samedi fermeture 417 h 50. Pom's No 3 23 PROGRAM CATALOG; CONST MAXFILE =773 TYPE CRTCOMMAND =(EFEOS,EFEOL, INVERSE »NORMAL ,DROIT,GAUCHE, TETE) $ CHOIDECA =SET OF CHAR} DATE =PACKED RECORD MOIS 31..123 JOUR 31..313 AN $14+99 END} DISQUE =RECORD A SARRAYCO..2] OF INTEGER} NOMDISQUE $STRINGL713 B tINTEGER} NERFICHE INTEGER} c SINTEGER$ DATEDISQUE $DATE$ D,E SINTEGER END} FICHIER =RECORD DEBFICHIER : INTEGER} FINFICHIER $INTEGER} TYPEFICHIER? 0..73 NOMFICHIER {STRINGCIS]3 DERNELOC S INTEGER} DATEFICHIER $DATE END} ELEMENT =RECORD GENRE tARRAYC1..23 OF CHAR} NOMFILE SSTRINGCASI3 NOMDISK SSTRINGL7I3 NUMBOITE SINTEGER$ DATEFILE SDATE$ END} VAR REPERTOIRE +RECORD VOL SDISQUE}$ CATALOG SARRAYC1.+MAXFILE] OF FICHIER END} NUMLECTEUR s INTEGER} HOME,BS,EFL,EFE,SON,INV,NORM,CRi CHAR} CH,COM 3S CHAR} FAPIER 3 TEXTS GARDE SFILE OF ELEMENT} NUMCAT ,NUMLIGNE,I,J,K,L¢ INTEGERS LM SELEMENT 3 QUIT, IMF SBOOLEAN} OK Dx) (xX PROCEDURES DIVERSES x) ORB) FUNCTION LIREREF (NUM? INTEGER) {BOOLEAN} BEGIN (x$I~-x) UNITREAD (NUM, REPERTOIRE ,SIZEOF (REPERTOIRE) ,2)$ LIREREP $=IORESULT=0 CxS T+) END} PROCEDURE FRINFO}$ BEGIN 24 Pom's No 3 HOME ?=CHR(12) 3 EFL%=CHR(29) 3 BS %=CHR(8)}3 CR %=CHR(13)$ SON 3=CHR(7)$ INV?=CHR(18)3 NORM?=CHR(20)$ EFE?=CHR(11) END} PROCEDURE FRENRETURN} VAR SORT {CHAR} BEGIN REPEAT READ (KEYEOARD , SORT) UNTIL EOLN( KEYBOARD) END} FUNCTION FRENCAR(BONSET $CHOIDECA) 3 CHAR} VAR CH 3CHAR$ BON ‘BOOLEAN; BEGIN REPEAT READ (KEYBOARD ,CH) $ IF EQLN(KEYBOARD) THEN CH?=CR} BON?=CH IN BONSET}3 IF NOT BON THEN WRITE(SON) ELSE IF CH IN CL’ ’4.°4/] THEN WRITE(CH) UNTIL BON} PRENCAR? =CH END} FUNCTION OULT$BOOLEAN}3 BEGIN OUI?=FRENCAR(DC‘O’,’N‘]) IN £C’O79 END} PROCEDURE MESSAGE (Y3INTEGER$S$STRING) 3 BEGIN GOTOXY(0,Y)$WRITE(S,EFL) END} PROCEDURE ALARME(SiSTRING) $ BEGIN GOTOXY (0,1) $WRITE(SON,EFB) 3 MESSAGE (10,S)3 MESSAGE (12,’FAITES <RETURN> ’)3 PRENRETURN END} PROCEDURE F'RENCHAINE (LONGMAX! INTEGER$BONSET?CHOIDECA;3VAR SiSTRING) $ VAR Si SSTRINGC1II3 CONT $STRING; BEGIN Slits’ ¢ CONT? =’ REPEAT IF LENGTH(CONT)=0 THEN S1011%=PRENCAR( BONSET+CCRI) ELSE IF LENGTH(CONT)=LONGMAX THEN S10113=FRENCAR(CCR,EBS1) ELSE S1C1]3=PRENCAR(BONSET+CCR,ES1)$ IF $101] IN BONSET THEN CONT?=CONCAT(CONT,S1) ELSE IF S1C1]=6S THEN BEGIN WRITE(ES,’ ’,BS)} DELETE (CONT,LENGTH(CONT),1) END} UNTIL S101]=CR3 TIF LENGTH(CONT)<20 THEN S3=CONT $ "3 Pom's No 3 25 ELSE WRITE(S) END} FROCEDURE ENTIER(LONGMAXSINTEGER$VAR SS INTEGER) $ VAR S1 SSTRINGC143 I SINTEGER} CONT {STRING} OKSET $CHOIDECA$; BEGIN OKSET?=0/0/../°9/T3S12=" “$CONTI=" 73 REPEAT IF LENGTH(CONT)=0 THEN S10113=FRENCAR(OKSET+CCRI) ELSE IF LENGTH(CONT)=LONGMAX THEN $1011$=FRENCAR(CCR,ES1) ELSE S101]3=PRENCAR(OKSET+CCR,EBSI) } IF S$1£11 IN OKSET THEN CONT?=CONCAT(CONT,S1) ELSE IF S1f1 S THEN BEGIN WRITE(ES,’ ’,ES)3 DELETE (CONT,LENGTH(CONT) ,1) END}; UNTIL S$1011=CR} IF LENGTH(CONT)<>0 THEN BEGIN $3=03 FOR Ii=1 TO LENGTH(CONT) DO BEGIN $3=Sx103S%=S+(ORD(CONTECII)-ORD('0’)) END} . END ELSE WRITE(S) END} PROCEDURE TRAIT} VAR T SINTEGER} BEGIN REWRITE (FAPIER, “PRINTERS /)$ FOR Ii=1 TO 79 DO WRITE(PAFIER, ’=’)3 WRITELN(FAPIER) END $ PROCEDURE TRAITFIN; VAR IS INTEGER} BEGIN WRITELN(FAFIER) } FOR It=1 TO 79 DO WRITECFAFPIER, ‘=’ )3 FOR Is=1 TO 6 DO WRITELN(FAFIER) $ CLOSE (PAPIER) } IMP 3=FALSE END} FROCEDURE CONTINU; BEGIN . MESSAGE(22,’FPOUR CONTINUER TAPEZ <RETURN> ’)3 FRENRETURN$ NUMLIGNE $=63 GOTOXY (0,5) $WRITE(EFB) END} Ok Ex) (x FROCEDURES GENERALES SFECIFIQUES DE MASTER CATALOGUE x) OEx ) PROCEDURE ZEROELEM(VAR Li ELEMENT); BEGIN WITH L DO Pom's No 3 BEGIN GENRECII$=/273 GENREC2]3 $ NOMFILE t=/°3 NOMDISK %=’'3 NUMBOITE 3 =03 WITH DATEFILE DO BEGIN MOIS3=13 JOURS =13AN=1 END END END} PROCEDURE DECODATE(DT:DATE$VAR STDATES STRING) 3 VAR ST {STRING} PROCEDURE FAITSTRING(ISINTEGER}VAR SiSTRING) 3 BEGIN gels STR(I,S)$ IF LENGTH(S)=1 THEN St=CONCAT(‘0’,S) END} BEGIN STDATES=/73STt=/ "3 WITH DT DO BEGIN FAITSTRING (JOUR, ST) 3 STDATE$=CONCAT(STDATE,ST,’/7)$ FAITSTRING(MOIS,ST) 3 STDATE$=CONCAT(STDATE,ST,’/’)3 FAITSTRING(AN,ST)} STDATE$=CONCAT(STDATE,ST) END END; PROCEDURE AFFICHE (INDEX? INTEGER3 VAR ELMS ELEMENT) $ VAR S tSTRING} BEGIN IF NUMLIGNE=21 THEN CONTINU} GOTOXY (0,NUMLIGNE ) $ WITH ELM DO BEGIN WRITE (INDEX? 4,GENREC11!$2,GENREC21],NOMFILE?16,NOMDISK!8,NUMEOITE: 4) $ DECODATE (DATEFILE,S) ;WRITE(S39) END; NUML.IGNE $ =NUMLIGNE+1 END} PROCEDURE IMPRIME(INDEX?INTEGER$VAR ELMS ELEMENT) $3 VAR S tSTRING} BEGIN WITH ELM DO BEGIN WRITE (PFAFIER, INDEX? 4,GENREC1132,GENREC21,NOMFILE$16,NOMDISK38,NUMBOITE? 4) 3 DECODATE (DATEFILE,S) ;WRITELN(PAFIER, S29) END END}; PROCEDURE RAFFEL}$ BEGIN GOTOXY (0,3) $WRITE(EFB) 3 MESSAGE (10,’LE CATALOGUE A ETE FLACE DANS LE #53/')3 WRITE CINV,SON) $ MESSAGE (12,’REMETTRE LE DISQUE SYSTEME DANS #43/)3 Pom's No 3 27 28 WRITE (NORM) 3 MESSAGE (14,’FAITES RETURN? ’) $F RENRETURN END} PROCEDURE TITRE} VAR StSTRING} BEGIN t=’ ENR GT NOM DISQUE BT DATE’$ IF IMF THEN WRITELN(FAFIER,S) ELSE MESSAGE(4,S) END} OK Ex) (xX PROCEDURES FROPRES AU PROGRAMME CATALOGUE x) OxEX ) OOOO OOOO OOOO OOOO OK OKO COK KK ) (x* QOUVER TURE *) (x OUVRE LE CATALOGUE OU LE CRE& JINON x) GOO OOOO OOOO OOOO KOK OK KK KOK) FROCEDURE OUVERTURE$ VAR EON sBOOLEAN$ BEGIN REPEAT BON? =FALSE}$ (K$I~* ) RESET (GARDE, ‘CARNET!DONNEES’ )3 IF IORESULT=0 THEN BEGIN NUMCAT?=GARDE*»NUMBOILTE 3 BON?=TRUE END ELSE BEGIN REWRITE (GARDE, “CARNET 3 DONNEES’ ) 3 ZEROELEM(GARDE*) $ GARDE’ .NUMBOITE $=1 $NUMCAT3=13 PUT (GARDE) $ CLOSE (GARDE ,LOCK) 3 RESET (GARDE, ‘CARNETDONNEES“ ) $ BON? =(IORESULT=0) END} IF NOT(CEON) THEN ALARME( ‘PLACER ‘’CARNET’’ DANS LE #537) UNTIL EON CxS T+ ) END} OOOO OOOO OOO OOO OOO OOOO KK KKK) (xX REMPLIR *) Ox TRANSFERE LE REFERTOIRE DANS LE CATALOGUE x) OOOO OOOO OO OOOO COOK KK 1COCCCKCKOK KKK) PROCEDURE REMFPLIR} FROCEDURE ENTETE$ 3IN L3=LENGTH(REPERTOIRE. VOL «NOMDISQUE) $ IF L>0 THEN BEGIN LM. NOMDISK$=REPERTOIRE «VOL »NOMDISQUE} MESSAGE(7, ‘NOM DU DISQUE 3 7) SWRITE(LM.«NOMDISK) } Lt=03 Pom's No 3 MESSAGE(8,’NUMERO DE LA BOITE ? ’)$ENTIER(4,LM.NUMBOLTE) $ END END} FROCEDURE FILES} VAR TEMF SELEMENT}3 PROCEDURE ENREGISTRE(L3ELEMENT) $ BEGIN (x$I-x) SEEK (GARDE ,NUMCAT ) 3 GARDE“? =L $ PUT (GARDE ) $ NUMCAT $=NUMCAT+13 IF IORESULT THEN BEGIN ALARME (’ERREUR A LA COFIE..+’)3 EXIT(FILES) END (x$I+x) END} BEGIN IF REPERTOIRE.VOL.NERFICHE>0 THEN BEGIN FOR Ii=1 TO REPERTOIRE.VOL.NERFICHE DO BEGIN TEMP 3=LM} WITH REFERTOIRE.CATALOGELII DO BEGIN GOTOXY (0,9) ;WRITECEFE) $ MESSAGE (12,’INCLURE LE FICHIER ’)$WRITE(NOMFICHIER,’ (O/N) ? /)3 IF OUI THEN BEGIN TEMF.NOMFILE %=NOMFICHIER} TEMP .DATEFILE $=DATEFICHIER} MESSAGE (13, “TYPE CAseY) ? 703 MESSAGE (16, ‘GENRE CAaeY) 2? 4)3 ENREGISTRE (TEMP) END END} END END ELSE ALARME(’FPAS DE FICHIER !’) END} RENCAR(E‘A‘..°Y41)3 RENCAR(DL ‘A’. .°Y7I)3 TEMF.GENREC11: TEMF.GENREC2] SEGIN(X REMFPLIR x) IF LIREREF (4) THEN BEGIN ZEROELEM(LM) $ ENTETE$ FILES} CLOSE (GARDE ,LOCK) ;RESET(GARDE, “CARNET?DONNEES’ ) END ELSE ALARME(’ERREUR LECTEUR 1.’) IND} *"ROCEDURE ENREGISTRE} 3EGIN QUIT 3=FALSE}$ WHILE NOT QUIT DO Pom's No 3 29 BEGIN GOTOXY (0,2) $WRITE(EFE) 3 MESSAGE (3, ‘PLACER LA DISQUETTE A INCLURE DANS’) 3 MESSAGE (4,’LE CATALOGUE DANS LE LECTEUR 1 (#4%)')3 MESSAGE (46,’QUAND TOUT EST FRET, FAITES =RETURN>’ ) $}PRENRETURN} GOTOXY (0,5) ;WRITECEFE) 3 REMPLIR} MESSAGE (22,’CONTINUER ? (O/N) 7)3 QUIT3=NOT OUT END END} COO OOOO OOOO OOK CCK OK KK) (KLIRE & TRI *) (x PROCEDURES A AMEL.IORER *) OOOO OOOO OOOO OOK IOI KOK KKK KOK KOK KD, FROCEDURE TRI} VAR I SINTEGER} BEGIN GOTOXY (0,3); WRITE CEFE) § MESSAGE (3, ’ EDITION DU CATALOGUE GENERAL’) 3 IF IMF THEN BEGIN MESSAGE (10,7 **XXXX SUR LL’ OIMPRIMANTE XXxxx’) 3 WRITELN(FAPIER, “EDITION DU CATALOGUE GENERAL‘ 255) ;WRITELN(PAFPIER) END} TITRE} FOR Ii#1 TO NUMCAT~1 DO BEGIN GET (GARDE ) $ IF IMP THEN IMPRIME(I,GARDE*) ELSE AFFICHE(I,GARDE*) END} MESSAGE (22,’C’’EST TERMINE, TAPEZ <RETURN® /) }PRENRETURN END} PROCEDURE LIRE$ VAR CHOIX CHAR} BEGIN QUIT? =FALSE}$ GOTOXY (0,2) $WRITECEFE) $ MESSAGE(3,’LE CATALOGUE DOIT ETRE DANS LE DRIVE 2’)3 WHILE NOT QUIT DO BEGIN GOTOXY (0,4) $WRITE(EFE) } NUMLIGNE?=63 MESSAGE (4, EDITION COMPLETE’ )3 MESSAGE (6, ’VOULEZ~VOUS IMPRIMER ? ’) 3 IMF? =OUT} IF IMF THEN TRAIT3 SEEK(GARDE,1)3 TRI} IF IMF THEN TRAITFIN} MESSAGE (22,’UNE AUTRE RECHERCHE (O/N) ? ’)$QUIT$=NOT OUT END END} OkAEX ) OOOO OOOO OOOO KKK CKO) (kK MODITIFITIE x) (x MISE A JOUR D’UN NUMERO DU CATALOGUEx) OO OOOOOIOOIOIOIOOIO OOK KKK KCK KKK KD 30 Pom's No 3 PROCEDURE MODIFIE}3 VAR N TINTEGER} CH {CHAR} BEGIN GOTOXY (0,4) ;WRITECEFE) 3N3=03 REPEAT MESSAGE (4,’NUMERO DU CATALOGUE A MODIFIER?’ )}$ ENTIER(4,N)$ UNTIL (N= NUMCAT) 3 IF N=0 THEN EXIT(MODIFIE)3 SEEK (GARDE ,N) $GET (GARDE) 3LM3=GARDE $ NUMLIGNE $=63 TITRE $AFFICHE(N,LM) } MESSAGE (8,’MODIFIEZ OU “<RETURN=/) $ MESSAGE (9,’TYPE $’)$CHi=PRENCAR(L ‘A’ ++ ’Y’,CRI)$ IF(CH2>CR) THEN LM.GENREC113=CH ELSE BEGIN GOTOXY(7,9) $WRITE(LM.GENREC1I) END} MESSAGE (10, ‘GENRE!’ ) $CH3=FRENCAR(ED‘A’..’Y’,CRID3 IF (CH2>CR) THEN LM.GENREC213=CH ELSE BEGIN GOTOXY(7,10) ;WRITE(LM.GENREC2]) END} MESSAGE (11,’NOM DU FICHIER 33 Cx$V—% ) PRENCHAINE (15, (0°A%.+4°Z’ 5/0/46" MESSAGE(12,’NOM DU DISQUE : PRENCHAINE(7,(0/A%e44Z' 4/0/0479 CKSU4K) MESSAGE (13,’NUMERO DE LA BOITE?’)}$ ENTIER(4,LM.NUMBOITE ) $ GARDE“? =} SEEK (GARDE ,N) }FUT (GARDE) 3 CLOSE (GARDE,LOCK) ;RESET (GARDE, ‘CARNET3DONNEES” ) $ END} COO OOOOOOOOOOOOOOOX PROGRAMME FRIOINCT FAL 300000 KK ) BEGIN 47677) LM «NOMFILE) 3 ; ' +77),LM+NOMDISK) 3 PRINFO$ OQUVERTURE $ REPEAT PAGE (OUTPUT) ;WRITE CINY) MESSAGE (0, ’ xxx SUPER CATALOGUE *xx’)3 WRITE (NORM) $ MESSAGE (5S, ’ “YSWRITEC’IL Y A =’,NUMCAT~1,’> TITRES DISPONIBLES. ’)3 MESSAGE (22, ’E(NREGISTRER, L(IRE, MCODIFIER, FCIN ‘)$ COMS=FRENCAR(C/E’,/L4,°M’, SF 4ID$ CASE COM OF “E’ SENREGISTRE} ‘LSLIRE$ ‘M’ SMODIFIE END} UNTIL. COM=’F 3 SEEK (GARDE, 0) }GARDE*. NUMBOITE $ =NUMCAT $ FUT (GARDE) $ CLOSE (GARDE ,LOCK) 3 RAPFEL END. Pom's No 3 31 Notions de base Gérard Michel Depuis la parution du premier numéro de POM'S, de nombreux lecteurs ont pris contact avec la rédaction pour exprimer leur embarras face au décalage (provisoire .) existant parfois entre le niveau de leurs connaissances et celui de certains articles publiés dans la revue. Fort logiquement, ils ont aussi formulé un souhait trouver dans POM'S quelques informations de base susceptibles de les guider dans 1'exploration de leur APPLE et de faciliter l'exploitation des articles "techniques". Cette revendication est légitime ! S'étant donné pour objectif d'informer, si possible, TOUS les utilisateurs d'APPLE, votre revue ne pouvait y rester insensible. Aussi tenterons nous désormais d'assurer une rubrique destinée a répondre aux questions fondamentales posées par les lecteurs dans cette optique. Nous prions simplement les "experts" de bien vouloir sauter allégrement ces quelques lignes, témoignages d'une époque pour eux révolue Pour ce coup d'essai, nous traiterons des problémes touchant A la saisie des programmes en langage-machine et A la manipulation des fichiers correspondants. Vous avez été nombreux, en effet, A regretter de ne pouvoir utiliser les programmes de ce type listés dans la revue, faute de pouvoir les rentrer en machine. Pour clarifier la suite de l'exposé, il peut étre utile de rappeler ici quelques notions (trés élémentaires) concernant le systéme numérique 4 base 16 (le fameux HEXAdécimal !). fr fait, il nous suffit de savoir que 1) Il comporte 16 'chiffres' : 0,1,..9,A(10),B(11),C(12),D(13), B( 14), F(15). 2) WXYZ en Hexa est égal a : (W*4096)+(X*256)+(Y*16)+Z en Décimal (exemple : 927C en Hexa égale 37500 en Décimal). 3) A l'inverse, 37500 en Décimal vaut en Hexa : - INT(37500/4096) = 9 « INT(( 37500 - (9*4096))/256) = 2 - INT(( 37500 - (9*4096) - (2*256))/16) = 7 37500 - (9*4096) - (2*256) - (7*16) = 12, soit C 4) Par convention, les nombres HEXA sont précédés d'un "$". 1. Saisie d'un programme en langage-machine (codes hexadécimaux). Prenons l'exemple du petit programme présenté par J.-L. Meillaud. La marche a suivre se décompose ainsi a) Sortir du BASIC pour rentrer dans le moniteur. Pour cela, tapez CALL-151 [Return]. Une "*" apparait, vous étes en mode moniteur. Attention, cet animal étrange ne comprend que 1'Hexadécimal ! b) Pour saisir les instructions, la séquence est "Adresse (en HEXA, bien sar!)" puis ":" puis "codes hexadécimaux des instructions". Vous taperez ainsi 1848: C9 81 FO 01 60 AD 00 CO [Return] 1850: 10 FB... 1860: AQ DF ......... 60 [Return] 32 Pom's No 3 VORDINATEUR PERSONNEL DE M* LE DIRECTEUR DES VENTES. Apple, c'est d'abord un nouveau concept. Celui de la relation individuelle et directe entre homme et sa machine. Un concept qui ouvre une troisiéme voie entre rien du tout et l'informatique de millionnaire. Apple, c'est un outil personnel aussi facile & utiliser qu'une voi- ture, aussi léger et peu encombrant qu'une simple machine a écrire et aussi peu cotteux qu'une photo- copieuse. Un outil qui vous simplifie la vie en diminuant la paperasse qui vous encombre, efficace et rapide das qu'une décision s'impose. Apple vous aide & répondre & des questions de type “qu'arriverait-il si?”, traite vos problémes de ges- tion |planification, prévisions, budget et met en forme et imprime vos lettres et vos rapports. Apple est un outil versatile qui fonctionne sur une vaste gamme de pro- grammes que vous soyez avocat ou médecin, respon- sable des ventes ou du marketing, comptable ou financier. 4 @erppice L’ordinateur personnel Intéressé, un peu sceptique ou dubitatif... Lorsque votre revendeur Apple local aura résolu devant vous quelques-uns de vos problémes, ou vous aura fait utiliser vous-méme un programme de planification ou une analyse sous forme de graphique couleur, vous aurez compris l'intérét d'avoir & portée de la main la puissance de l'ordinateur personnel. Et vous commencerez 4 penser 4 votre Apple. I Pour obtenir une information compléte sur les systtmes 1 | ordinateur Apple II et Apple III, veuillez s’il vous plait | J fetourner ce coupon a : SEEDRIN SARL 1 J Avenue de l’Océanie, Z.1. de Courtabceuf, 91940 Les Ulis | Nom ——__. swam fj I Société I 1 Fonction : at H Adresse i nA | Téléphone __ I EXNT Si vous voulez lister votre programme, tapez 1848.1867 [Return] (de facon générale, adresse début.adresse fin). ce) Pour retourner au BASIC, tapez 3D0G [Return]. Le "prompt" du BASIC réapparait. 2. Sauvegarde d'un programme sur disquette aprés retour au BASIC. La syntaxe est alors la suivante : - BSAVE NOM, A$X,L$Y ot X désigne l'adresse de départ du programme en HEXA, Y la longueur du programme (nombre d'octets) exprimée en HEXA, et NOM tout simplement le nom que vous désirez donner au programme. . ou encore BSAVE NOM, AX, LY o& X et Y sont exprimés en décimal. L'adresse de départ ne pose pas de probléme; seule la longueur réclame quelque attention. Si vous ne voulez pas vous livrer aux joies de l'arithmétique hexadécimale, le plus simple est encore de raisonner en décimal. Ainsi, dans notre exemple (trivial) - Adresse de départ : 1848 HEXA = 6216 en décimal . Adresse de fin : 1867 HEXA = 6247 en décimal . Longueur : 6247-6216+1=32 (vous pouvez aussi compter les octets ligne 4 ligne ---). Ntoubliez pas de rajouter un a la différence : c'est le fameux probléme des intervalles entre les arbres... . Sauvegarde : BSAVE NOM, A6216, L32 3. Chargement d'un programme & partir de la disquette. Il vous suffit de taper BLOAD NOM. L'adresse de départ et la longueur ont été mémorisées au moment de la sauvegarde. Si vous désirez les retrouver, tapez, aprés le BLOAD : - Pour l'adresse : PRINT PEEK( 43634) + 256 * PEEK(43635) .- Pour la longueur : PRINT PEEK( 43616) + 256 * PEEK( 43617) Les deux valeurs vous seront données en décimal. De méme, BRUN NOM permet de charger le programme NOM en mémoire et de lancer son exécution (comme le RUN du BASIC). Une fois le programme chargé, si vous voulez vérifiez les codes hexadécimaux, entrez dans le moniteur et tapez, comme ci-dessus, "adresse début.adresse fin" (adresses hexadécimales toujours) . Enfin, supposons que vous ayez sur disquette un programme NOM en langage-machine (routine de nettoyage mémoire, routine de tri ...), commengant Aa l'adresse 37000 (en décimal), et que vous souhaitiez l'utiliser dans le cours d'un programme BASIC. Les choses pourraient se présenter ainsi 10 D$=CHR$(4) 20 HIMEM: 36500 (pour protéger la routine en langage-machine) 30 PRINT D$"BLOAD NOM, S6, D1" 1000 CALL 37000 (exécution de la routine en langage-machine) Suite du programme BASIC 34 Pom's No 3 Conversion Pascal/BASIC/Pascal Gilles Mauffrey 1. Principes généraux. Tl était utile de pouvoir regrouper sur une méme disquette pour les lecteurs de Pom's des programmes d'origines diverses : Pascal ou BASIC. Le programme présenté ici répond A cet objectif. Avant de décrire briévement le programme, nous allons mettre en évidence les principales différences entre le DOS 3.3 et le Pascal Operating System (P.0.S.). Tout d'abord le DOS raisonne en piste et secteur, tandis que le POS ne connait théoriquement que les blocs de 512 octets. Un bloc correspond en fait a deux secteurs consécutifs. De plus la sectorisation soft des pistes est différente (voir "Beneath Apple DOS"): - pour le DOS 3.3, les secteurs sont numérotés 0, 13, 11, 9, 7, 5, 3, 1, 14, 12, 10, 8, 6, 4, 2, 15. - pour le POS, la numérotation est 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13% 156 Toutefois, le DOS 3.3 permet de lire une disquette Pascal, puisque la table de sectorisation se trouve aux adresses $BFB8 et suivantes. L'implantation des "directorys" est également différente. Sur une disquette Pascal, le directory commence au bloc 2 et se termine au bloc 6; chaque enregistrement (fichier ou en-téte) occupant 26 octets. Pour le DOS 3.3 le directory débute en piste 17 secteur 0, chaque fichier occupant 35 octets. Une autre différence fondamentale concerne l'implémentation des fichiers eux- mémes. Eh DOS 3.3, ies fichiers ne sont pas nécessairement sur des secteurs consécutifs, tandis que le POS écrit les fichiers sur des blocs consécutifs, ce qui simplifie beaucoup la lecture de ces fichiers en assembleur. 2. Description des enregistrements "fichier" du directory Pascal. Comme il a été dit plus haut, chaque enregistrement du directory comprend 26 octets; nous ne décrirons ici que les enregistrements concernant les fichiers. Traduisant la description de M. Crimont (Pom's 2), nous obtenons: - Bloc de début de fichier : 2 octets (exemple bloc 6 : 06 00) - Bloc de "fin" de fichier : 2 octets (en fait c'est le bloc de début du fichier suivant) - Type du fichier : 2 octets - Nom du fichier :16 octets (1 octet pour la longueur du nom et 15 octets pour le nom) - Nombre d'octets inutilisés dans le dernier bloc: 2 octets (toujours 00 02 car ce bloc est le début du fichier suivant) - Date de création du fichier : 3 octets (1 octet pour la longueur 02 et 2 octets pour la date elle-méme 01 02) année , jour jmois ‘iy 7 bits’ pour l'année, 5 pour le jour et 4 pour le mois SL 02 01 Pom's No 3 35 3. Déroulement du programme. Pour simplifier l'écriture du fichier sur la disquette BASIC, nous avons utilisé la commande BSAVE du DOS. Ceci a pour inconvénient de limiter la longueur des fichiers transportables par ce programme; cependant ceci ne s'est pas avéré génant pour l'utilisation que nous en avons faite. Aprés avoir demandé le nom du fichier Pascal a4 transférer et le nom du fichier "BASIC" transféré, le programme vérifie l'existence du fichier sur la disquette Pascal; en cas de fichier inexistant, le programme s'arréte. Une fois trouvé, le fichier est chargé en mémoire a partir de l'adresse $2000, puis chargé sur la disquette "BASIC". Quatre sous-programmes sont utilisés : - Le sous-programme PRERWT est appelé avant chaque appel a RWTS, pour initialiser la table. - Le sous-programme TABPS charge la sectorisation Pascal. - Le sous-programme TABDO charge la sectorisation DOS. - Le sous-programme CALPSE transforme le numéro de bloc en numéros de piste et de secteur. Nous n'analyserons pas ici le programme permettant de transférer le fichier "BASIC" sur une disquette Pascal dans la mesure ot la démarche suivie est pratiquement la méme. Les lecteurs courageux pourront cependant l'amélorier en permettant d'introduire la date, puisque ce programme prend la date du dernier fichier existant sur la disquette Pascal, ce qui peut poser des problémes en cas de diquette vierge. SOURCE FILE: FASCEAS coeoe NEXT OBJECT FILE NAME IS FASCEAS.OBJ0 09003 1 ORG $900 FDSE3 2 CROUT EQU $FD8E x RETURN? FDED? 3 COUT EQU $FDED x ECRITURE ECRAN FD353 4 RDCHAR EQU $FD35 x LECTURE CLAVIER FC9C3 S CLREOL EQU $FC9C FCS83 6 HOME EQU) $FC58 O3F 23 7 RESET EQU $3F2 09003 8 x 09003 9 * PARAMETRES FOUR RWTS 09003 10 x 0000: 11 DSECT 00003 12 RFLIOB DS 1 0001: 13 RPLSLT DS 1 00023 14 RFLDRV DS 1 00033 15 RFLVOL DS 1 0004: 16 RFLTRK DS 1 00053 17 RFLSEC DS 1 00063 18 RFLDCT DS 2 00083 19 RFLBUF DS 2 OOOAS 20 RFLSIZ DS 2 OO00C: 21 RFLCMD DS 1 0001: 22 READ EQU $01 00023 23 WRIT EQU $02 000d: 24 RFLCRD DS 1 OOOE: 25 RFLTVL DS a OOOF: 26 RFLFSL DS 1 00103 27 RFLFDR DS 1 09003 28 DEND 09003 29 x 09003 30 * UTILISATION DE LA FAGE ZERO 36 Pom's No 3 09003 o000: 0002: 00033 0004: 00053 00073 00083 00483 09003 09003 09003 20003 ISE3% D3D9% BF ES? 900% 09003 09003 0900320 I9032A9 1905385 WO72AZ 19 093BD \9OCIC9 IPOESFO 1910%20 I13tEB 19143D0 W1SIAZ 1918320 IDABIC? I91D3D0 PIF SEO IO2Z13F0 1923320 I9Z63CA I92734C IPZAICP 92C3F0 \9ZEICP 930390 932329 934349 93639D 93949 93B320 93EE8 93FSE0 9413D0 94324 P4AbIBA 94738D 94A320 940320 9S03AZ 9S23BD FC oc FD FD FD 09 oc FD OB oc FC FD oc 32 33 34 36 37 38 39 40 41 42 43 44 45 46 PTR EQu $0 FISTE EQU $2 SECTEUR EQU $3 CMD EQU $4 DRIVE EQU) $5 HEUF EQU $7 TEMF EQU $8 PREG EQU $48 x x AUTRES ADRESSES x BUFFER EQU 2000 LOCPFRL EQU $3E3 RWTS EQU $3D9 SECDES EQU $BFE8 x * DEBUT PROGRAMME x CONVER JSR HOME LDA #<BUFFER STA HEUF LDX #00 ECRI LDA MESS,X CMF #3 BEQ ENTREE JSR COUT INX BNE ECRI ENTREE LDX #0 MAJF JSR RDCHAR CMF «#488 ENE INEUF CPX #00 BEQ MAJF JSR COUT DEX JMP MAJF INBUF CMF =#$8D BEQ FINF CMF #¥$E0 BCC ADDBUF AND #$DF ADDEUF EOR #$80 STA FICH,X EOR #$80 JSR COUT INX CPX #15 BENE MAJF IMP ERRL FINE TXA STA LFIC JSR CLREOL. JSR CROUT LDX #0 SUIDO LDA MEDO,X * FOINTEUR GENERAL x A REMETTRE A 0 AFRES RWTS *xCHERCHE XDEFINITION "SOFT" L’ADRESSE DE LA TABLE FOUR RW DES SECTEURS DOS 3. 09S5S3C9 09S73F0 0959320 0O9SCIE8 09SD24C 09602 AZ 0962320 0965209 09473D0 OF S93 E0 09 SBI FO 096D220 0970°CA 097124C 09743C9 09763F0 09783C9 097AI 90 0970329 097E3 9D 0981320 09843E8 098530 09872D0 098934C 09 8C38A 098D38D 0990320 0993220 09963 AZ 09 982ED O99BICD O99DIFO O99F 320 IF AZIES 09A324C 09A6320 OPAPZAD OF ABI 20 OP AE SCO 09E03D0 O9EZ3 Pom's No 3 BE 07 ED 52 00 35 88 OE 00 FS ED 62 8D 14 EO 02 DF 00 ED 1E D9? 73 1F 9C 8E 00 59 BE 07 ED 98 8E 00 35 8D F7 FD 09 FD FD 09 aod FC FD oc FD 09 FD FD 89 90 91 92 93 94 95 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 SADO ENDOS ACDOS ADDOF FINDO ECRMO FINDE FINZ CMF BEQ JSR INX JMP L.DX JSR CMF ENE CPX BEQ JSR DEX JMP CMF BEQ CMF ECC AND STA JSR INX CPX ENE MP TXA STA JSR JSR LDX LDA CMF BEQ JSR INX JMF JSR LDA JSR CMF ENE as SADO COUT SUIDO #0 RDCHAR #388 ACDOS #50 ENDOS COUT ENDOS #$8D FINDO ¥$E0 ADDOF ¥$DF FIDO,X COUT #30 ENDOS ERR1 LFID CLREOL CROUT #0 MODEMP ,X #3 FINDE COUT ECRMO CROUT #0 RDCHAR #$8D FIN2Z 37 OFEZ: O9B23 O9EZ3AZ OPB43ED 09B739D OPBASES OFEETE0 O9ED3D0 OO EF 3 OFEFS OFEFS OOF 320 O9C22A9 0904385 O9CS2A9 09C8285 O9CALAP 09CC385 O9CEZAP 09D0385 09D2:20 09DS3 09DS3 O9DSs 09DS320 09D8220 OODELAD O9DD285 O9DF SAD OVEZI0A 09E3%8S OFESIES O9E7IAS OFE9IC9 O9EBSDO OPED AD O9EF?8S OOF ISES OOF 32ES6 OOFSSAP O9F7385 O9F 9320 O9FC320 O9FF3 20 OA0ZIA9 0A04285 OA063CS OA0B2AS OADASDO OAOCIAP OADES85 OAL02A9 0A12385 OAL43AE OA1L728A 0A18218 QDAL9IAS OALBI 49 0A1D385 38 00 B8 35 10 FS cs 00 02 04 03 o1 05 o1 04 oA BF oD 0B OE 03 03 20 03 03 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 1546 157 158 159 160 161 162 1463 164 165 146 167 168 149 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 * SAUVEGARDE x LOOF x LDX LDA STA INX CPX BNE * RECHERCHE x x * TRAITEMENT x LOOFL FLEU JSR LDA STA L.DA STA LDA STA LDA STA JSR JSK JSR LDA STA LDA ASL STA INC LDA CMF BNE LDA STA INC INC LDA STA JSR JSR JSR LDA STA DEC LDA BNE LDA STA LDA STA L.DX TXA CLC LDA ADC STA DE LA TABLE DOS #0 SECDES,X DOSTAE,X #16 LOOF DES FOINTEURS FASCAL TABFS #0 PISTE #4 SECTEUR #1 DRIVE #READ CMD PRERWT DU CATALOG FASCAL. LOCFRL Ao 00 190 LEZ RWTS 18 191 ¥0 a9 1a 192 PREG 65 06 193 BUFFER+2 85 06 194 A 90 02 195 TEMP ES 07 196 SECTEUR B1 06 197 CNF SECTEUR CD FF 0C 198 #610 Do 13 199 PLBU AD FF 0C 200 +0 85 00 201 SECTEUR ce 202 LFS PISTE Bi 06 203 HEUF D9 EF 0C 204 #READ DO 06 205 CMD cé 00 206 PRERWT Fo 1 207 LOCFRL DO F2 208 RWTS cA 209 FASTR #0 DO DS 210 PREG 20 BE FD 211 TEMP Az 00 212 TEMF BD C5 0C 213 ECFA LOOF. Cc? BE 214 #< BUFFER Fo 0A 215 HBUF 20 ED FD 216 #2BUF FER E8 217 HEUF~1 4c 4E 0A 218 BUFFER+$10 | 20 D3 OB 219 6C F203 220 FINI 38 221 TROUVE HEUF~1 AS 06 222 #06 E9 06 223 HEUF ~1 85 06 224 Pom's No 3 #0 #26 HBUF~1 HBUF ~1 CNF HEUF CHBUF 1) ,) LFIC FASTR LFIC PTR CHBUF 1), FICH-1,Y FASTR FTR TROUVE LFS LEZ CROUT #0 PASFI,X #S FINL COUT ECPA TAEDO (RESET) HBUF~4 #6 HBUF~1 OAS9IE0 02 225 BCS ADRI OASEICS 07 226 DEC HEUF OASD?IA0 00 227 ADR1I LDY #0 OAGFIB1 06 228 LDA ‘HEUF~1),Y 0A7138D 21 0D 229 STA DEFFA 0A743C8 230 INY OA7S2B1 06 231 LDA (HEUF~1),Y 0A7738D 22 0D 232 STA DEFFA+1 OA7AICE 233 INY QA7EIB1 06 234 LDA (HEUF~1),Y OA7D38D 23 0D 235 STA FIFFA 0A80:C8 236 INY OAB1IIB1 06 237 LDA (HBUF-1),Y 0A8338D 24 0D 238 STA FIFFA+L 0A863 239 x 0ABéd: 240 * LES FOINTEURS DE DEBUT ET FIN DE FICHIERS SONT CONSERVES 0A863 24al x 0486218 242 cLe OAB7IAS 06 243 LDA HBUF~1 0A893469 16 244 ADC #22 OASE?8S 06 245 STA HEUF-1 0ABD290 02 246 BCC REST OASFIES 07 247 INC HEUF OA913A0 00 248 REST LDY #0 OASSIE1 06 249 LDA (CHEUF-1),Y 0A9S38D 45 0D 250 STA RESFA 0A983C8 251 INY OA99IB1 06 252 LDA (HBUF~-1),Y OASB?8D 46 0D 253 STA RESFA+1 OA9E 254 x OA9ES 255 * CALCUL DES SECTEURS ET FISTES OASES 256 x OASESAZ 00 257 LDX #0 OAA0?20 El OB 258 JSR CALPSE QDAASIAZ 02 259 LDX #2 0OAAS?20 E1 OB 260 JSR CALFSE 0AA8 338 261 SEC QAAMTAD 23 0D 262 LDA FIFFA OAACTED 46 0D 263 SBC RESFA+1 QAAF{8D 23 0D 264 STA FIFFA OAE:Z$B0 OB 265 BCS FLULO OAB4:CE 24 0D 266 DEC FIFFA+1 OAB7%A9 OF 267 LDA #$0F OAB922D 23 0D 268 AND FIFPFA OAEC?8D 23 OD 249 STA FIFFA OAEF 3 270 x OAEFS 271 * ECRITURE DU PROGRAMME A FARTIR DE $2000 OAEF 3 272 x OAEFZA9 20 273 FLULO LDA #<BUFFER OACII85 07 274 STA HBUF OAC3IAD 21 0D 275 LDA DEFFA OAC6I85 03 276 STA SECTEUR OACBIAD 22 OD 277 LDA DEFFA+1 OACBI85 02 278 STA FISTE OACDIA9 O1 279 LOO3 LDA #READ OACF?85 04 280 STA CMD OAD1220 94 0B 281 JSR PRERWT 0AD4320 E3 03 282 JSR LOCFRL 0AD7?20 D9 03 283 JSR RWTS DADASAP 00 284 LDA #0 Pom's No 3 39 OE632A9 C4 344 LDA #/D vADC385 48 285 STA FREG ¢ 4 Y DADESES 03 286 INC SECTEUR | 0B65320 ED FD 345 doe COUT DAENTAS 03 287 LDA SECTEUR | [F48?A? B2 346 LDA #’2 OAEZzICe OF 288 CHE #40 0&4A:20 ED FD 347 JSR COUT OAEdIDO 06 Sao ENE LABA 0640320 SE FD 348 JSR CROUT OAESIAy 00 290 Loa #0 0B7036C F2 03 349 UMP (RESET) 0AES385 03 291 STA SECTEUR DAEASES 02 292 INC PISTE 0873% 351 x OAECEAS 02 293 LARA soLDA.stste— | 0873t 352 x SOUS ROUTINE ERREUR QAEESCD 24 0D 294 CME FIFFA+1 | 0733 353 x QAFiE90 OD 295 BCC FREFI1 | 0B73A2 00 354 ERRI LDX #0 DAFSIFO 02 296 EEO VERSEC | 0B75?20 8E FD 355 JSR CROUT DAFSIE0 OF 297 BCS PREEAS | 0878120 BE FD 356 JSR CROUT 0AF72AS 03 298 VERSEC LDA SECTEUR | 0E7BiA9 87 357 LDA #987 OAFSICD 23 0D 299 CMe FIFRA | 0E7D320 ED FD 358 USR COUT OAFCI90 02 300 ECC PREFT1 |0B801ED 44 0C 359 ERRC LDA ERMES,X OAFESB0 06 3014 ECS FREEAS | 0E83:C9 BE 360 CMP OR’ OEO00TES 07 302 FREFI1 INC HEUF OBGStFO 07 361 BEQ FINER 0802390 C9 303 BCC L003 0287320 ED FD 362 JSR COUT OE 04tE0 C7 304 ECS LOO3 OBSATES 363 ENX 0606:20 D3 0 305 FREEAS JSR TAEDO DESEI4C 80 0B 364 UMP ERRC 009120 SE FD 306 ‘isk crouT | 0E8Et20 8E FD 365 FINER JSR CROUT OBOCtAz 00 307 Lox 40 0E91:6C FZ 03 366 UMP (RESET) OBOE:ED 47 0D 308 Loos LDA BLO,X OB113C9 BE 309 CMF O#’S 167) 368 % DEL3iF0 07 310 REQ SUTL 0943 369 x PREPARATION DE RWTE 0B15:20 ED FD 311 JSR COUT 0B9 4% 370 x te18iee 312 INX 0294320 £3 03 371 PRERWT JSR LOCPRL E1924 OE OB 313 UMF -LOOS 0E:97 384 00 372 STY BTR OB1ICtAZ 00 314 SUI1 LDX #0 0B99785 01 373 STA FTR+1 SIE: 2 OB9RIAS 02 374 LDA FISTE teaiien te ge a £006 vee cag 0E9D3A0 04 375 LDY #RFLTRK EZ 4768 317 NX ORSF391 00 376 STA (PTR) »Y te2S1E0 4E Sis cRX #30 OBALIAS 03 377 LDA SECTEUR 0227290 FS 319 Ecc L006 OBASIA0 05 378 LDY #RPLSEC MESetAd Ac 320 LDA 4’, OBAS391 00 379 STA (FTR),Y 0E2B:20 ED FD 321 JSR COUT 0EA73A0 08 380 LDY #RPLBUF OEZELA? CI 322 LDA 4°A OBAIZA9 00 381 LDA #>BUFFEF 0630:20 ED FD 323 ish GOUT OBABS91 00 382 STA (PTR) +Y 0E332A9 A4 324 LDA #/$ OBADICE 383 INY 0E35:20 ED FD 325 JSK COUT akipinee 384 LDA HBUF vB38tA9 20 326 LDA #<BUFFER $91 00 385 STA (PTR LY OB3AIZ0 DA FD 327 JSR $FDDA As 04 386 EDA, CMD OB3D3A9 00 - 328 LDA #>BUFFER ¢A0 OC 387 LDY #RFLCMD 0ESFI20 DA FD 329 JSR $FDDA | OBBSt91 00 388 STA (PTR) LY haziae AC S50 LDA #43 OBES3A9 00 389 LDA #0 0644:20 ED FD 331 jee cour OREASAO 03 390 LDY #RPLVOL OR472A9 CC 332 ipa 4'L 291 00 391 STA (FTR)+Y 0649320 ED FD 333 JSR COUT BESAS 0S 392 LDA DRIVE CB4CIA9 A4 334 LpA 48 OBCOA0 02 393 LDY #RPLDRY 046220 ED FD 335 JSR COUT ORC2Z391 00 394 STA (FTR)+Y 0651238 336 SEC OEC4160 395 RTS OES23AS 07 337 LDA OBS43E9 20 338 SEC #<BUFFER' 0256320 DA FD 339 JSR $FDDA OBS93A9 FF 340 LDA #$FF 0BSB:20 DA FD 341 USR $FDDA OBSESA9 AC 342 LDA #’, 0240320 ED FD 343 JSR COUT 40 Pom's No 3 OBCS: ORCS OBCSIAZ 0EC7 SED OBCAL9D OBCDIES OB CESE0 OEDO2DO 0OBDZ2360 OED3% 0OBD33 0OBD33 OED32AZ OBDSIED OBD83 9D OBDESES OEDCIEO OE DEDO OBE0?460 OBE1S OBELS OBE 43 Ag OBE 67D 0BE9?9D OBEC?90 $1E OBF431E OBF7390 OBFOSFE OBFCSED OBFF 329 0co1:18 0C02346A 0CO3%6A 0C04346A 0COSI6A 0006318 0C07%7D OCOAL9D OCODsBD 0C10:29 0C1239D 00153460 ocié: 0C163 0C163 00 25 B8 10 FS 00 35 B8 10 02 21 21 03 | 22 22 21 03 22 21 Fo 22 22 21 OF 21 oD BF i) BF oD oD oD ne) ) oD oD oD oD oD oD 397 x 398 * MISE EN FLACE DE LA SECTORISATION FASCAL 399 TABFS 400 BL 401 402 403 404 405 407 x LDX LDA STA INX CFX BNE RTS #0 PASTAB,X SECDES,X #16 Bd 408 * MISE EN FLACE DE LA SECTORISATION DOS 3.3 409 * 410 TAEDO 411 B2 412 413 414 415 416 418 x 419 * CONVERSION 420 x 421 CALFSE 422 423 424 425 426 427 428 BOUCO 429 430 431 432 BOUCL 433 434 435 436 437 438 439 440 441 4az 443 444 445 447 xk LDX LDA STA INX CPX BNE RTS LDY CLC LDA ADC STA BCC INC ASL ASL BCC INC LDA AND CLE ROR ROR ROR ROR CLC ADC STA LDA AND STA RTS #0 DOSTAEB,X SECDES,X #16 BZ SECTEUR~BLOC #0 #02 DEFPA,X DEFFA,X BOUCO DEFPA+1,X DEFFA+1,X DEFF'A,X BOUCL DEFFA+1,X DEFFA,X ¥$F0 DDPDD DEFFA+1 ,X DEFFA+1,X DEFFA,X ¥$0F DEFFA,X 448 x MESSAGES ET CONSTANTES 44D Pom's No 3 M1 450 MESS ASC 'NOM DU FICHIER PASCAL : ; 451 MEDO ASC 'NOM DU FICHIER "NORMAL" ; 452 ERMES ASC 'NOM TROP LONG; 453 MODEMP ASC 'INSERER LA DISQUETTE PASCAL DANS LE DRIVE 1, La DISQUETTE BASIC DANS LE DRIVE 2, PUIS APPUYER SUR "RETURN" ; 454 PASFI ASC 'CE FICHIER N EST PAS SUR CETTE DISQUETTE ; 455 FICH ASC ' 456 LFIC DFB O 457 FIDO ASC ! 458 LFID DFB O 459 NFPAS DFB 0 460 DEFPA DFB 0,0 461 FIFPA DFB 0,0 42 462 PASTAB DFB 0, 2,4, 6,8, 10, 12, 14, 1, 3,5, 7,9, 11, 13, 15 463 DOSTAB DFB 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,0 464 RESPA DFB 0,0 465 BLO ASC 'BSAVE; *900.D4D RECAP TULATION 0A30- OC DO 13 AD FF oc 85 00 ami 0A38~- C8 B1 06 D9 EF OC DO 06 0900- 20 58 FL AY 20 85 07 AZ 0A40~ CS 00 FO 1£ DO F2 CA DO 0908- 00 BD 14 0C C9 BE FO 04 0A48~ D6 20 BE FD AZ 00 BD CS 0910- 20 ED FD E8 DO F3 AZ 00 OASI~ OC C9 BE FO 0A 20 ED FD 0918- 20 35 FD C9 88 DO OE EO OAS8~ ES 4C 4E 0A 20 D3 OB 4c 0920- 00 FO FS 20 ED FD CA 4C 0AS0- F2 03 38 AS 06 EF 06 85 0928- 18 09 C9 8D FO 18 C9 ED 0AS8- 06 BO 02 CS 07 AD 00 B1 0930- 90 02 29 DF 49 80 9D FO 0A70~ 06 8D 21 0D C8 E1 04 8D 0938- 0C 49 80 20 ED FD E8 E0 0A78- 22 0D C8 B1 06 BD 23 OD 0940- OF DO DS 4C 73 OF 8A 8D 0AB0- C8 B1 06 BD 24 0D_18 AS 0948- FF 0C 20 9C Fe 20 8E FD OASB- 06 69 16 B5 06 90 02 ES 0950- A2 00 ED 2F 0C C9 BE FO 0A?0- 07 AD 00 B1 06 8D 45 oD 0958- 07 20 ED FD E8 4¢ 52 09 0A98~ C8 E1 06 BD 44 OD AZ 00 0940- AZ 00 20 35 FD C9 88 DD OAAO~ 20 E1 OB AZ 02 20 E1 OB 0948 OF EO 00 FO FS 20 ED FD 0AAB~ 38 AD 23 OD ED 46 OD 8D 0970 CA 4C 62 09 C9 BD FO 14 OABO- 23 0D BO 0B CE 24 0D Ag? 0978 C9 E0 90 02 29 DF 9D 00 OAES- OF 2D 23 0D 8D 23 OD Ag 0980- OD 20 ED FD ES EO iE DO OACO- 20 85 07 AD 21 OD 85 03 0988- D9 4C 73 OF 8A BD iF OD OAC8- AD 22 0D 85 02 AY O1 85 0990~- 20 9C FC 20 BE FD AZ 00 OADO- 04 20 94 0B 20 £3 03 20 0998- ED 59 0C C9 BE FO 07 20 OAD8- D9 03 AI 00 85 48 E46 03 09A0- ED FD E8 4C 98 09 20 BE 0AEO- AS 03 C9 OF DO 06 AD 00 09A8- FD AY 00 20 35 FD C9 8D QAES~ 85 03 ES 02 AS 02 CD 24 09E0- DO F7 AZ 00 BD B8 EF 9D OAFO- OD 90 OD FO 02 BO OF AS 09E8- 35 0D E8 E0 10 DO FS 20 OAFB~ 03 CD 23 OD 70 02 BO 06 09C0- CS OE A9 00 85 02 A9 04 0E00- ES 07 90 C9 BO C7 20 D3 09C8- 85 03 AI 01 85 05 AD O1 OBO8- OF 20 8E FD AZ 00 BD 47 09D0- 85 04 20 94 OF 20 E8 03 0B10- 0D C9 BE FO 07 20 ED FD 09D8- 20 D9 03 AP 00 85 48 AD OB18- E8 4C OE OF AZ 00 BD 00 0O9E0- 02 20 0A 85 08 ES 03 AS 0OB20- OD 20 ED FD E8 E0 1E 90 09E8- 03 CF 10 DO 04 A 00 85 OB28- FS A? AC 20 ED FD AQ C1 OOF0- 03 ES 02 ES 07 AD 01 85 OB30- 20 ED FD A? A4 20 ED FD 09F8- 04 20 94 0F 20 E3 03 20 0E38- AY 20 20 DA FD A9 00 20 0A00- D9 03 AP 00 BS 48 C4 08 0E40- DA FD AY AC 20 ED FD Ag 0A08- AS 08 DO D9 a9 20 85 07 0B48- CC 20 ED FD A? A4 20 ED 0A10- A? 00 85 06 AE 10 20 8A 0E50- FD 38 AS 07 E9 20 20 DA 0A18~- 18 AS 06 69 06 85 06 AD OBS8- FD A? FF 20 DA FD A9 AC 0A20- 00 18 A 1A 45 04 85 06 0£40- 20 ED FD A9 C4 20 ED FD 0A28- 90 02 ES 07 B1 06 CD FF 0ES8- AP BZ 20 ED FD 20 SE FD Pom's No 3 A0 CC C1 AO C4 C9 D3 D1 DS CS D4 D4 CS AO DO C1 D3 C3 C1 CC AO C4 Ci CE D3 A0 CC CS AO C4 D2 C9 Dé CS AO B1 AC AD CC C1 40 C4 C9 D3 D1 DS CS D4 D4 CS A0 C2 C1 -D3 C9 C3 40 C4 Ci CE D3 A0 CC C5 A0 C4 D2 C9 D6 CS AD B2 AC AO DO DS C9 D3 AD C1 DO DO DS D9 CS D2 AD DB DS D2 AQ AZ D2 CS D4 DS D2 CE AZ AO BE C3 CS Ad Cé C9 C3 C8 CF CS D2 AD CE A0 CS D3 D4 AD DO C1 D3 A0 D3 DS D2 AD C3 CS D4 D4 CS AO C4 C9 D3 D1 DS CS D4 D4 CS AO BE AD A0 AD AD AD AD AD AD AD A0 A0 AD AD AD AD AD 00 Ad AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD A0 AD AD AD AD AD AD AD A0 AD AD AD AD AD AD 00 00 00 06 00 00 00 02 04 046 08 0A OC OE 01 03 05 07 09 OF OD OF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.00 84 C2 D3 C1 D6 CS BE OB70- 6C FZ 03 AZ 00 20 BE FD 0B78- 20 8E FD A9 87 20 ED FD OB80- BD 4A 0C C9 BE FO 07 20 OB88- ED FD E8 4C 80 0B 20 SE OB90- FD 6C F2 03 20 £3 03 84 0OB98- 00 85 01 AS 02 AD 04 91 OBA0- 00 AS 03 AD 05 91 00 AD OBA8- 08 AY 00 91 00 C8 AS 07 OBBO- 91 00 AS 04 AD OC 91 00 OBES8- AY 00 AD 03 91 00 AS 05 OBCO- AD 02 91 00 60 AZ 00 ED OEC8- 25 0D 9D B8 BF EB EO 10 OEDO- DO FS 60 AZ 00 ED 35 0D OBD8- 9D B8 BF E8 £0 10 DO FS OBEO- 60 AD 00 18 AY O02 7D 21 OBE:8- 0D 9D 21 0D 90 03 FE 22 OBFO- OD 1£ 22 OD 1E 21 OD 90 OBF8- 03 FE 22 0D BD 21 0D 29 0COO- FO 18 6A 6A 6A 6A 18 7D 0cos- 22 0D 9D 22 0D BD 21 OD 0C10- 29 OF 9D 21 OD 60 CE CF 0C18- CD AD C4 DS AD C4 C9 C3 0C20- C8 C9 CS D2 AD DO C1 D3 0c28-:C3 Ci CC AO BA AO BE CE 0C30- CF CD A0 C4 DS AO C4 CP 0C38- C3 C8 C9 CS D2 AD AZ CE 0C40- CF D2 CD C1 CC AZ AD BA 0C48- AO BE CE CF CD A0 D4 D2 OCSO- CF DO AO CC CF CE C7 BE 0CS8- A0 C9 CE D3 CS D2 CS D2 Une informatique de gestion adaptée aux besoins des gestionnaires et ré ETUDIE e opportunité d’ utilisation de l’outil micro-informatique e intégration entre informatique traditionnelle et personnelle e politique de la communication dans l’entreprise FORME e formation a l'utilisation de la micro-informatique REALISE e réalisation de programmes a la demande LIVRE e livraison de systémes clés en main, avec des progiciels de GESTION DE STOCK, PAYE, COMPTABILITE. Nous sommes gestionnaires avant d’étre informaticiens. L’informatique doit s’adapter a l'homme, et non l’inverse. L’outil micro-informatique répond particuliérement bien a ce souci de qualité et d’efficacité du travail, dans des conditions conviviales. Nombreuses références en informatique traditionnelle - divers matériels - et en informatique individuelle - principalement Apple - auprés des PME et des groupes industriels. \ log TAG «2. Centre La Chataigneraie - 29, avenue de Versailles - 78170 La-Celle-St-Cloud - Tal. : (3) oxsisor_ J Pom's No 3. 43 Communication grace a l’Apple Bruno Estrangin 1-Introduction Nouveau venu A l'informatique, mais ancien radio-amateur, j'ai été trés vite tenté par les possibilités de communication de 1'APPLE. Parmi des objectifs variés accéder A des moyens informatiques supplémentaires, échanger des textes ou des programmes, interroger des banques de données..., ce qui m'intéresse le plus vivement est la perspective d'éviter toute reprise manuelle afin de profiter de toute la souplesse de 1'informatique. D'un point de vue non technique, communiquer avec un micro-ordinateur, c'est aussi expérimenter de nouvelles relations sociales. Ainsi, avec une certane naiveté de néophyte, j'ai entrepris de communiquer. C'est passionnant et ca marche ! J'espére que les informaticiens spécialistes feront connaitre ce domaine avec autant de moyens que pour le BASIC, le Pascal... Je présente ci-dessous les réalisations suivantes : échange de textes en environnement Pascal entre un APPLE et une machine bureautique RANK XEROX 850 pleine page, utilisation de la méme machine bureautique en tant que terminal, 1'APPLE servant d'ordinateur, accés a un réseau de temps partagé et au réseau MICRODIAL. Je n'ai pas eu l'occasion de communiquer directement avec un autre APPLE, mais cela ne présente a priori aucune difficulté (entre APPLE, il est plus facile de se comprendre !). 2-Matériel utilisé 2-1 Coté APPLE Apple II, 48K avec carte langage, - deux drives (il est possible de n'en utiliser qu'un), - carte de communication : APPLE II COMMUNICATIONS INTERFACE CARD [A2B0003X], modem Anderson Jackobson AJ 311. 2-2 Coté bureautique - Rank Xerox 850 pleine page, - modem Anderson Jackobson AJ 211. Une explication sur les MODEMS : La transmission s'effectue par modulation de part et d'autre d'un canal (+/- 100hz). Par convention, le modem appelant émet dans le canal inférieur (1080 hz) et le modem appelé émet dans le canal supérieur (1750 hz ). yy Pom's No 3 Le modem AJ 211 ne fonctionne qu'en mode "APPEL" (ORIGINATE) : il "écoute" sur le canal supérieur et "émet" dans le canal inférieur. Le second modem utilisé devra done "écouter" sur le canal inférieur et émettre dans le canal supérieur : on dit qu'il doit &tre en mode "REPONSE" (ANSWER). Pour communiquer avec une machine munie d'un modem ne disposant que du mode "APPEL" (ORIGINATE), il faudra mettre le modem AJ 311 en mode "REPONSE" (ANSWER), soit : - MODEM AJ 211 : mode "APPEL" - MODEM AJ 311 : mode "REPONSE" 3-Echange de texte avec une machine bureautique Plusieurs procédures sont disponibles. J'utilise une procédure dissymétrique du coté de 1'APPLE : émission sans logiciel particulier, en utilisant la fonction TRANSFER du FILER du POS de 1'APPLE Pascal, réception au moyen d'un logiciel de communication écrit en Pascal : le programme LIAISON dont on trouve le listing dans "LE PASCAL PAR LA PRATIQUE", pages 516 a 518, Pierre LEBEUX et Henri TAVERNIER, SYBEX. Voici la procédure utilisée préparation du texte A l'aide de 1'EDITOR de 1'APPLE Pascal, et stockage sur disquette en notant son titre (facile 4 retrouver avec le FILER) préparation de 1'APPLE pour la communication ~- carte de communication dans le slot 2, -- liaison selon la norme RS 232 avec le modem accoustique, -- mise en service du modem, mode ORIGINATE, FULL DUPLEX. appel du poste téléphonique de la machine bureautique pour vérifier que tout est également prét du coté bureautique. - Il suffit ensuite de passer au niveau du FILER les commandes : --TRANSFER (nom du fichier) -- A la question TO WHERE, répondre "REMOUT:"; ceci envoie le fichier par la carte de communication au modem. -~ Durant la transmission, rien n'apparait sur l'écran; les commandes au clavier sont sans effet. A la fin de la transmission du fichier, on voit sur l'écran la fléche habituelle a 1'issue d'un transfert. Avec 1'APPLE Pascal, la transmission d'un fichier n'est donc pas plus difficile que sa copie entre deux disquettes. La préparation de la machine bureautique a la réception est spécifique de cette machine. J'tindique ci-dessous la gamme opératoire propre 4 la machine RANK XEROX 850 pleine page. Pom's No 3 45 XOUTIQUE rutmerot003 REVISION numeroi0ld du 21/10/81 * * x * SOOO OOOO OCC KK x * OBJECTIFSRECEVOIR SUR LA RANK 850 F xx * * FOUR IMPRESSION DE QUALITE *x * * LE CONTENU D’UN FICHIER EMIS *x * x DEFUIS UN APFFLE SOUS OS FASCAL xx x *« xx * «x *x * x aK * 2] OOOO * * CONFIGURATION‘ AFPLE IIT, PASCAL, COM * RANK 850 FAGE + COM S-1 * *XCREE LE214/10/81 DIFFICULTES FACILE x KAPPLICATIONi transfert de tableaux comme celui~ci, composes sur 1’APPLE xavec impression respectant la mise en page x x xVGTRSESTRANGIN x x= x xGAMMES1-Mettre le disque COM de la RANK dans le lecteur de droite * 2-Mettre le disque de saisie dans le lecteur de gauche 3-Mettre en route la RANK 4-Changer la station de travail avec <PARA?! lecture du disque com S-A =<MODE COM 1+, repondre? <4, <ACCEFPT> - 6-A *RETIRER DISQUE COM>, executer 7-Faire “CODE FROGR> et choisir les options suivantes? ~300 (bit/s) “QUI (mode duplex) ~0 (parite) ~x (ligne feed local) -x Cinhiber) ~4x (mode COM) 8-Faire <ACCEFT>$ l’ecran indique <COM FRET> 9-Allumer le modem de la RANK 10-Si l’ecran indique <PROBLEME LIAISON TRANSMISSIOM?! appuyer sur <STOF>$ l’ecran doit alors indiquer <COM FRET> 11-Changer de station pour acceder au disque de saisie? touche <FARA> 12-Faire apparaitre le format qui sera celui du document recut ~marget 7-79 (correspond a RIGHT MARGIN 6, LEFT MARGIN 79) ~echappement? 10 Four faire apparaitre ce format qui sera automatiquement uw document recu, on peut creer un rm uw document? MK MM MR MM RMR MMM RM HM KR MM MMMM RM RM MX He 3G 96 3E 3E HE HE 9 DE OEE EMM KR KR MMH MMM MMMM MMMM MH MM MMM MM KK MMM 46 Pom's No 3 Hi 3 9€ 9 3 2 9 2 2G HE EM MM MMM MM MMMM MM MMMM MMMM MMM MK MM HM E ruimerot003 REVISION rmumeroi0l du 21/10/81 F 20-Touche <CARAC>, acceder au sommaire de travail} le document 21-Lancer l’impression par les touches «CODE FARA>}; -faire <CODE FRGR> -enlever <4 MODE COM> -mettre <LOCAL> ~faire <ACCEFT> -creer wn document (titre propose! FORMATCOM) -remplacer le format standard par le format ci-dessus ~stocker le document -revenir ern MODE COM: ~<CODE FRGR -effacer <LOCAL>3 mettre! <4 MODE COM> -touche <ACCEFT> HMMM MM MMMM MMM HK I On peut aussi appeler wn document comportant ce format, fairex apparaitre ce format sur l’ecram, puis re-stocker le documentx Ce format sera ensuite mis sur tout nouveau document x x

Showing the first 100000 of 148364 characters.

mp.ls