Skip to main content

tremplin micro newsletter issue 09

  • PublicationApple Periodicals
  • Pages66
  • Sourcetremplin_micro_newsletter_issue_09.pdf
← Magazines tremplin micro newsletter issue 09
/ 66
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
‘tremplin en double haute résolutior ' SUF Epson Une douzaine de routines | pratiques LM @ utiliser @ partir du Basic NO 10- pitt el - Deu: nes bre love’ 1s déposées par Apple Computer Inc VOTRE BIBLIOTHEQUE INFORMATIQUE ¢ LE MANUEL DE L’INTEL- LIGENCE ARTIFICIELLE (A. Barr & E.A. Feigenbaum) Vaste et captivant sujet que celui traité dans le Tome | de cet ouvrage collectif (traduit de l'américain par D. Tauzin- Raynaud). Si 'intelligence ortificielle — IA pour les initiés — inquiéte quelque peu certains esprits rétrogrades, elle en passione beaucoup d'autres, heu- reusement plus ouverts aux techniques et théories nouvelles. Avec un codt de |'informatique en chute libre, de nombreuses applications, hier réservées 4 la “grosse” informatique, deviennent possibles sur des machines plus modestes : la vatre... par exemple. Que |'on ne s‘attende pourtant pas 4 trouver dans ce manuel des routines permettant de mettre au point un pro- gramme personnel. Nous sommes ici en présence d'un ouvrage de réflexion, d'une somme de connaissances résul- tant du travail cohérent de plusieurs dizaines de personnes : la recherche avec Anne Gardner, la représentation de la connaissance organisée par Avron Barr et James Davidson, la com- préhension de la parole préparée par Lawrence Fagan, Paul Cohen et Avron Borr, etc, (Editions Eyrolles, 320 pages) ¢ INITIATION A LA GENE- RATION DE TEXTES EN LANGUE NATURELLE (Jean-Pierre Balpe) Est-il possible de confier la production de textes & des ordinateurs ? La réponse vous est donnée dans cet excellent livre de Jean-Pierre Balpe... programmes en Basic @ l'appui. Sur Apple ? Non, mais il s‘agit d'un Basic Microsoft tout & fait conventionnel et sans aucune fonction graphique, ce qui vous permettra éventuellement de le traduire facilement en Applesoft. A noter que les programmes proposés par l'auteur ont tous été développés sur des machines dont la plus puissante navait pas plus de 32 Ko disponibles. Vous ne serez probablement pas sur- pris en apprenant qu'il est néanmoins préférable de disposer d'un lecteur de disquette (nous préconisons I'Unidisk). Nul doute que la lecture sérieuse (jallais écrire “I’étude") de cette initia- tion autorisera bon nombre d'amateurs d'écrire des applications qui leur per- mettront la génération en langue natu- relle de leurs propres “textes”. Je ne serais pas autrement surpris si Trem- plin Micro recevait bientdt des exem- ples aussi originaux qu'inédits. Pour ne rien vous cacher, je le souhaite car il s'agit la d'un sujet particuligrement intéressant. (Editions Eyrolles, 204 pages) ¢ PROGRAMMATION EN ASSEMBLEUR 68000 (Louis Léon) Je sais : votre Apple chéri n’est pas équipé d'un 68006, mais d'un 6502 ou encore d'un 65C02... en attendant le fameux 65C816 qui lui permettra (la nouvelle sera peut-étre devenue offi- cielle ay moment od vous lirez ces lignes !) de rivaliser avec le PC d'IBM et ses innombrables copies. Mais cer- tains de nos honorables Lecteurs (et aussi des Lectrices : je ne vous oublie pas Mesdames) utilisent un Mac et révent de réécrire sur icelui les exira- ordingires routines en langage machine qui ont permis 4 leur Apple de ne point paraitre obsoléte face 4 la redoutable concurrence des Atari, Amiga et autres machines géniales. Il se trouve que Mac n'est plus le seul & étre équipé d'un 68000, microproces- seur auquel les augures promirent un avenir beaucoup plus brillant que celui réservé av 6800 du méme Motorola. Lisa prouva que le 68000 disposait réel- lement de possibilités extraordinaires, mais Lisa fut un échec et nous avons dé attendre l'arrivée du Mac pour que des auteurs compétents s‘intéressent enfin 4 l'architecture et & la programmation de la béte. Voila qui est fait, et en frangais, par Louis Léon. Celui-ci vous guidera dans une approche prudente et logique du 68000 et vous prouvera que la pro- grammation de ce microprocesseur n'est pas aussi rébarbative que vous le laisseront volontiers supposer certains beaux esprits, soucieux de vendre des machines... et des logiciels, mais ne désirant surtout pas aiguiller leurs clients vers la programmation. (Editions Eyrolles, 380 pages) PROGRAMMATION EN ASSEMBLEUR cp i: Louis LEON EYROLLES GUY-HACHETTE Apy log sée tremplin micro pple et ProDOS (noms et gos) sont des marques dépo- jes d'Apple Computer, Inc. IMESTRIEL 2 numéro : 33 F bonnement d'un an 190 F ) numéros) uy-HACHETTE 1 Petite Motte — Senillé 9100 CHATELLERAULT. sléphone : )-93-66-66 JBLICITE : lle (m&me numéro) ymmission paritaire ; ne l'obligeont pos & glaner, ns plusieurs magozines, les iseignements concernant sa chine, ne bénéficient pas du méro de Commission Paritaire, pas davantage des tarifs pos- x réduits. EMPLIN MICRO — Bimestriel — st une publication des Editions ENA, 4, rue de la Cour-des- ues, 75020 PARIS — S.A. au ital de 3600000 F — Imprimé ~ CITE-PRESS/PARIS — Dépat al 4 la date de parution — Ins- ation 4 la Commission Parit blications et Agences sse_: en cours — Directeur de Publication: Guy-Clément GNE — Diffusion N.M.P.P. EMPLIN MICRO Au-dessus de la mélée OURQUOI vous obstinez-vous 4 éditer une revue dont le seul objectif est assurément d'aider les utilisateurs d'un Apple lle ou IIc & mieux connaitre leur machine ? C'est une question que l'on me pose souvent dans les milieux dits professionnels. Et c'est vrai que je n‘ai certes pas choisi la facilité en créant Trem- plin Micro, puis en poursuivant I'édition de ce titre. Autre fait singulier : ce bimestriel de programmes ne semble guére ouvert & la publicité. D'ou une autre question, au moins aussi singuliére que la premiére : Comment réussissez-vous @ équilibrer votre Badger ? Sans doute bénéficiez-vous d'une aide invisible d’Apple ? Est-il tellement invraisemblable, dans ce pays, qu'un directeur de publica- tion soit suffisamment honnéte pour ne point accepter de telles compro- missions ? Tremplin Micro n‘a rien 4 cacher et ne dispose pas de ressour- ces occultes. Ses ventes lui suffisent et il peut méme se permettre de rétri- buer convenablement ses auteurs. Par ailleurs, notre revue est contrélée par |'OJD (c'est méme |'un des rares titres de cette nature — publication dedige 4 une seule marque — a se soumettre a une telle formalité). Jusqu’a maintenant, nous avons effecti- vement refusé les pages de quelques annonceurs (tout en les remerciant de leur confiance), trop peu nombreux pour justifier une augmentation de notre pagination. En effet, s'il est possible que Tremplin Micro s'ouvre un jour 4 la publicité (son directeur n‘est pas publiphobe !), celle-ci sera regroupée dans un cahier spécial supplémentaire. Lectrices et Lecteurs ont la presse qu'ils méritent. II est parfois facile, dans notre pays, de réussir ce que, dans notre jargon professionnel, nous appelons des “coups”. Je connais les recettes. II est plus difficile d'imposer des publications dites "techniques et professionnelles”. Heureusement, la France dispose, avec les Nouvelles Messageries de la Presse Parisienne et plusieurs dizaines de milliers de Dépositaires et Diffuseurs de Presse, du meilleur réseau de distribution du monde. Tremplin Micro ne peut compter que sur ce réseau et sur ses Lectrices et Lecteurs. Merci aux animateurs du premier et a la fidélité des seconds... auxquels je promets de bons et nombreux moments en notre compagnie. BONNE PROGRAMMATION ET A BIENTOT ! GUY-HACHETTE. SOMMAIRE = 10 * Graphisme-démo (Maurice Chavelli) . sce Wiese nines Sible Gieeainyeys sles siai ge Oewarainusiels 3 » Instructions Basic Applesoft (NOHO) sxccsasiwcccarpanugesaseen 6 * Greffe-LM (Nestor) ................ 10 IMPRESSION EN DOUBLE HAUTE RESOLUTION SUR EPSON (Patrick Quettier et la collaboration d'Y. Koenig)... 12 * Sauveur de variables (Yvan Koenig) . 25 . (G60) o.oo e cece eece cece eceeeee ees 28 * Unjeu de lettres : Treize (Géo) ...... 30 * Essai de logiciel : Version Liste (Clément Renard) ................- 35 * Cadre avec les caractéres Souris NNGSIOR) oscinssesesiesics tra menwaun 36 * Titre mystérieux (Michel Delacroix) .. 37 * Rideau (Clément Renard) ........... 38 * Effets spéciaux (Nestor) ............ 40 * Inversion d'écran DHR (Thierry Gauthier) ................. 42 * Fenétre de texte en HGR2 (Clément Renard) ..............2.5 45 * Défilement d'une ligne (G-H) ....... 48 * Défilement de I’écran texte (G-H) ... 49 * Fenétre rapide sur 40 colonnes (Argos), sasscaneeracawsesecs 50 * Minuscules transformées en capitales (Clément Renard) ................. 52 * Affichage hexa (Nestor) ... 54 * Courrier des Lecteurs . 56 * Biblio I, 5, 8, 34, Il * Essai de logiciel : ORCA/M......... 59 * Occupation de la page zéro (Marcel Cottini) * Bulletin de commande et d'abonnement ... * En souscription . Un message de notre ami Yvan KOENIG Le courrier de Tremplin Micro montre 4 I'évidence que la recopie de programmes publiés en revue n'est pas chose aussi aisée qu'il y parait au premier abord. Les difficultés peuvent étre classées en deux catégories : les fau- tes de frappe pures et les erreurs dues 4 des problémes de lecture du listage imprimé (oublions les bogues et coquilles typo- graphiques !). Pour corriger ces erreurs il existe des utilitaires dont l'emploi est fortement conseillé, Pour le BASIC, POM'S diffuse une nouvelle version de son Editeur Plein Ecran (EPE) dont l'un des atouts est d’étre un produit de conception francaise. On peut également uti- liser PROCMD de CALL APPLE ou GALE de NIBBLE. Avec ces deux utilitaires on dispose de multiples fonctions dont la RENUMERO- TATION. Pour les routines en langage machine, NIBBLE a publié (et commercialise toujours) un remarquable éditeur de code HEXA sous le nom de MLE. Il m‘a pourtant semblé utile de fournir au lecteur un maximum d'éléments pour permettre une transcription plus sire des pro- grammes et simplifier la recherche d’éventuelles erreurs. C'est pourquoi Tremplin Micro (et pourquoi pas les autres revues ?) publiera désormais la plupart des listages sous une forme ENRICHIE * La présentation 4 laquelle vous étes maintenant habitué(e) reste globalement inchangée, mais viennent s'y greffer quelques fioritures. — Chaque ligne BASIC est accompagnée d'une SIGNATURE pre- nant en compte les différents octets de ladite ligne, 4 I’exclu- sion du numéro, du lien vers la ligne suivante et de tout ce qui se rattache 4 une REM éventuelle (REM proprement dite et : qui la précéde le cas échéant). Par ailleurs, les minuscules non accentuées sont assimilées @ leurs homologues majuscules. — Les espaces parasites suivant REM ou DATA sont soigneuse- ment filtrés. Dans une chaine, si l'on a plusieurs espaces adja- cents, les espaces de rang supérieur 4 un sont remplacés lors du listage par des trémas ce qui permet d’en contréler aisé- ment le nombre. Les caractéres de contréle — qu'il vaut mieux éviter (NIBBLE refuse carrément leur présence dans les programmes publiés) — sont affichés sous la forme dévelop- pée ‘ctX’. Sur écran 80 colonnes, ct s‘affiche en INVERSE, CT en INVERSE remplace ct si 40 colonnes. Sur papier, sur IMW et EPSON récente ct sera souligné. — Pour les routines HEXA les listes seront publiées 4 raison de 16 octets par ligne suivis la encore d'une SIGNATURE de contréle, Afin de vous permettre de contréler votre travail de recopie, Tremplin Micro met en vente une disquette regroupant les pro- grammes utilisés pour générer ces listages au prix de 30 francs. * Quelques programmes du présent numéro utilisent déja la formule de contréle mise au point par Yvan KOENIG. Ce systéme se généra- lisera & partir de notre prochain numéro (3 novembre). GUY-HACHETTE DIDACTIQUE Maurice CHAVELLI GRAPHISME.DEMO | vous animez un club ou une classe de micro-informatique, n‘hésitez pas 4 taper patiemment les 68 lignes de cette excel- lente démonstration des possibilités graphiques de l’Apple. Le méme conseil s‘adresse aux débutants et d'une maniére générale, 4 celles et 4 ceux qui ne se sont pas encore intéres- sés aux instructions graphiques de l'Applesoft. 1 REM 2 REM Un amper-interpréteur est caché 1a 3 REM -----------=---------------=------ 4 DATA 201,80,240,30,201,84,240,36,201,7 6,.240.44,32,248.230 202, 134,36,32.183, 0,240, 10,32,245,230,202,138,133,37,32, 34,252,96,32,245 5 DATA 230,32,142,253,202,208,250,96,173 »@,192,16,251.141,16,192,32,177,0,96,3 2,245,230, 134,58,32,245,238,134,59,32, 245,230,138, 76,99, 254 6 FOR C = 768 TO 840: READ A%: POKE C,A% : NEXT : POKE 1014,@: POKE 1015,3 7 POKE - 16197,0: TEXT : HOME : & 11.5: PRINT "Petite démonstration * 8 & 11: PRINT "-------------------- < 9 & 20,11: PRINT "du": & 20: PRINT *--* 10 & 8,18: PRINT “Graphisme Haute Résolut jion* 11 & 8: PRINT "-------------------------- ": & T: & P16: HGR 12 & 5: PRINT "L’instruction BASIC HGR af fiche" 13 & 5: PRINT “et efface la PAGE 1 en lai ssant* 14 & 7: PRINT "4 lignes de texte en bas.. 15 & 5: PRINT "<Pour |’assembleur: F3E2>";: & T 16 & 4: PRINT “Pour couvrir la totalité d e 1’écran" JSR $ 17 & 7: PRINT "il faut faire un POKE-1630 2,0" 18 & 3: PRINT "<Pour |’assembleur: BIT ou LDA $C@52>" 19 & 4: PRINT “Pour revenir en mixte POK E-16301,0";: & T 20 HOME : TEXT : PRINT “De la meme maniér e l’instruction HGR2": & 11: PRINT “af fiche la PAGE 2": & 5: PRINT "Celle-ci n’a pas de mode mixte" 21 PRINT " (du moins pas avec la PAGE 1 d u TEXTE)" 22 & 5: PRINT "<Pour |’assembleur: JSR $F 3D8>" 23 PRINT : PRINT " La page 1 occupe |’esp ace mémoire:": PRINT : PRINT " $2000 / $3FF7... 8192 / 16375" 24 PRINT : PRINT “ La page 2 occupe |’esp ace mémoire:": PRINT : PRINT “ $4000 7 SSFF7... 16384 / 24567" 25 PRINT : PRINT “On peut afficher une PA GE sans |’effacer": PRINT : PRINT " Po ur la PAGE 1: POKE -16308,@ ($C054)": PRINT " Pour la PAGE 2: POKE -16299,0 ($C@55)": PRINT : & T: & P6 26 & S: PRINT “On peut aussi écrire sur | a PAGE": & 1@: PRINT “qui n’est pas af fichée* 27 & P2: PRINT "-> Ecriture PAGE 1: POKE2 30,32 ": & 6: PRINT “En assembleur: LD — TREMPLIN MICRO sosusesazessunnnnauenanenennanunannanuaunnasesenssusuausnensuensensensssunsssosansseenennusnennsnssss GRAPH.DEMO A £920": & 21: PRINT "STA $E6" 28 PRINT : PRINT "-> Ecriture PAGE 2: POK £230,64 ": & 6: PRINT "En assembleur: LDA £840": & 21: PRINT "STA $E6": & PS 2 &T 29 HGR : & 6: PRINT "L’instruction HCOLOR permet": & 10: PRINT “de fixer la cou leur": & T FOR C = @ TO 7: HCOLOR= C: HPLO CALL - 3082: & 15,23: PRINT "HC = "3Cz: & T: NEXT 31 GOSUB 68: & P2: PRINT "La routine HCOL OR se situe en $F6F0": PRINT "Chargez le code de la couleur dans X": & L240, 246,9: & P2 32 & 7: PRINT "Vous pouvez aussi charger" : PRINT "directement $E4 pour gagner d u temps...": & T 33 HGR : PRINT : & 8: PRINT "L’instructio n HPLOT permet": & 12: PRINT “de trace r un point" 34 HPLOT RND (1) * 280, RND (1) * 160: IF PEEK ( - 16384) < 128 THEN 34 35 POKE - 16368,0: GOSUB 68 36 & P2: PRINT "La routine HPLOT se situe en $F457": & L87,244,7: & P2 37 PRINT " En $F411 se trouve la routine HPOSN": PRINT “qui calcule a partir de l’abscisse Y,X": & 10: PRINT "et de | ‘ordonnée A:" 38 PRINT : PRINT "->L’adresse de début de ligne ($26/$27)": PRINT "->HMASK ($30 )": PRINT "->HCOLOR1 ($1C)": PRINT "-> Le numéro d’OCTET dans la ligne ($E5)" :&T 39 HOME : TEXT : HGR : PRINT "HPLOT perme t aussi de tracer des lignes": PRINT : & 9: PRINT “HPLOT X1,Y1 TO X2.Y2 TO.. 4@ HCOLOR= RND (1) * 8: HPLOT RND (1) * 2 80, RND (1) * 160 TO RND (1) * 260, RN D (1) * 160: IF PEEK ( - 16384) < 128 THEN 40 41 POKE - 16368,0: GOSUB 68 42 PRINT : & 5: PRINT "La routine HLIN es t en SF53A": PRINT "Elle trace une lig ne du dernier point": PRINT "“tragé (do Ne qui est passé par HPOSN)": & 5: PRI NT "au point:" 43 PRINT : PRINT : & 5: PRINT "-> ABSCISS (suite) E X,Y": & 5: PRINT "-> ORDONNEE A": & P2 44 & 5: PRINT "Une autre adresse bien uti le!": PRINT "HFIND en $FSCB est 1|’inve rse de HPOSN": PRINT "I1 nous redonne abscisse et ordonnée ": & P2: & 5: PRI NT "-> ABSCISSE $E0,$Ei": & 5S: PRINT * -> ORDONNEE $E2": & T 45 HOME : TEXT : HGR : HCOLOR= 7: PRINT * HPLOT permet aussi de tracer n’ importe “: PRINT "quelle courbe a partir de so n équation." 46 FOR X = 0 TO 14 STEP .08: HPLOT X * 20 , SIN ( - X) * 50 + 100: NEXT : &T 4? TEXT : & P4: & 7: PRINT “Les formes ha 48 PRINT : & 3: PRINT "Une FORME est une suite de vecteurs": & 5: PRINT "de dép lacement dans les quatre “: & 5: PRINT "directions avec ou sans tracé." 49 PRINT : PRINT " Chaque octet de la FO RME est divisé": PRINT “en 3 sections, chacune étant un vecteur": PRINT "Le dernier octet ne contient que des 0." 50 PRINT : PRINT "Plusieurs formes peuven t etre regroupées";: PRINT : & 8: PRIN T “dans une TABLE DE FORMES." PRINT : PRINT " Cette TABLE contient e n tete le nombre": PRINT " de formes p uis leurs adresses relatives": & 6: PR INT "La TABLE est ainsi relogeable.* 52 PRINT : PRINT " Vous allez voir ce qu ‘on peut faire": & 6: PRINT “avec un Ss imple petit carré...": & T 53 DATA 1,0.4,0,45,54,63,36,0: FOR C = 850 TO 858: READ D%: POKE C,D%: NEXT 54 POKE 232,82: POKE 233.3: HOME : TEXT : HGR : HCOLOR= 7: SCALE= 1: ROT= 0: PR INT " DRAW permet de tracer une forme en X,Y": PRINT : & 7: PRINT "Exemple: DRAW 1 AT 10@ , 50": DRAW 1 AT 100,50: &T 55 PRINT : PRINT " SCALE donne la dimens ion de la forme": PRINT : FOR D = 1 TO 40: & 10: PRINT "SCALE = ";D3: XDRAW 1 AT 100,50: SCALE= D: DRAW 1 AT 100,5 @: NEXT : & T: XDRAW 1 AT 100,50 56 & P2: PRINT " ROT permet de faire tou rner la FORME": PRINT : SCALE= 24: FOR D = 0 TO 64: & 10: PRINT "ROT = "sD3: XDRAW 1 AT 100,70: ROT= D: DRAW 1 AT 100,70: NEXT : & T: XDRAW 1 AT 100,70 5 GUY-HACHETTE Sv & P2: PRINT "Vous pouvez créer ainsi d e jolis effets": PRINT : FOR C = 1 TO 2: HCOLOR= C: FOR D = @ TO 64: ROT= D: DRAW 1 AT 130,70: NEXT D,C: & T 58 PRINT : PRINT " XDRAW dessine comme DRAW mais avec": & 8: PRINT "la couleu rc complémentaire* 59 FOR C = 1 TO 2: FOR D = @ TO 64: ROT= D: XDRAW 1 AT 130,70: NEXT D,C: & T: G OSUB 68 60 & P2: PRINT " XDRAW est en $F65D et DR AW en $F601" 61 & P2: PRINT "I] faut mettre les coordo nnées en:": PRINT : PRINT : & 5: PRINT “-> ABSCISSE X,Y": & 5: PRINT "-> ORD ONNEE A" 62 & P2: PRINT "Attention! Les coordonnée s sont celles": PRINT : & 8: PRINT “de la FORME concernée.": PRINT : PRINT : &T 63 & P8: PRINT "Et pour terminer un petit kaléidoscope": PRINT : PRINT : & 4: P RINT "Toujours avec le petit carré!": & P10: & T 64 HGR2 : SCALE= 16:H = 55 STEP 50: HCOLOR= = 3 THENH=5 65 FOR C = 1 TO 250: DRAW 1 AT C,Y: NEXT : FORY=5 TO1 =H+1: IFA 66 SCALE= RND (1) * 100: HCOLOR= RND (1) * 7: DRAW 1 AT RND (1) * 280, RND (1) %* 160: IF PEEK ¢ - 16384) < 128 THEN 6 6 67 HOME : TEXT : END 68 HOME : TEXT : & 12: PRINT "Pour |’asse mbleur*: & 12: PRINT "---------------- ~": RETURN PROGRAMME DE MAURICE CHAVELLI MICRO.BIBLIO ¢ Prolog (Dunod) Llouvrage par Clément RENARD collectif que présente d'abstraction en le replacant dans le cadre plus général de la program- mation en logique. A l'aide de nom- breux exemples et applications qui feront apprécier la fapidité de sa programmation, la facilité de sa mise On assiste dans les communautés scientifiques et industrielles fran- gaises G un engovement croissant pour les langages de |I'intelligence artificielle, les applications de sys- témes experts et, de fagon générale, les outils informatiques destinés, d'une part, 4 la représentation et ala manipulation de connaissances et, d'autre part, & la simulation de rai- sonnements. En cing ans, le langage PROLOG (PROgrammation LOGique) est passé d'une curiosité de laboratoire 4 une réalité industrielle et commerciale. Langage de progammation pour des applications d'intelligence _artifi- cielle, PROLOG est aussi un outil général pour la conception et Vexploitation de systémes experts, pour la gestion de bases de données, le traitement des langues naturelles, la C.A.O. ou le génie logiciel. Tras utilisé tant dans les laboratoires de recherche que dans les centres de développements industriels, il fait l'objet de nombreuses mises en ceuvre destinées 4 la plupart des ordinateurs en usage aujourd'hui. Maryse Condillac décrit en pro- fondeur le langage PROLOG et ses fonctions et donne un panorama de la grande variété de ses applications. ll le présente @ plusieurs niveaux DUNOD au point et le naturel de son expression, les auteurs expliquent ainsi les fondements théoriques et les concepts de base d'un langage en pleine évolution. 314 pages, broché (environ 170 F) e Les meilieurs logiciels pour MO5, TO? et TOS (Marabout) Nos lecteurs enseignants travaillent beaucoup. sur Thomson... ce qui ne les empéche pas de continuer 4 tirer le meilleur parti de leur Apple chéri. lls trouveront, dans ce nouveau volu -me de la collection Marabout Ser- vice, une sélection des meilleurs (du moins aux yeux de |’auteur) logiciels pour apprendre, s’amuser, rire, réfléchir, gérer, créer, dessiner, etc. Il faut noter que la photocomposition du bouquin a été réalisée par l’auteur (Ilya Virgatchik) sur imprimante laser... une méthode d’édition qui tend & se généraliser ! TREMPLIN MICRO NESTOR Instructions Basic APPLESOFT OUS connaissez évidemment les 107 instruc- tions du Basic Applesoft et vous savez qu’elles correspondent plus ou moins (nous y revien- drons plus loin) @ des routines installées 4 demeure dans une ROM (mémoire morte, si vous préférez) de votre Apple. Le nom de cha- que instruction est un mot réservé, c'est-d-dire que vous ne pouvez pas I'utiliser comme nom de variable... et pas davan- tage a l'intérieur d'un nom de variable (FOR=1 est interdit, mais REFORME = 1 I'est aussi). Ces mots-clés du Basic Apple- soft figurent tous dans une table qu'il est facile de lire 4 partir de l'adresse $D9DO (jusqu’d $D25F). Détail amusant, cette table commence par le mot... END. Et ce n’est pas une plai- santerie ! Elle se termine par MIDS... et un beau zéro. LE ROLE DE L'INTERPRETEUR Cst I'interpréteur qui, par |'intermédiaire de la routine PARSE ($D56D), attribue son numéro de code 4 chacune de vos instructions Basic. Ce numéro ne peut étre inférieur 4 $80 (128) ou supérieur a $EA (234). Comment procéde I'interpréteur ? II lit la table caractére par caractére, non sans incrémenter son pointeur & chaque nou- velle instruction... mais il y a un hic. Consultez plutat le début de cette fameuse table : EN DF OR N E DOD@- 45 4E C4 46 4F D2 4E 45 DODS- 58 D4 44 41 54 C1 49 4E Vous constatez que les caractéres s'y suivent sans aucune interruption : END FORNE... sur quel critére l'interpréteur se base-t-il pour savoir que la lecture d'un mot-clé est termi- née... et que celle d'un autre va commencer ? Je suis sir que vous auriez trouvé la solution sans explication ! Les lettres de chaque instruction sont toutes codées 4 partir de la table ASCII normale (A=$41, B=$42, etc.), sauf la der- niére qui est augmentée de $80 (128) et devient donc ; A=$C1, B=$C2, etc. Ce renseignement suffit 4 notre interpréteur pour s'y retrouver ! Quand le CODE de I'instruction (ou son numéro d’ordre, si vous préférez) est connu, il est facile, pour I'interpréteur (toujours lui !), de consulter une autre table (de $D000 4 $D0B1) pour y lire l'adresse de la routine Applesoft corres- pondante, une adresse qu'il y trouve sur deux octets, comme il se doit. Mais je suis persuadé que vous avez mentalement fait un petit calcul dont le résultat vous chiffonne. Tenez ! je parie que vous vous préparez déja 4 écrire 4 Tremplin Micro pour prétendre (6 le vilain... ou l'affreuse Jojette) que Nestor se moque de vous ? Et oui : 2 octets multipliés par 107 instructions, cela nous donne effectivement 214 octets ou $D6... or — voir plus haut — la longueur de la table n'est apparemment que de 178 octets ou $B2... ce qui correspond 4 89 instructions. II existe effectivement 18 instructions sans point d'entrée (de $C0 ou 192 & $D1 ov 209). FAUSSE ET ADRESSE VRAIE Mais ce n’est pas tout. Les adresses des 64 premiéres routi- nes sont fausses. Comme je vous le dis. Elles ne deviennent exactes qu’aprés leur avoir ajouté 1. Etrange, mais vrai. Quant aux adresses des 25 derniéres, elles sont rigoureuse- ment exactes. Nous n’allons pas nous en plaindre... et l'inter- préteur pas davantage ! Tout cela n'est d’ailleurs pas bien grave puisque notre petit programme va vous permettre, & partir du CODE HEXA ou DEC de chaque mot réservé (n’oubliez pas, de $80 4 $EA) : — d'afficher le nom de l'instruction (c’est le plus facile) — son adresse positive... et négative (c'est parfois pratique) — éventuellement de changer le mot-clé pour un autre de méme longueur, a vos risques et périls bien entendu. Je crois que vous voudrez tester la derniére "facilité” du pro- gramme et je vous conseille, dans un premier temps (et aprés avoir sauvegardé votre ceuvre sur disquette) de chan- ger REM pour ***. Lorsque ce sera chose faite, tapez un CTRL-C pour sortir du programme sans RESET, puis un LIST qui vous prouvera que tous vos REM sont bel et bien devenus des ***,.comme dans le listage de Tremplin Micro. Attention ! un RESET rétablit l'orthographe normale, sans aucune influence sur le pro- gramme en mémoire d'ailleurs. Et maintenant, suivez les explications données en regard du listage. Amusez-vous bien ! NESTOR. GUY-HACHETTE sonangcnnvansesssencesersecoeseosssessessnnssscassuesrsessenaEs saeseecoeZsesesscescoeNeouRnoEeNeeeEenEe ATTENTION ! Tapez un REM & la place de *** Un simple RETURN vous don- nera automatiquement la valeur suivante (la premiére étant $80 / 128). Pour aller en avant, taper + (plus) et ensuite des RETURN successifs. Pour revenir en arriére, taper — (moins) et des RETURN. Une valeur HEXA doit étre pré- cédée du $ (dollar). Une valeur DEC sera rentrée sans signe particulier. Pour remplacer un mot-clé par un autre de méme longueur, rentrer £MOT (ou diése-mot avec un clavier QWERTY). Le mot proposé doit compter le méme nombre de caractéres que le mot & remplacer. seeecrasnnswanesecencoaneeD TREMPLIN MICRO 10@ TEXT : PRINT CHR® (21): HOME 105 ONERR GOTO 340: ¥** Fin de programme avec CTRL-C 11@ GOTO 350: *%* Vers routines LM 115 INVERSE : PRINT " POINTS D’ENTREE DES ROUTINES APPLESOF T ": NORMAL : POKE 34,3 120 PRINT "La table commence a |’adresse $D000 et le nu méro de code de chaque routine est compris entre $80 & SEA (128-234) ." 125 VTAB 18: FOR I = 1 TO 10: PRINT "___";: NEXT : PRINT 130 VTAB 20: PRINT " POUR UNE MODIFICATION: ":: INVERS E : PRINT "£NOM": NORMAL 135 VTAB 22: PRINT " RETURN POUR VALEUR SUIVANTE" 140 R = 0:PM = 1 145 VTAB 8: INVERSE : PRINT "NUMERO DEMANDE";: NORMAL : INP UT "> ";CODES 150 *** I] suffit de taper + ou - pour aller en AVANT ou en ARRIERE 155 IF COS = "+" AND R < 107 THEN PM = 1:CO$ = “": GOTO 185 160 IF COS = "-" AND R > = 1 THEN PM = - 1:CO$ = “": GOTO 1 85 165 DI = 1: *#* Adresse + 1 pour les 63 premiers tokens 170 IF COS = "" THEN 185 175 *#% Si COS commence par £, changement de nom 180 IF ASC (CO$) = 35 AND LEN (CO$) - 2 = PEEK (24) THEN GO TO 335 185 IF COS = "" THEN R= R + PM:D =R + 127: GOTO 225 190 IF LEN (CO$) < > 3 THEN 145 195 *** Si CO$ ne commence pas par un $ c’est une valeur dé cimale (a priori) 200 IF ASC (COS) < > 36 THEN D = VAL (COS): GOTO 220 205 *#* Conversion valeur HEXA en valeur DEC 210 D = @:P = @: FOR I = 3 TO 2 STEP - 1:A% = MIDS (CO$,I.1 :A = VAL (AS): IF AS > "9" THEN A = ASC (AS) - 55 > 215 D 220 R 225 I + (A * 16 * P):P = P + 1: NEXT D - 127: ##* R=rang (de 1 a 107...$80-EA...128-234) FR < 1 THEN PM = 1:COS = "": GOTO 185: *#* PM forcé a +1 IF R > 107 THEN PM = - 1:COS = "": GOTO 185: ¥%* PM for céa-i 235 VTAB 8: HTAB 17: PRINT Ds: CALL - 868: HTAB 38: PRINT P M;: IF PM = 1 THEN HTAB 37: PRINT "+" *¥* 18 routines ne comportent pas de point d’entrée ($C 0-D1...191-209) 245 DR = D: IF D > 209 THEN DR = D - 18 250 *%* Ne plus ajouter 1 pour obtenir |’adresse des 25 der niers points d’entrée (donc DI=0) IF D > 191 AND D < 210 THEN DR = @:X = DR:Y = DR:DI = 0 : GOTO 270 260 ¥** Adresses des routines ($D000-SDOCF) 265 ADRESSE = 53248 + (2 * DR) - 256:X = PEEK (AD) + DI:Y = PEEK (AD + 1): IF X > 255 THENX = 0@:Y=Y+1 270 POKE 7,X: POKE 6,Y 275 PRINT : VTAB 11: HTAB 8 230 240 255 = 7 ee Routines Basic Applesoft (suite) 260 *** Liste des tokens ($D@D0-$D25F ou 53456-53855) 285 POKE 25,R: CALL 776:A2 = PEEK (9) * 256 + PEEK (8):Al = A2 - PEEK (24) 298 ¥#%* Affichage du nom 295 FOR J = Ai TO A2: PRINT CHR® ¢ PEEK (J));: NEXT 300 x¥* Affichage de |’adresse décimale (+ ET -) et de l’ad resse hexa 305 PRINT “ ";: IF NOT DR THEN INVERSE : PRINT “PAS DE POIN T D’ENTREE";: NORMAL : GOTO 320 310 AF = PEEK (AD + 1) * 256 + PEEK (AD) + DI 315 PRINT AF" "AF - 65536" $";: CALL 768 320 CALL - 868 325 PRINT : GOTO 145 330 ¥¥*% Remplacement d’un mot-clé par celui de votre choix, mais de longueur identique 335 P = 1: FOR J = Al TO A2 - 1:P = P + 1: POKE J, ASC ( MI DS (CO$,P,1)): NEXT : POKE A2, ASC ( RIGHTS (CO$,1)) + 128: GOTO 220 340 TEXT : HOME : END 345 *#* Routines LM 350 FOR I = 768 TO 819: READ R: POKE I,R: NEXT 355 *%* Copie de $DQ@00-FFFF (ROM) en mémoire auxiliaire et lecture de cette zone commutée sur 1a mémoire vive (ann ulé par un RESET) 360 AS = "D000<DO00.FFFFM D823G": FOR X = 1 TO LEN (A$): PO KE 511 + X, ASC ( MIDS (A$,X,1)) + 128: NEXT : POKE 72, @: CALL - 144: POKE 49283,0: POKE 49283,0 365 ¥#* La ligne précédente est inutile si !’on supprime le changement de nom 370 GOTO 115 375 DATA 165,6,166,7,32,65,249,96,162,0,134,24, 169,208,133, 8,133,9,160,0,161,8,201,128,144,14,230,24,165,24,197,25 240,15, 201,107,240,11, 160,255,200 ,230,8,208,2,230,9,20 8,227,132,24,96 e La ligne 360 copie la mémoire morte en mémoire vive et commute la lecture de cette zone sur la mémoire vive, ce qui obligera l'interpréteur 4 lire vos éventuelles modifica- tions... et @ en tenir compte. Comme cela a été précisé plus haut, un RESET rétablit la lecture en mémoire morte. *D@0@.D@B1 Dela 1’* dla 64°, adresse = adresse + 1 (exemple : $D86F = $D870... END). DGGG- 6F DS 65 D7 FS DC 94 DP Da68- EB Dee8- Bi DB 3@ F3 D8 DF El DB DO7G- 12 D@1G- SF F3 98 F3 E4 Fi DD Fi DO78- A4 DO18- D4 Fi 24 F2 31 F2 40 F2 D? 83 E7 C8 D8 AF DS E3 7A E7 D4 DA 95 DS Dé 69 Dé 9F DB 48 Dé D@26- D7 F3 E1 F3 E8 Fé FD Fé De Ia 65° & la 89°, l'adresse est exacte De28- 68 F7 6E F7 Eé F7 57 FC (TOKEN $D2 a SEA). D@3@- 20 F7 26 F7 74 F7 6C F2 Dese- 96 DO38- SE F2 72 F2 76 F2 7F F2 bess- DE D@40- 4£ F2 6A DY 55 F2 85 F2 DO9e- 8D D@48- AS F2 CA F2 17 F3 BB F3 D@98- EA DOS@- YE F3 61 F2 45 DA 3D D? D@AG- 64 D@S58- 11 DP C8 DF 48 DS F4 43 DeAB- ES D@6@- 28 DP 6A DY DB DY 6D DB DeBe- 91 EB 23 EC AF EB @A 20 E2 12 D4 CD DF FF E2 EE AE EF 41. E9 69 EF EF F1 EF 3A FO 9E FO E7 Dé Eé CS E38 97 E7 Eé 46 E6 SA Eé 86 ES sumunauasensenusosrcnonsunsunensoncesusoecesesensrsseeecoensesnssssesseonesssEesossesseosesseneensoERe GUY-HACHETTE Votre bibliotheéque INFORMATIQUE © Pratique des Apple, volume 4 (Editions Radio)* Il m'a été impossible de vous annoncer la parution de cet ouvrage dans le numéro 9 de Tremplin Micro et je le regrette : je suis en effet persuadé qu'il aurait rendu d'immenses services 4 bon nombre de nos Lectrices et Lecteurs pendant les vacances d'été. Mais il n’est pas trop tard pour essayer de rattraper le temps perdu. Ce quatriéme volet de la Pratique des Apple est consacré au Basic compilé et au langage machine, et je vous assure qu'il mérite de retenir votre attention. J.-C. Fantou, son auteur, sait y expliquer, trés simplement, mais avec une rare maitrise, com- ment court-circuiter l'interpréteur Basic pour accélérer les pro- grammes et créer vos propres instructions Basic. Vinitiation au langage machine est progressive et trés claire. Si vous 6tes encore ignorant en la matiére, il est certain que vous réaliserez, livre en main, de rapides progrés. D'autres sujets retiendront également votre attention : les routi- nes du mode graphique 4 double haute résolution, I'écriture en page graphique de texte 80 colonnes. Quant au chapitre consa- cré 4 l'apprentissage d'un assembleur tel que Toolkit, Lisa ou Big Mag, il est évident qu'il satistera bien des curieux. J’en aurai terminé quand j‘aurai précisé que J.-C. Fantou — qui n‘en est pas 4 son coup d’essai puisque nous lui devons déja, dans la méme excellente collection, Graphisme et Son — tient évidemment compte des instructions du 65C@2. Chapeau ! par Guy HACHETTE PRATIQUE des DU BASIC COMPILE AU LANGAGE MACHINE * 226 pages /210 X 295 mm /150F APPLE Ho To POOLE ° Manvel de l'utilisateur des Apple Ill (Editions Radio)* MANU EL 155 % 240mm 7 240F Ile Si je vous dis que les louanges adressées au précédent conviennent également 4 la méthode de Lon Poole (version francaise de J.-C. Fan- tou... toujours lui !), vous allez probablement me soupconner d'avoir recu d'icelui, pour prix de ma brosse 4 reluire, quelque ouvrage inter- dit de la collection X. Détrompez-vous : je ne connais pas J.-C. Fantou et pas davantage les responsables des Editions Radio, mais il se trouve que je suis emballé par cette deuxiéme édition. Pour ne rien vous cacher, j'ai commencé mon apprentissage avec la premiere édition, il y ade cela quelques années. Elle m‘avait beaucoup aidé, mais je me souviens avoir longuement séché sur certains de ses chapitres. Les actuels acheteurs d'un Apple, et notamment d'un Ilc ont beaucoup de chance. Les meilleurs livres américains ont été traduits et il existe de bons auteurs francais (il suffit de lire réguligrement cette rubrique pour s’en convaincre). Bref, je vous conseille ce Manuel de I'utilisateur. L'’éditeur prétend que c'est une véritable “bible des Apple”. Je ne le démentirai pas. D'abord parce qu'il traite — et fort bien — les points qui posent le plus de problémes 4 nos Lectrices et Lecteurs : gestion des fichiers, pro- grammation de la souris, son et musique, etc. Ensuite parce que, pour une fois, 'imprimante n‘a pas été oubliée. Parfaitement : reconfigura- tion du port numéro un, tabulation et mise en page, micro- interrupteurs, définition de caractére 4 la demande... qui dit mieux ? TREMPLIN MICRO PRATIQ GREFFE-LM NESTOR OMMENT dissimuler une courte routine LM en téte d'un programme en Basic ? Cette question — 6 combien indiscréte ! — m‘a été posée par plusieurs Lectrices et Lecteurs de Tremplin Micro. Voici une solution simple et amusante. I s'agit ici de disposer d'un sous-programme capable de tracer rapidement un cadre (en 40 ou en 80 colonnes). Je me suis paresseusement contenté de reprendre celui paru dans les pages 40 et 41 du numéro 7 de T.M. Commencez par le taper (encadré, en bas de la page)... Marche @ sulwre : on ne peut plus simple ! © Connaitre la longueur exacte de la routine LM ; dans le cas pré- sent, celle-ci est de 46 octets ($2E) ; © Taper un NEW, puis le programme de la page 11, en veillant a ce que le nombre d'astérisques de la ligne 100 soit rigoureuse- ment égal a la longueur de la routine LM ; © Passer en mode Moniteur par un CALL-151 ; © Afficher le début du programme par 800.83F: normalement, s‘il n'y a pas d’erreur de saisie dans les lignes 100 et 105, le résultat doit étre identique 4 I'exemple donné ci-contre. Si ce n’est pas le cas, vérifier le nombre d’astérisques ou rentrer une nouvelle ligne en supprimant les espaces ; © Sauver cette premigre mouture sur disquette (on ne sait jamais !) ; © Taper un BLOAD GREFCADRE, A$806 ; © Refaire un CALL-151, puis 800.83F... et comparer au modéle ci-contre ; © Lister le résultat... la ligne 105 aura changé d'aspect, comme le montre mon exemple ; © Run... et sigane marche pas, rerevérifier le tout car il y a forcé- ment une erreur quelque part ! * Ne pas oublier de sauver cette ultime version et s‘offrir le luxe de la soumettre a un copain (de préférence néophyte) qui s‘interrogera longuement... et en pure perte sur le sens des étranges instructions de la ligne 100 !. Votre toujours dévous : NESTOR *800.83F AVANT BLOAD GREFCADRE 0800- 00 35 08 64 OO B2 2A 2A @808- 2A 2A 2A 2A 2A 2A 2A 2A @810- 2A 2A 2A 2A 2A 2A 2A 2A @818- 2A 2A 2A 2A 2A 2A 2A 2A 0820- 2A 2A 2A 2A 2A 2A 2A 2A 0828- 2A 2A 2A 2A 2A 2A 2A 2A @830- 2A 2A 2A 2A 0@ 47 08 69 0838- 08 BA E7 28 34 29 22 50 * *800.83F APRES BLOAD GREFCADRE 0800- 00 35 08 64 00 B2 20 58 @808- FC AS @6 A2 51 20 ED FD @810- CA D@ FA A2 16 20 62 FC @818- 20 10 FC AS 06 20 ED FD @820- 20 ED FD CA D@ EF A2 4E 0828- 20 ED FD CA D@ FA 86 25 0830- 8D F7 07 60 00 47 08 69 0838- @@ BA E7 28 34 29 22 50 x300.320 = GREFCADR 9300- 20 58 FC AS 06 AZ SI 20 @308- ED FD CA DO FA A2 16 20 @310- 62 FC 20 16 FC AS 06 20 @318- ED FD 20 ED FD CA DO EF @320- A2 4E 26 ED FD CA Da FA @328- 86 25 8D F7 07 60 BSAVE GREFCADRE, A$300, L$2E Si vous étes débutant(e), rentrez cette courte routine de la maniére suivante : 18 FOR I = 768 TO 813: READ R: POKE 1,R: NEXT 20 PRINT CHR$ (4)"BSAVE GREFCADRE ,A$380 ,L$2E” 38 DATA 32,88,252,165,6,162,81 ,32,237,253,202,2 08, 250, 162,22, 32,98, 252,32, 16,252,165,6,32, 237, 253,32, 237,253,202, 208,239,162, 78,32,23 7,253, 202,208,250 ,134,37,141 ,247,7,96 Terminez par un RUN GUY-HACHETTE sougugausquuneneconsenasunsuaueanescessensorsenenzsseseessssaeenaeconscensesseneaaceeenDeeceeswescuscen Naturellement, le nombre d'astérisques —_ pourrait @tre supérieur 4 la lon- gueur de la routine LM. L'essentiel est qu'il ne soit surtout pas plus petit ! QUESTION : Le BLOAD GREFCADRE est- il indispensable ? Réponse : non. Quand la routine LM est installée & ladresse $309, il suffit de passer en mode moniteur par un CALL-151, puis de réaliser un transfert de la maniére suivante : * 806 < 300. 32DM... tour est joué ! et le Vous constatez que votre Apple se débrouille, plu- t8t bien quand il s‘agit d'afficher des inepties ! 100 REM 9616369601600 GE HEHEHE 105 PRINT CHRS (4)"PR£3": PRINT 110 VTAB 10: HTAB 3: PRINT "<1> 40 COLONNES <2> 8@ COLONNES “3: CALL - 198: GOSUB 150:N = PEEK ( - 16384) - 48 115 IF N <> 1 AND N < > 2 THEN 130 “120 POKE 6,160: CALL 2054: POKE 6,32: REM EFFACEMENT DU CADR E ANTERIEUR EVENTUEL 125 PRINT N = N - 48: POKE 2060,1 + 40 * N: POKE 2087,(40 * N) - 2: PRINT CHR$ (16 + ND: CALL 2054 130 IF N < > - 21 THEN 110 135 CALL 2054: VTAB 22: HTAB 3: PRINT "<1> MENU DE DISQUETTE <2> TERMINE “:: CALL - 198: GET R$: PRINT : IF RB = "1" THEN PRINT CHRS (4)"RUN MENU" 140 IF R$ = "2" THEN PRINT CHRS (21): HOME : END 145 GOTO 135 150 POKE - 16368,0: WAIT - 16384,128,127: POKE - 16368,0: PR INT : RETURN LA LIGNE 100 APRES LE BLOAD 100 REM X ERRORS ONERR § VTAB ) RETURN WITHOUT GOSUB h * = C AN‘T CONTINUE VTAB § b ERRORS § ERRORS ONERR § RETURN WI THOUT GOSUB h RETURN WITHOUT GOSUB h * = ILLEGAL QUANT ITY VTAB & RETURN WITHOUT GOSUB h * = CAN’T CONTINUE DI M % PLOT TYPE MISMATCH §* Si vous examinez I'extrait de la mémoire de votre Apple aprés le BLOAD... ou le TRANS- FERT, vous constaterez que les octets $801-802 contiennent l’adresse de la ligne suivante, en l'occurrence la ligne 105. Essayez donc de rem- placer $35 (en $801), par $47 (lu & I’adresse $835), puis listez votre programme : la ligne 105 a tout bonnement disparu, ce qui ne géne en rien le fonctionnement de la routine. On ne commencera plus par un PRE£3 et c'est tout ! Moralité : & la suite d'une ligne de REM, on peut s‘offrir certaines libertés ! UN DERNIER CONSEIL Vous serez peut étre tenté de supprimer le REM... mais je vous promets que votre Apple n‘aimera pas cela du tout. Par contre, si vous désirez modifier le numéro de |'actuelle ligne 109, vous y étes autorisé. Il est contenu dans l'adresse $803 ($64). TREMPLIN MICRO PROLONGEMENT... A partir du méme programme, changez la ligne 100 pour : 100 TEXT : HOME 101 REM + 46 astérisques Ajoutez un POKE 2049,61 a la ligne 105, et + 8 un peu par- tout : CALL 2062 ; POKE 2068 ; POKE 2095... sans rien oublier et surtout pas de taper un POKE 2049,61. Ensuite : BLOAD GREFCADRE, A$80E Vous aurez ceci : 0806- 68 3D 88 64 06 89 3A 97 0808- 68 3D 68 65 86 B2 20 58 0810- FC AS 86 A2 29 28 ED FD 0818- CA DO FA A2 16 28 62 FC 8820- 28 18 FC AS 06 28 ED FD In'y aplus de ligne 101, mais le programme fonctionne. Vous trouverez la 0828- 20 ED FD CA DO EF Az 26 igne 10! Por 0830- 20 ED FD CA Da FA 86 25 LOAD SIIIT, 0838- 8D F7 07 60 00 4F 08 89 Gsnrina de 0848-88 BA E7 28 34 29 22 50 nouveau aprés un 0848- 52 23 33 22 3A BA OB 9A RUN (le POKE de 8858- 08 la ligne 105 !). W ee ILITAIRE Patrick QUETTIER Double haute résolution sur imprimante EPSON RAPPELS SUR LA DOUBLE RESOLUTION : On obtient une définition de 560 points sur 192 points. Elle occupe 8184 (=$IFF8) octets de 8192 (=$2000) a 16375 (=$3FF7) simultanément en RAM Apple (colonnes 7 413, 21 4 27, etc.), et en RAM carte 80 colonnes (colonnes 0 46, 144 20, etc.). Il est possible d'enregistrer sur dis- quette un tel graphique. Un moyen trés simple est de le stocker sous forme de deux fichiers binaires. Pour enre- gistrer un graphique sous le nom N$= "DESSIN", par exemple, il faut utiliser le petit programme suivant : 5 AS = "300 : 38 BO 01 18 A2 20 86 3D 86 43 A200 86 3C 86 42 CA 86 3E A2 3F 8D 00 CO 20 11 C3 8D 01 CO 60 ND7D2G" 6 FORI = 1 TO LEN(AS) : POKE 511 + 1, ASC(MIDS(AS, 1, 1)) + 128: NEXT: POKE 72,0: CALL—144 10 PRINT CHR$(4) "BSAVE"NS".IMP, A8192, L8184":.CALL 768 + 3: PRINT CHRS(4) “BSAVE"NS$".PAI,A8192, 18184" On obtient ainsi deux fichiers binaires appelés DES- SIN.IMP (colonnes 7 4 13, 21 & 27, etc.), et DESSIN.PAI (colonnes 0 4 6, 14 4 20, etc.). De la méme facon, pour le recharger en mémoire, il faut utiliser ce programme : 5 et 6 inchangées 20 PRINT CHR$(4) “BLOAD"NS".PAI,8192": CALL 768 : PRINT CHRS(4) "BLOAD"N$".IMP,A8192" Pour basculer I'affichage en mode graphique double hau- tre résolution, il faut (le mode 80 colonnes étant déja mis) utiliser la ligne suivante : 30 POKE 49246,0: POKE 49239,0: POKE 49234,0: POKE 49232,0 Pour avoir un mode mixte (4 lignes de texte en bas), il faut remplacer 49234 par 49235. Pour revenir au mode texte standard, il faut faire : 70 POKE 49233,0: POKE 49238,0: POKE 49247,0 L’Apple n‘a pas la possibilité de créer ses propres gra- phiques (sous Basic) comme il le permet pour la haute résolution standard (HPLOT, etc.)... Toutefois, les posses- seurs d'une carte Chat Mauve, pourront utiliser le logiciel ARLEQUIN (fourni avec FELINE) ou PURPLESOFT (fourni avec la carte EVE) et travailler en double haute résolution. Il faut remarquer que ces logiciels fonction- nent aussi avec une carte 80 colonnes étendue (le DES- SIN.1 de la disquette Tremplin Micro a été réalisé de cet- te facon), mais que seul ARLEQUIN fonctionne sur le IIc ! UTILISATION DE LA ROUTINE DANS UN PROGRAMME BASIC (précautions) : Pour éviter tout conflit de mémoire entre le Basic, la page graphique haute résolution et la routine en langage machine, il est souhaitable de charger le Basic (par exem- ple) au-dessus de la page graphique : c'est-d-dire & partir de 16384 (=$4000). Sous DOS 3.3, cela laisse environ 21K octets de libres pour le Basic et ses variables. On peut obtenir ce résultat de 3 fagons : — entrer au clavier POKE 103,1: POKE 104,64: POKE 16384,0 puis RUNer le programme basic. — écrire un petit programme Basic qui lancera le pro- gramme Basic principal (c'est le cas de DEMO. LANCE). 10 POKE 103,1: POKE 104,64: POKE 16384,0: PRINT CHRS(4) ; "RUN Programme principal” — placer en téte du programme principal la ligne : 1 IF PEEK(104) <> 64 THEN POKE 103,1: POKE 104,64: POKE 16384,0: PRINT CHR$(4) "RUN Programme". UTILISATION DE LA ROUTINE DANS UN PROGRAMME BASIC (mode d'emploi) : La routine machine mise précédemment en place par les lignes 5 et 6 est ici inutile car COPIE.HGRI6.EPS la con- tient. Le programme Basic devra, dés le début, contenir la ligne suivante (les numéros sont donnés 4 titre indicatif) : 10 PRINT CHRS$(4)"PRE3" : PRINT : PRINT CHR$(4) "BLOAD COPIE.HGRI6.EPS” Uobjet de cette ligne est d'initialiser la carte 80 colon- nes et de charger en mémoire la routine en langage machine. Il faut ensuite charger la page graphique 4 imprimer 4 partir d'une disquette. Voir plus haut l'exem- ple de la ligne Basic numéro 20. On peut ensuite I’afficher 4 la vidéo (ligne numéro 30). Avant de lancer I'impres- sion, il est nécessaire de régler deux paramétres de la Sega saesenooesseenseernssseeneReseoo esses ONNOASeesTeRsCe Ese esaAE eee SECON ANT eeesoeseEEeTeeEeseeeeeeeneS 12 GUY-HACHETTE routine binaire. On peut évidemment ne pas le faire et laisser les valeurs par défaut déja présentes. AQ POKE ENTREE + 13,X (avec X compris entre @ et 33). Cela correspond 4 la tabulation horizontale du dessin sur la feuille (0 = 4 gauche, 33 = @ droite). La valeur prise par défaut est X = 0 (réglage |). 50 POKE ENTREE + 14, Y avec Y = 0 (dessin en positif) ou Y = 255 (dessin en négatif). La valeur prise par défaut est Y = 0 (réglage O). Il faut alors lancer I'impression : 60 PRINT CHR$(4) "PREI" : PRINT : POKE 1657,80 : CALL ENTREE : PRINT CHRS(4) "PRES" On peut ensuite remettre la page texte 4 |'écran (ligne numéro 70 page’12). En utilisant CALL ENTREE + 3 on exécute une copie d'écran 4 |’échelle deux. Voici, comme exemple, un (mini) programme qui uti- lise la routine pour imprimer un graphique appelé DESSIN en négatif et a droite de la feuille : 1 comme ci-dessus 10 D$=CHRS(4) : PRINT D$"PR£3" : PRINT D$"BLOAD COPIE.HGRI6.EPS" 15 N$="DESSIN" : ENTREE = 2048 20 PRINT D$"BLOAD"N$".PAI, A8192" : CALL ENTREE + 6 : PRINT D$"BLOAD"N$".IMP, A8192" 30 POKE 49246,0 : POKE 49239,0 : POKE 49234,0 : POKE 49232,0 40 POKE ENTREE + 13,33 50 POKE ENTREE + 14,255 60 PRINT D$"PRE1" : PRINT : POKE 1657,80 : CALL ENTREE + PRINT D$"PRE3" 70 POKE 49233,0 : POKE 49238,0 : POKE 49247,0 Aprés l'impression, |'imprimante se remet en interli- gne 1/8° de pouce. Pour obtenir 1/6* de pouce, il faut faire POKE ENTREE + 12, 178 avant de lancer la routine (réglage G). On peut aussi choisir de loger la routine & une autre adresse. Pour cela, il faut assembler le fichier COPIE.HGRI6.EPS.S aprés avoir défini ORG avec la nou- velle valeur choisie pour ENTREE. NOTE DE YVAN KOENIG : Tremplin ne possédant pas d'imprimante EPSON, j‘ai 616 amené 4 intervenir sur le programme de. Patrick QUETTIER pour en contréler le bon fonctionnament. Aucun probléme si ce n’est avec la routine de charge- ment qui, chargeant directement DESSIN.PAI en mémoire auxiliaire provoquait des bruits désagréables au niveau du lecteur de disquettes ce qui m‘a conduit 4 introduire la routine de transfert MAIN <—» AUX. Il m‘a semblé intéressant de mettre en ceuvre quelques modifications annexes : * ajout de l'option taille 2 » change des positions des modules programme et table d’adresses afin de permettre de coupler cette routine avec un programme relogeur semblable 4 celui de PRO.TYPC (Tremplin Micro n°9) pour placer la routine entre ProDOS et ses buffers. Pour les lecteurs ne disposant pas de la disquette Tremplin, j'ai ajouté deux programmes d'aide. Si vous tapez directement le code objet, FAIT. ADRESSE va générer pour vous la table d’adresses, il vous suffira aprés avoir tapé la partie programme de faire BLOAD ADRESSE puis BSAVE COPIE.DHGR.EPS, A$800, L$300. Si vous saisissez la source en assembleur c'est FAIT. T.ADRESSE qu'il vous faut. Si vous travaillez avec MERLIN, supprimez la ligne 125 puis faites RUN FAIT.T.ADRESSE. Vous pourrez charger la source de la table sous MERLIN en faisant appel 4 la commande R(ead) ADRESSE (ne pas taper le préfixe T.). Si vous travaillez avec un LISA (1.5, 2.5, 2.6) la ligne 105 est pour vous. Créez votre ficher T.ADRESSE par un run FAIT.T.ADRESSE. Sous LISA il vous suffira de faire CTRLD EXEC T.ADRESSE pour voir le code source se mettre en place automatiquement. Pour les lecteurs qui souhaitent travailler avec la rou- tine entre ProDOS et ses buffers nous publions un module relogeur qui permet d'effectuer le déplacement de la rou- tine en corrigeant les adresses qui doivent |'étre. Ce module peut étre configuré en relogeur simple comme ici ou en relogeur d'une commande externe comme PRO.TYPC de Tremplin n°9. Dans le but d’éviter la publication répétitive du méme module, celui-ci a été concu de fagon 4 rendre son adap- tation @ chaque cas aussi simple que possible. Aprés avoir tapé le code faites BSAVE RELOPROI0, A$60D5, 1$12B. Pour utiliser avec un module commande externe, il faudrait modifier la zone 612D-613B et faire 615D: 8D 07 BE (STA EXTRNCMD + 1). Par ailleurs : 60D6 contient le nombre de pages utilisées par la routine 6148 et 614C = ENDPROG-1 (octet bas/octet haut) 6150 et 6154 ENDALL-1 619D et 61Al ENDADRS-1 ...... serena 619A vaut 90 s'il y aune table d’adresses, BO sinon 61B5 vaut 90 s'il y aune table de données, BO sinon 61C0/61C) peut nécessiter une adaptation. Le module actif nécessite quelques ajustements. Je suppose que vous avez sauvé RELOPROIO et COPIE. DHGR.EPS. Faites BLOAD RELOPROIO puis BLOAD COPIE.DHGR. EPS, A$6200. Maintenant attention, on ajuste : Placez $62 en 6202. 6205, 6208, 620B, 6242, 624B, 624E, 6251, 625B, 6261, 626B, 62B9, 62BF, 62E2, 62F0, 6300 Placez $63 en 6268, 6272, 6278, 627D, 6282, 6299, 62BC, 62E7, 62FD, 6303, 6318, 631D, 632A Placez $64 en 629E $6257: 78 63 $62F1: 00 00 00 00 00 00 00 00 $6378: EA EA 26 FF 2F 62 30 63 BSAVE RELCOPYDHGREPS, A$60D5, 11067 qu'il faudra transférer sous ProDOS avec le FILER. $625D: 7C 63 Pr ela lalatelatatalatelataiaiedaaialalealalalalatal TREMPLIN MICRO 13 JERI AE * * Copie double haute-résolution * Imprimante Epson paralléle 76190 Yvetot x KK EK KK RK * * * Patrick QUETTIER * * * JHE EE IEE * Assembleur MERLIN BIG-MAC * Révision 25/04/86 HII HE “Début : 2048 $08.00 *Fin: 2815 $O0A.FF *Longueur: 768 $03.00 ‘Table: 2432 $09.80 “Longtable: 384 $01.80 JH Ee Wariables utilisées par le programme * RAM MAIN = RAM carte mére SSSRRPESSASVSLLLCLRRWWNNNNNNNNNNE EERE Ee eR EE OODYAMRONE WDNAATRON=-SVDIAUBRWONE SVDIAGHRANK SQVBIATAON-O * RAM AUX RAM carte 80 cols Slot = 1 FLAG = 6 +1-RAM AUX (1) - RAM MAIN (0) csw = $36 32-Adresse sortie caracteres START = $3C END = $3E DEST = $42 SAUVTAB = 237 +1-Sauvegarde de VTAB COBITVT = 239 +1-Compteur bits de COLONNE HGR = 249 32-Adresse en page HGR de la RAM VTAB = 251 +1-Tabulation verticale 0 a 191 COBITHT = 254 31-Compteur bits octet RAM HGR COLONNE = 255 31-Colonne a imprimer ENTREE = $800 + 2048 en décimal STOR80OF = $C000 STORE80 = $C001 iUtilisation pages carte 80 TXTPAGE1 = $C054 sCommute RAM MAIN Sivous TXTPAGE2 = $COSS sCommute RAM AUX n‘utilisez LORES = $C0S6 ;Page texte pas un HIRES = $C0S7 sPage HGR assembleur, 59 crour «=~ SFDBE vous n‘avez 51 rien 4 taper S21 EEE I dans cette 53 ORG ENTREE page... 54 JES E 14 GUY-HACHETTE 0800: 0803: 0806: 0809: o80c: osoD: O80E: O80F: 0810: 0812: 0813: 0815: 0817: 0819: 081B: 081D: O81F: 0820: 0822: 0824: 0826: 0829: 082C: 082F: 0830: 0832: 0833: 0835: 0837: 0839: 083B: 083D: O83E: 0840: 0843: 0845: 0847: 4c 4c 4c 4c BO 00 00 88 RRSRRVS ag 48 A2 AO Ag DO Ag 48 Ag 8D A2 AO Ag 30 3B oF 12 03 00 oD 04 60 04 08 08 08 888 08 *Début du programme - Appe! par le basic JMP = TAILLE1 3 CALL ENTREE JMP = TAILLE2 3 CALL ENTREE+3 JMP MAIN_AUX ; CALL ENTREE+6 JMP AUX_MAIN ; CALL ENTREE+9 * Table de 3 octets pouvant rester dans * la zone programme en cas d’adjonction * d’un module relogeur qui croirait * y trouver un BCS ... suivi d’un BRK. INTERLIG DFB "0" MARGE DFB OO MASQUE DFB 0 JH IIT IE MAIN_AUX SEC BCS MOVER ;Toujours AUX_MAIN CLC MOVER LDX £>$2000 STX START+1 STX DEST+1 LDX £<$2000 STX START STX DEST DEX sX=FF = £<S3FFF STX END LDX £>$3FFF STX END+i STA STORS0OF JSR $C311 sCopie MAIN <-> AUX STA STORES80 RTN RTS JET IO TAILLE1 LDA £2-1 PHA scompteur pour modif LDX £8 LDY £<560 LDA = £>560 BNE AJUSTE sToujours TAILLE2 LDA £4-1 PHA LDA £0 STA MARGE sMarge nulle si double LDX £4 LDY £<1120 LDA £>1120 (suite page 16) sRéglage POKE ENTREE+i2, 176/178 sRéglage POKE ENTREE+i3.marge sRéglage POKE ENTREE+14, 0/255 TREMPLIN MICRO 15 ——~seseeeenensanenessssssseenennanenssesseneeneeensnenssensensnneeresensenanesennenetereseeeeeensess 108 0849: SE 92 08 109 AJUSTE STX LBL1+1 EPSON . 084C: BC 7A 08 110 STY LBL8B+1 (suite) O84F: 8D 7F 08 111 STA LBL8H+1 0852: 68 112 PLA 0853: AA 113 TAX 0854: AO O01 114 LDY £2-1 0856: BD Fi 08 115 gL LDA VARITBL1,X 0859: 99 AD 08 116 STA LBL31,Y Ossc: BD F5 08 117 LDA VARITBL2,X O8SF: 99 BE 08 118 STA LBL32+1,Y 0862: CA 119 DEX 0863: 88 120 DEY 0864: 10 Fo 121 BPL §L 122 0866: 20 0A 09 123 JSR INITIMP 124 125 #-----~----------------_. 126 *Impression de la Page HGR 127 0D 08 128 LBLO LDX MARGE sMet la marge de début de ligne 08 129 BEG LBL8 3S1 marge nulle AQ 130 LDA og" 2009 131 LBLO JSR PRINT2 132 DEX FA 133 BNE LBL9 134 0876: 20 26 09 135 LBLe JSR ESC_L 0879: A9 30 136 LBL8B LDA £<560 $1120 si double (octet bas) 087B: 20 2D 09 137 JSR PRINT1 O87E: AY 02 138 LBL8H LDA = £>560 $1120 si double ‘octet haut) 0880: 20 2D 09 139 JSR -PRINT1 spour 560 aiguilles (1120) 140 0883: AS FB 141 LDA VTAB sSauvegarde VTAB 0885: 85 ED 142 STA SAUVTAB 0887: AO O1 143 LDY £1 0889: 84 FE 144 STY COBITHT sCOBITHT=1 O88B: 84 06 145 STY FLAG 3 FLAG=1 O88D: 88 146 DEY +Y=0 CHTAB par le registre) O88E: 2C 55 CO 147 BIT TXTPAGE2 Commute RAM carte 80 148 0891: A? 08 149 LBL LDA £8 sCOBITVT=8 (4 si mode double) 0893: 85 EF 150 STA COBITVT 151 0895: AG FB 152 LBL2 LDX VTAB sHGR=adresse début ligne VTAB 0897: BD 80 09 153 LDA —GBAS_HI,X O89A: 85 FA 154 STA HGR+1 089C: BD 40 0A 155 LDA GBAS_LO,X O89F: 85 FO 156 STA HGR 157 O8A1: Bi FO 158 LDA CHGR),Y sA=octet page HGR en CHTAB, VTAB) O8A3: A6 FE 159 LDX COBITHT *Récupére bit COBITHT de A O8AS: 4A 160 LBL3 LSR A O8AG: CA 161 DEX 16 ; GUY-HACHETTE ] O8A7: DO FC 162 BNE LBL3 | O8A9: 08 163 PHP | O8AA: 26 FF 164 ROL COLONNE sAjoute ce bit a COLONNE ] O8AC: 28 165 PLP | O8AD: EA EA 166 LBL31 HEX EA,EA +ROL COLONNE en mode double O8AF: E6 FB 167 INC VTAB sCalcule prochain VTAB (+1) O8B1: C6 EF 168 DEC COBITVT ;Continue pour COBITVT=8 a 1 08B3: DO EO 169 BNE LBL2 170 O8BS: AS FF 171 LDA COLONNE sEnvoie COLONNE a 1’ imprimante 08B7: 4D OE 08 172 EOR MASQUE :Réglage 0 O8BA: 20 2D 09 173 JSR PRINT1 O8BD: 20 2F 08 174 LBL32 JSR RIN 3JSR PRINT10 en mode double 175 O8CO: E6 FE 176 INC COBITHT ;COBITHT=COBITHT+1 08C2: AS FE 177 LDA COBITHT 08C4: C9 08 178 CMP £8 08C6: 90 OF 179 BCC LBL4 : COBITHT<8 continue meme octet 180 08C8: A? O1 181 LDA £1 O8CA: 85 FE 182 STA COBITHT O8CC: ES 06 183 SBC FLAG O8CE: 85 06 184 STA FLAG ° 185 ;O0n passe en RAM MAIN pour O8D0: FO 0S 186 BEG LBL4 e meme HTAB si FLAG=0 187 :O0n passe en RAM AUX pour 08D2: ca 188 INY sHTAB=HTAB+1 si FLAG=1 08D3: CO 28 189 CPY £40 O8D5: FO 0c 190 BEQ LBLS 3Cas HTAB=40 ligne suivante 191 08D7: AS ED 192 LBL4 LDA SAUVTAB 3Cas continue meme ligne O8D9: 85 FB 193 STA VTAB sRécupére VTAB O8DB: A6 06 194 LDX FLAG :;Commute la page FLAG O8DD: 9D 54 CO 195 STA TXTPAGE1,X O8EO: 4C 91 08 196 IMP =LBLI 197 O8E3: A? 8D 198 LBLS LDA = £13+$80 3CR OBES: 20 20 09 199 JSR PRINT2 sfin de la ligne O8E8: AS FB 200 LDA VTAB ;Continue pour VTAB=0 a 191 O8EA: C9 CO 201 CMP £192 OBEC: FO OB 202 BEQ FIN O8EE: 4C 69 08 203 JMP = LBLO 204 20S 1699898 EE EEE 206 O8F1: EA EA 207 VARITBLi HEX EA,EA + NOP NOP en mode simple O8F3: 26 FF 208 ROL COLONNE + si mode double 209 O8FS: 2F 08 210 VARITBL2 DA RTN 3 JSR RTN en mode simple O8F7?: 30 09 211 DA PRINT10 : JSR PRINT10 si mode double 212 2191 III IIE 214 * Tout ce qui suit fonctionne avec (suite page 18) TREMPLIN MICRO 7 EE EEEEESSS'S'S;: S$» “~-ensenernennneennrnnenenennnennnenensesenttentnestscesentererterenteeeeeeeeeeee 215 * IIE ou /e et Imprimante paralléle EPSON 216 * Il serait nécessaire de modi fier 217 * pour //c et imprimante série EPSON 218 ELLLLLLLLLILL TT TTT TT TTT ttt 219 220 Fin - Retour au basic 221 O8F9: AS 9B 222 FIN LDA £27+$80 sImprimante remise en interligne O8FB: 20 20 09 223 JSR PRINT2 sstandard O8FE: AD 0C 08 224 LDA —_INTERLIG 0901: 20 20 09 225 JSR PRINT2 0904: 2¢ 56 co 226 BIT LORES 0907: 4C 8E FD 297 JMP = CROUT 228 229 JES IIe 230 231 INITIMP 090A: A® O90 232 LDA £0 ;VTAB=0 090C: 85 FB 233 STA VTAB O90E: 8D 01 co 234 STA STORE80 0911: 2C 57 co 295 BIT HIRES 0914: A 9B 236 LDA £27+880 sInitialisation de 1’ imprimante 0916: 20 20 09 297 JSR PRINT2 iInterligne m=8 0919: AO ci 238 LDA £"A" 091B: 20 20 09 239 JSR PRINT2 O91E: AO 88 240 LDA = £8+$80 241 0920: 2¢ 54. co 242 PRINT2 BIT TXTPAGE1 0923: 6C 36 00 249 JMP = (CSW) 244 245 ELE LLLLLLELELEL TT LT TTT TTT 246 0926: A? 1B 247 ESC_L LDA £27 sESC 0928: 20 2D 09 248 JSR PRINT1 092B: AS 4c 249 LDA £’L’ smode double densité 250 251 * Saut a 1’imprimante EPSON paral léle 252 092D: 2C 54 co 253 PRINT! BIT TXTPAGE1 0930: 2c c1 C1 254 PRINT1O BIT Slot%*$100+8C0C1 0933: 30 FB 255 BMI PRINT10 0935: 8D 90 co 256 STA Slot *$10+8C080 0938: 60 257 RTS 258 259 bbb LELELELLLLLELLL LLL TTT TTT) 260 « 261 « Logiquement, la carte EPSON NON graphique 262 * doit fonctionner également 263 *% cf: POM’S 17 264 * On laisse de la place pour les 265 * modifications pour sortie série 266 #*---------- 0939: 00 00 00 267 DS $980-% 18 GUY-HACHETTE 098C: 00 00 00 00 00 00 00 0944: 00 00 00 00 00 00 00 094C: 00 00 00 00 00 00 00 0954: 00 00 00 00 00 00 00 00 095C: 00 00 00 00 00 00 00 00 0964: 00 00 00 00 00 00 00 00 O96C: 00 00 00 00 00 00 00 00 0974: 00 00 00 00 00 00 00 00 097C: 00 00 00 00 0 SUITE ° DELA PAGE 18 i] 0 ti) Et maintenant, suivant que vous utiliserez ou non un assembleur, tapez l'un de ces deux programmes d'aide (lire page 13). FAIT.ADRESSE 1 REM "FAIT.ADRESSE 10 PRINT CHR (21) A455 20 TEXT : HOME 1C5A 30 HGR : TEXT 7854 40 VTAB 10: PRINT "PATIENCE, JE CO NSTRUIS LA TABLE" 037E 50 Di = 2432:D2 = Di + 192 1E69 60 FOR I = 0 TO 191: HPLOT 0,1 4298 70 POKE Di + I, PEEK (39) AFOA 80 POKE D2 + 1, PEEK (38) 1D0A 90 NEXT 0582 100 PRINT CHRS (4)"BSAVE ADRESSE,A $980 ,L384" D14B FAIT.T.ADRESSE 1 REM "FAIT.T.ADRESSE 10 PRINT CHR (21) A455 20 TEXT : HOME 1C5A 30 HGR : POKE - 16302,0: POKE - 16303,0: REM “Retour en TEXT O1BA 40 VTAB 10: PRINT "PATIENCE, JE CO NSTRUIS LA TABLE" 037E 50 Di = 16384:D2 = D1 + 192 65A4 60 FOR I = 0 TO 191: HPLOT 0,1 4298 70 POKE Di + I, PEEK (39) AFOA 80 POKE D2 + I, PEEK (38) 1D0A 90 NEXT 0582 100 POKE 768,169: POKE 770,76: POKE 771,218: POKE 772,253 CA06 110 Ci = 768:C2 = 769:D$ = CHR (4 ) EDEC 115 PA = 0:X = Di: PRINT D$*MONCO" F684 120 PRINT D$"OPEN T.ADRESSE": PRINT D$"WRITE T.ADRESSE" 4815 125 PRINT "INS": REM "Pour LISA, in utile avec MERLIN 90E8 130 PRINT “GBAS_HI = x" EAB2 140 FOR I = 0 TO 23: PRINT “ HEX “; ED88 150 FOR J = 0 TO 7: POKE C2, PEEK (¢ X):X =X + 1: CALL Ci: NEXT OESB 160 PRINT : NEXT 6576 170 PA = PA + 1: IF PA= 1 THEN PR INT "GBAS_LO = ¥": GOTO 140 BASE 210 PRINT D$"CLOSE* DBDC 220 PRINT D$"NOMONCO" 4B7F DOUBLE HAUTE RESOLUTION SUR IMPRIMANTE EPSON continue page 20. Offrez-vous 31 routines Vous avez souvent besoin de routines en langage machine pour compléter I’APPLESOFT, mais votre page 3 débor- de? Ne vous énervez pas, AMPERELO est la avec ses 31 routines RELOGEABLES (plus de probleme d’im- plantation !) ; PRINT USING aux normes francaises, tri rapide, Input contrdlé, recherche dans un tableau, position d’une sous- chaine dans une chaine, remplacement d’une sous-chaine par une autre dans une chaine, SWAP de variables ou de tableaux, garnissage de tableaux, DIMDEL, IF THEN ELSE, GET numérique contrdlé, PEEK et POKE sur deux octets, mises au point par un spécialiste : Yvan KOENIG ils sont tous la. Et cela sans vous obliger a étudier le lan- gage machine. MOSAIQUE vous permettra en outre de couper-coller les modules dont vous aurez besoin. En prime, LECTURE.SOURCES vous servira a lire sans assembleur, toutes les sources MERLIN/BIG/MAC. II vous permettra également de transférer en mode TEXT les sources binaires de MERLIN pour en autoriser le trai- tement sous ProCODE. Présentées en format DOS 3.3. les routines peuvent étre converties pour tourner sous ProDOS. TREMPLIN MICRO EPSON aie: LA ROUTINE DE PATRICK QUETTIER est destinée 4 étre incorporée, pour son utilisation, dans un programme principal en Basic. Cette routine réalise une copie sur imprimante d'une page graphique double haute résolution (560 points par 192 points). Son fonctionnement nécessite la configuration suivante : ° Appel Ile équipé d'une carte 80 colonnes étendue (+ 64 K) ou d'une carte “FELINE” ou "EVE" Le Chat Mauve (80 colonnes couleur + 64 K). © Imprimante EPSON MX-8@ F/T type Il ou FX-80. e Interface imprimante : carte graphique EPSON (ROM B.APL ou D.APL). Avec une carte équipée d'une ROM E.APL ou YK.APL on peut utiliser PRINT CHR(9) "80N" au lieu de POKE 1657,80 pour supprimer I’écho écran. II semble que l'on puisse également utiliser la carte EPSON non graphique. Remarque : les premiers Apple /le (révision A) ne peuvent travailler en double haute résolution (consulter APPLE, il y avait une procédure d’échange lors de |'introduction de la révision B). Moyennant quelques modifications des commandes imprimantes, la routine fonctionnerait sur un Apple llc... & condition de I'équiper d'un adaptateur série-paralléle pour I'imprimante EPSON ! Etvoici RELOPROI1G (mode d'utilisation page 13) [ASL A EE SS S005: A9 03 20 FS BE 9@ 4E AG 14 B9 ED £E5EBS Naturellement, 6GE: 61 26 ED FD 88 10 F7 4C 00 BE 84 15 44 28 BS 14 c£4ps9 Vous ne devez pas SOF: G8 2A 16 15 64 2A 15 15 08 2A 04 15 G4 2A 15 14 FEC757 — recopier la signature 6100: 08 28 04 15 64 2A 15 15 08 2A 15 15 08 2A 15 15 ee4i5i de chaque ligne $110: 68 2A 15 15 84 2A 85 15 @8 2A BS 15 84 2A 15 14 cea5q7 _ (derniére colonne). 6120: 08 28 05 15 64 2A 15 14 8G 28 85 43 85 FE AP 08 FE8AC9 Vous pourrer vérifier 6130: 85 FD FG 87 20 2C FE 40 EA EA EA A? 80 85 3C 85 FEEFDB rexaciitude 6140: 04 AP 62 85 3D 85 85 AI 7B 85 3E AP 63 85 SF A FEAREE go votre 6150: FF 85 06 AP 44 85 87 DB AY 84 85 42 EA EA EA 38 ££0341 programme 6160: E5 04 85 02 AS 43 E5 G5 85 03 AB 9 BI 3C 48 29 £69308 on ctilisant $170: 03 AB 48 4A 4a AA BD EA 60 88 30 84 4A 4A DB FI £62771 la disquette 6180: 29 63 AA AG BG EO 02 96 85 CB 20 C2 61 88 B1 3C ££3A40 que Tremplin $198: 91 42 20 B4 FC CA 18 Fé 90 D2 90 19 AP 7F 85 3E £61469 Micro met d votre 61A0: AP 63 85 SF 20 C2 61 A2 G1 B1 3C 91 42 20 B4 FC £ECE46 disposition 61B0: CA 10 Fé 90 EF 90 80 AS 06 85 3E AS 07 85 3F 4c ££D589 _(lisez ace propos S1CO: 34 61 AS 06 D1 3C C8 AS 87 FI 3C 90 1A 8B AS B4 £64009 le message de notre 41D8: D1 3C C8 AS 45 F1 3C BG GE 88 B1 3C 65 62 91 3C ££1413 ami Yvan KOENIG, S1E0: C8 B1 3C 65 43 91 3C BB 6¢ BD 87 C5 C3 CI CC DB FEDCCR page 2 du précédent 61F8: AB C5 C4 AB D3 C1 DB AG C1 AB D9 A? CE ABCC C9 c£9681 numéro). BSAVE RELOPROIG, A$60D5, L$12B e seusasnEeressnessnosEsasesouoseeeeeneecesEeseAsaesEEEeeDEesEEeneeseeRREseseEe Ss wAseTeDssRazesceoReeeeeS 20 GUY-HACHETTE sasstecasseeessensensnencanunSEnEnsntneesnecanansssnanaanenasanesSeesseeecnnaesanseacaseneensntsnene VERSION MODIFIEE (a a suite de RELOPROIG) Si vous désirez 6200: 4C 38 62 4C 3B 62 4C OF 62 4C 12 62 BO 80 00 38 fe2a20 utiliser votre 6210: BO 81 18 AZ 20 86 3D 86 43 A2 BB Bd 3C Bd 42 CA ce2G00 routine de 6220: 86 3E A2 3F 86 3F 8D 08 CO 20 11 C3 BD 1 CO 68 feus9 recopie d'écran, $238: AI G1 48 AZ OB AB 30 AP G2 DO GE AP B3 48 AI 00 fr 4992 Vous serez sans. 9248 8D QD 62 A2 84 AB 60 AP 04 BE 92 42 BC 7A 62 BD éFiDcs 6250: 7F 62 68 AA AB B1 BD 78 63 99 AD 62 BD 7C 63 99 ce2ng9 doute amené 6260: BE 62 CA 88 18 FO 20 8A 63 AE OD 62 FO 88 AI AB eepasD 4 la reloger 6270: 20 20 63 CA D@ FA 20 26 63 A 30 20 2D 63 AI O2 f69714 grace a 6280: 26 2D 63 AS FB 85 ED AG 81 84 FE 84 @6 88 2C 55 feou7e RELOPROIO. 6290: CO AI 68 85 EF Ad FB BD 88 63 85 FA BD 40 64 85 crp7a8 6200: F9 Bi F9 Aé FE 4A CA DO FC 08 26 FF 28 EA EA Eé £61296 lisexdlars 6280: FB Cé EF D@ E@ AS FF 4D GE 62 20 2D 63 20 2F 62 fe4e22 les explications 62C@: E6 FE AS FE C9 08 90 OF AP 81 85 FE ES 06 85 06 eer2%q d'Yvan KOENIG, 6208: F@ 85 C8 C8 28 FO BC AS ED 85 FB AS 06 9D 54 CO ceria E 62E@: 4C 91 62 AY BD 20 20 63 AS FB C9 CO FO OB 4C 69 eecDr! page 13 et 62F8: 62 08 G8 G0 G8 BO BO BB OB AY 9B 20 20 63 AD OC f62702 moubliez pas que 439g: 62 20 20 63 2C 56 CO 4C BE FD AI 00 85 FB BD O1 ecoans cette version . 6310: CO 2C 57 CO AI 9B 26 26 63 AY C1 20 20 63 AP BB ecdE2s travaille sous 6320: 2C 54 C@ 6C 36 68 AY 1B 20 2D 63 AP 4C 2C 54 CO eeesan ProDOS. 6330: 2C C1 C1 30 FB 8D 98 CO 48 0 00 00 G0 00 G0 G0 ccosis 6340: 80 00 08 04 00 86 00 28 0 0 a2 0 B0 0 00 OB ccoce0 Pour vous aider $358: 80 06 00 82 G0 G8 G8 88 00 BO GB 20 BO 0G 00,00 scon00 voici lo routine. 63608 88 88 06 28 06 08 G0 G0 00 Gd 00 G0 a0 ae a0 Ge coc00 6370: 00 80 68 48 G8 00 BA BG EA EA 26 FF 2F 62 30 63 cen91D COPIE.DHGREPS 359; 20 24 28 2C 30 34 38 3C 20 24 28 2C 30 34 38 3C 61 4c0 avec les . 6398: 21 25 29 2D 31 35 39 3D 21 25 29 2D 31 35 39 3D ccarre modifications 63A0: 22 26 2A 2E 32 36 3A 3E 22 26 2A 2E 32 36 3A BE ce2000 indiquées 63B0: 23 27 2B 2F 33 37 3B 3F 23 27 2B 2F 33 37 3B 3F ce0si9 page 13... 63C0: 20 24 28 2C 30 34 38 3C 20 24 28 2C 30 34 38 3C cci4ce et les signatures 63D6: 21 25 29 2D 31 35 39 3D 21 25 29 2D 31 35 39 3D eea7re de contréle. 63E8: 22 26 2A 2E 32 36 3A 3E 22 26 2A 2E 32 36 3A 3E fe 2ane 63F@: 23 27 2B 2F 33 37 3B 3F 23 27 2B 2F 33 37 3B 3F feadia 6400: 28 24 28 2C 38 34 38 3C 20 24 28 2C 3@ 34 38 3C Fei4ce 6410: 21 25 29 2D 31 35 39 3D 21 25 29 2D 31 35 39 3D cearre 6420: 22 26 2A 2E 32 36 3A 3E 22 26 2A 2E 32 36 3A 3E fe2an0 6430: 23 27 2B 2F 33 37 3B 3F 23 27 2B 2F 33 37 3B 3F feadio 6448: 06 68 00 88 68 00 20 00 80 88 88 8A 88 8B 8B BO FepNces 6450: 08 66 G0 60 86 00 80 48 8A 80 8@ 8A 8B 8A 80 BO FeDcED 6460; 06 88 00 00 00 8@ 00 06 8A 8A 8@ 86 80 8B 8A BO FeDceE 6470: 08 08 80 06 06 80 GO G8 84 88 86 88 8A 8A BA 8A FeDcee 6480: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB ff 2580 6490: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB fF 2500 64AG: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB £6 2500 64B0: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB ff 25K0 64C0: 5@ 5@ 58 58 5@ 5S@ 5@ 5@ DA DBO DO DA DO DO DA-DO ceanee 6408: 5@ 5@ 5@ 5@ 5@ 5@ 50 5@ D@ DA DB DA DO DO DA DO Feanee 6460: 5@ 56 50 5@ 5@ 50 5@ 5@ D@ DO DA DA DO DO DO DO Keane 64F0: 5@ 50 5@ 56 5@ 5@ 5@ 5@ DA DO DB DA DO DO DO DO Feapee Pour sauver le tout : BSAVE RELCOPYDHGEPS, A$60D5, L1067 TREMPLIN MICRO 21 S( R | B E Jean-Paul ARNAUD propose cette petite démonstration aux amis qui possédent une SCRIBE. 1@ REM * SCRIBE DEMO * 318 PRINT 75BA 20: 803A 328 PRINT CHR$ (27)"z" A2F9 38 REM J-P ARNAUD JUIN 1986 330 PRINT "BROUILLON EN-TETE" 2AC6 / 40: 003A 340 PRINT 758A 50: 6038 350 PRINT CHR$ (15) 7E58 60 TEXT : HOME 1C5A 360 PRINT CHR$ ¢27)"Q" DSFe 70 VTAB 4: HTAB 16: PRINT "x ~ 378 PRINT "BROUILLON COMPRESSE" 7685 < SCRIBE > “DEMO "x" S9EA 380 PRINT 758A 80 INVERSE : SPEED= 195 1€20 390 PRINT CHR$ ¢27)"y" 88Fe8 98 VTAB 23: FOR I = 6 TO 2 STE 400 PRINT "BROUILLON COMPRESSE P - 1: HTAB 2: VTAB I: PRIN INDICE" 1FSt T "x": NEXT 7280 410 PRINT 75BA 108 VTAB 2: HTAB 3: FOR I =1T 426 PRINT CHR$ (14) A457 0 37: PRINT "*"3: NEXT 4A68 430 PRINT "BROUILLON COMPRESSE 118 VTAB 2: FOR I = 1 TO 5: HTA MIXTE" 7B2C B 39: PRINT "*": NEXT D129 448 PRINT 758A 120 POKE 34,6. 8082 450 PRINT CHR$ (27)"z" A2F9 138 VTAB 6: FOR I = 39 TO 3 STE 468 PRINT "BROUILLON COMPRESSE P - 1: HTAB I: PRINT "#"3: EN-TETE" 9397 NEXT 7B3F 470 PRINT CHR* ¢27)"c" 45E2 148 SPEED= 255: VTAB 13: HTAB 9 480 PRINT CHR$ (27)"L008" EE83 : FLASH : PRINT "ctGctGctG 490 PRINT CHR$ ¢27)"m" S1EC BRANCHEZ “L’IMPRIMANTE ": N 50@ PRINT "LETTRE" 2ECE ORMAL 4ec1 518 PRINT 758A 15@ VTAB 23: GET A$ 5D64 520 PRINT CHR$ (27)"y" 88Fe8 168 HOME : INVERSE : VTAB 13: H 53@ PRINT "LETTRE INDICE" ADIA TAB 7: PRINT " PROGRAMME DE 540 PRINT 75BA DEMONSTRATION " A588 550 PRINT CHR$ (14) A457 170 VTAB 16: HTAB 12: PRINT " S 560 PRINT "LETTRE MIXTE" 2A75 UR L’IMPRIMANTE ": NORMAL = E98E 578 PRINT 758A 18 VTAB 22: HTAB 16: FLASH : P 580 PRINT CHR$ (27)"z" A2F9 RINT " <RETURN) ": NORMAL : 590 PRINT "LETTRE EN-TETE" 86E68 GET Ws 5732 680 PRINT 75BA 198 REM * TITRE ¥* 618 PRINT CHR$ ¢27)"c" 45E2 200 : 803A 628 PRINT CHR$ (27)"L@30" DI7E 218 PRINT CHR$ (13): PRINT CH 638 PRINT CHR$ ¢27)"X" 96F7 R$ (4)"PRE1": PRINT CHRS ¢ 640 PRINT "* “OPTIONS “#" 7686 27)"c": PRINT CHR$ (14): P 658 PRINT CHR$ ¢27)"L0@8" EE83 RINT CHR$ (27)"LO11" + CHR 668 PRINT 758A $ (27)"X": PRINT "IMPRIMANT 670 PRINT "TEXTE SOULIGNE" GAGE E SCRIBE" 815F 680 PRINT 758A 220 PRINT CHR$ (27)"c" 45E2 698 PRINT CHR$ (27)"Y" 88Fe 230 PRINT CHR$ (27)"L@08" EE83 708 PRINT CHRS (27)"D"5 CHRS ¢ 240 PRINT "BROUILLON" 3984 @); CHRS (1) 4F 2A 250 PRINT 758A 71@ PRINT "ZEROS BARRES ~(800)" D591 268 PRINT CHR$ (27)"y" 88Fe8 728 PRINT CHR$ ¢27)"X" 96F7 270 PRINT "BROUILLON INDICE" 4188 730 PRINT "SOULIGNE ET ZEROS BA 280 PRINT 758A RRES ~(800)" BBD 290 PRINT CHR$ (14) A457 740 PRINT CHR$ (27)"c" 45E2 388 PRINT "BROUILLON MIXTE" 7858 758 PRINT CHR$ (4)"PREO" 815F Clalit adalat ele ee ed 22 GUY-HACHETTE UTILITAIRE Yvan KOENIG Sauveur de variables E suis persuadé qu'un jour ou I‘autre vous avez regretté de ne pouvoir sau- ver un tableau de chaines sur disque comme il est possible de le faire pour un tableau numérique sous DOS 3.3. Je vous propose un palliatif écrit en partant du pro- gramme CHAIN de la disquette master DOS 3.3. Vous savez tous que le stockage des variables se fait en divers emplacements mémoire sous APPLESOFT. Les variables numériques sont les plus faciles 4 appréhender puisqu’elles sont sto- ckées en une seule fois, entre (LOMEM) et (ARY- TAB) pour des variables simples, entre (ARYTAB) et (STREND) pour des tableaux. Pour les variables. chaines, c'est plus varié. APPLESOFT stocke un descripteur dans les zones définies ci-dessus tandis que les chaines propre- ment dites peuvent étre stockées en partie haute de la mémoire disponible c’est-a-dire entre (FRE- TOP) et (HIMEM) mais si elles sont définies par CH$ = "xxxxxxxxx", le stockage reste dans la zone programme 4 I'endroit ot la chaine est définie. Ajoutons que lorsqu’une chaine change de con- tenu l’ancienne valeur est purement et simple- ment abandonnée sur place, le descripteur poin- tant désormais sur la nouvelle chaine. La routine GARBAG que tout utilisateur APPLE a maudit un jour ou l'autre a pour fonction de faire le ménage de la mémoire en éliminant les chaines mortes. Cette routine est hélas trés lente mais l’accélérer n‘est pas au programme aujourdh'vi. Le programme CHAIN qui permet de chainer deux programmes effectue un ménage puis col- lecte toutes les chaines “programme” pour les reporter dans la zone de stockage normal des chaines. Ensuite, le bloc descripteurs est déplacé de fagon @ se retrouver juste sous les chaines. ATTENTION, les fonctions FN sont maltraitées (suite au verso). TEST1.SAUVEUR1 : HOME 1CSA | 148 KB = 49152:KS = 49168 BI16 CHRS (4) B3A4 156 REM Collecte les chaines act "APPLE": PRINT AS B444 ives "TREMPLIN ": PRINT BS AISF | 16@ REM Regroupe descripteurs et "SOUPLE": PRINT CS 31AE chaines 60 BCS = BS + C$: PRINT BCS 75AB | 17@ PRINT D$"BRUN SAUVEUR1" 6AL? 78 DIM C$¢15,2): FOR 1 = 8 TO 1 188 PRINT D$"MON C" FOB3 5 8D2D | 196 REM Sauve le fichier VARIABL 86 C$ = STR (1):CH(1,6) = "2" Es + C$:C$(1,1) = "U" + CH:CHCI 280 PRINT D$"BSAVE VARIABLES! ,A D" + C$ E639 " PEEK (4) + 256 * PEEK (5 96 FOR J = @ TO 2: HTAB 1 + J * 28? gle " PEEK C8) £°254 9 PE 15: PRINT C#¢1,J)3;: NEXT : P EK ¢9) DFSE RINT : NEXT 9613 | 210 REM Sauve le fichier OFFSET 1@@ PRINT 75BA | 228 PRINT D$"BSAVE OFFSET1 ,AQ , 118 C$ = "MICRO": PRINT C% EDS@ Le" B89C 126 BCS = BS + C$: PRINT BCS 75AB. | 230 PRINT D$"NOMON C" 6458 130 DIM NM(12): FOR I = 1 TO 12: 248 PRINT : PRINT "FAITES MAINTE NMCI) = I: NEXT CF42 “NANT “RUN TEST2.SAUVEURI‘" E73C TREMPLIN MICRO #3 oe cenessunsusscesauesrueannnunnoneaenEsereszossseeorsns seanenenasuREenneEENADOSSaRenaoRsaneuenenseoeuneny puisque si leur descripteur est bien sauvé, leur définition reste dans la zone programme ot vous ne la retrouverez donc pas tout a I’heure. Lorsque ces opérations sont terminées, CHAIN charge le PROG2 puis rétablit les pointeurs indis- pensables, descend le bloc descripteur et HOP, le tour est joué, on exécute PROG2 avec les varia- bles définies dans PROG}. En supprimant la fonc- tion LOAD PROG2 et en ajoutant quelques opéra- tions de stockage de pointeurs il était possible de faire la méme chose mais, sans étre obligé d'utili- ser PROG2 juste aprés PROG]. Aprés utilisation de PROG1 on sauve le bloc variables sous forme d'un fichier binaire que l'on pourra rappeler plus tard lorsque l'on en aura besoin. Il vous sera désormais possible de garnir vos tableaux stables une fois pour toutes, en accés clavier ou par lecture LENTE de fichier(s) TEXT et de sauver tout cela en fichier binaire. Lorsque vous aurez besoin d'utiliser ces tableaux, il vous suffira de faire un BLOAD VARIABLES or vous savez qu'un bload est rapide (et peut étre accéléré). La production littéraire n'étant pas mon fort, je vous renvoie aux commentaires du source pour le fonctionnement de la routine SAU- VEUR et aux programmes TEST pour I'utilisation mais, une fois encore, ATTENTION 4@ ne pas trans- férer de fonction. Yvan KOENIG TEST2.SAUVEUR!I 16 TEXT + HOME 1c5A | 110 CALL 926 3c2D 20 PRINT CHR$ (4)"MON C" 2087 | 120 PRINT A$: PRINT BS: PRINT C% 30 REM Charge le fichier VARIAB : PRINT BCS: FOR I = 1 TO 12 LES : PRINT NM(I): NEXT 897F 40 PRINT CHR$ (4)"BLOAD VARIAB 130 PRINT : PRINT "UNE TOUCHE PO LES" 8786 UR CONTINUER" 49FF 50 REM Charge le fichier OFFSET 140 POKE KS,6: WAIT KB,128: POKE 68 PRINT CHR$ (4)"BLOAD OFFSET KS,@: PRINT FDD7 1" 12E4 | 150 FOR I = 6 TO 15: FOR J = 0 T 70 REM Place les descripteurs 0 2: HTAB 1 + 15 * Ji PRINT 80 REM Ajuste les pointeurs C$(1,J)3: NEXT : PRINT : NEX 90 PRINT CHR$ (4)"BLOAD SAUVEU T : PRINT 0732 Ri" 2p4g | 160 REM A$,B$,C$,D$,BC$,KB,KS,CS 108 PRINT CHR$ (4)"NOMON C": PR ©.) NMG.) INT caag | 176 REM SONT BIEN RECUPERES. 0289: 20 84 E4 A9 G7 85 BF £LIB4C 0290: AS 69 AS 6A BS 9D 86 FE Ed 6C DO 4 C5 6B FO 05 £LA2AD SAUVEUR1 8200: 20 FC 82 FO F3 85 9F 86 AQ A? 83 85 BF AS 9F AS £eo3F5 @2B0: AQ E4 6E DO 87 C5 6D DO 03 4C 56 83 85 9D 86 YE £LIABP d 028: Ad 00 Bi 9D AA CB Bi 90 48 CB BI 9D 45 9F a5 9F cevira uandvous 0200: C8 B1 9D 65 AB 85 AO 28 18 D3 BA 30 DB CB BI 9D ce29EB AUrez termine, @2EG: AB G0 GA 49 G5 65 9D 85 9D 98 B2 Ed EAS VE E4 £66674 —Moubliez pas 02FG: AO DB 04 C5 9F FO BA 26 06 03 FO F3 B1 9D 30 46 £eE252 de sauver 9308: C8 B1 9D 18 41 CB Bi 9D FB 3C CB B1 9D AA CB BI ££93E2 votre routine 0310: 9D 85 9C 86 9B C5 BO FO 02 BO 2B 88 88 BI 9D 48 £L0FC7 syr disquette 0320: 38 AS 6F 85 94 F1 9D C8 91 9D 85 6F CB AS 70 85 ££779F 6330: 95 E9 80 91 9D 85 70 68 18 65 9B 85 96 AS 9C 49 ce2EEs Porn 0340: 00 85 97 26 9A D3 AS GF 18 465 9D 85 9D 98 G2 ES cea791 —BSAVE SAUVEURI, 0350: 9E AS 9E AG OG 60 A2 BO 38 BS 6B ES 69 95 Ga EB ce4aa7 A$289, 1827 0360: BS 4B ES 6A 95 0G E8 EG 03 90 ED A2 G1 BS 469 95 feCOA2 @370: 9B B5 6D 95 96 BS 6F 95 06 95 94 CA FO EF 20 9A ££8139 0388: D3 AS 94 85 44 AS 95 ES 84 B5 38 AS 73 ES O4 AA £E7026 0398: AS 74 E5 05 AS EB 84 88 DO 41 CB 84 G9 4B AS O46 LEEIS2 PROGRAMME O3A0: 85 3E 85 46F AS 07 85 3F 85 70 AZ 08 18 A5 469 85 ceFC49 SOURCE sur @3B0: 42 75 06 95 6B E8 AS 6A 85 43 75 G6 95 6B EG EO £63489 la disquette @3C8: 03 98 EA AS a4 85 3C AS 05 85 3D AB GB 4C 2C FE ££A269 TM Ihe 24 GUY-HACHETTE UTILITAIRE | NESTOR TRI RAPIDE d'une liste de mots UI n’a jamais eu besoin, dans un programme en Basic, de trier rapidement une liste de mots ? Les routines classiques, non com- pilées, se révélent d'une lenteur désespérante dés que le nombre de données dépasse la cinquantaine. TRI.’ (156 octets) vous propose une solution simple et efficace. Cette routine en langage machine trie tous les éléments d'un tableau dimensionné en quelques secondes (moins de 10 pour 150 données). Elle est implantée 4 partir de l'adresse $300 (768) et utilise quelques octets de la page zéro (vérifier que ceux-ci ne sont pas déja monopolisés par le programme général... ou par d'autres sous-programmes en langage machine). MODE D'EMPLO!: Pour trier les éléments d'un tableau A$(, il suffit d'insérer dans votre pro- gramme en Basic une ligne du type : CALL 768, A$(@) Les éventuelles variables de longueur @ seront automatiquement classées en téte de liste. 100 IF PEEK (769) < > 190 THEN PRINT CHR $ (4)"BLOAD TRI.1" 105 PRINT CHRS (4)"PR£3": PRINT : HOME 110 VTAB 12: PRINT “La machine va succes sivement trier 15@ faux mots rangés dans trois tableaux: - ASC, BSC, C$(... puis elle vous invitera a fou tnic le nombre de mots que vous alle z vous-meme taper dans le désordre." 115 PRINT : PRINT “La cloche vous indiqu era le début de chaque tri (quelques secondes)." 125D=0 130 N = 150 135 DIM AS(N),BS(N) ,C$(N) 140 FOR I = D TO N:AS(I) = CHR® (65 + IN T ( RND (1) * 26)) + "080": NEXT 145 FOR I = D TO N:BS(1) = CHRS (65 + IN TRI.DEMO PEUT-ON D'UN RANG Oui. Inclure un POKE 867, R — 1 (R=rang) avant la ligne ci-contre. Ainsi, POKE 867,1 triera la liste sans tenir compte du premier caractére. COMMENT CLASSER A PARTIR DE LA DONNEE LA PLUS GRANDE ? (ordre alphabétique inverse) Par quelques pokes bien ajustés : POKE 869,7 : POKE 871,252 : POKE 887,144. Ne pas oublier de rétablir les bonnes valeurs pour réaliser un tri normal. TRIDEMO: Cette démonstration vous montre comment utiliser TRI.1. Il n'est pas indispensable de la taper. Vous pouvez aussi vous limiter aux lignes 100-105, puis 210-240. A Sad DU CARACTERE T C RND (1) * 26)) + "100": NEXT 15@ FOR I = D TO N:C8(I) = CHR® (65 + IN T C RND (1) * 26>) + "200": NEXT 155 CALL - 198 160 PRINT : HOME :X = X + 1: ON X GOTO 1 65,170,175 165 CALL 768,A$(@): GOTO 180 170 CALL 768,B$(@): GOTO 185 175 CALL 768,C$(@): GOTO 190 180 FOR I = D TO N: PRINT ASC(I)" ";: NEX T : GOTO 195 185 FOR I = D TO N: PRINT BS(I>" ";: NEX T : GOTO 195 190 FOR I = D TO N: PRINT C(I)" ";: NEX i 195 VTAB 22: PRINT : INVERSE : PRINT "PR ESSEZ UNE TOUCHE S.V.P";: NORMAL : P RINT “> "3: GET R$: PRINT (suite page 26) TREMPLIN MICRO allah eae ee eee eee EEE eee EEE rie TRI.DEMO 200 IF RS = CHR$ (27) THEN PRINT : END 205 IF X < 3 THEN 155 (suite et fin) 235 CALL 768,M9(8) 240 FOR I = 1 TO N: PRINT M$(1): NEXT 245 PRINT : VTAB 23: PRINT "<1> ENCORE < 2> MENU DE LA DISQUETTE <3> TERMINE 210 HOME POUR AUJOURD’HUI $";: GET RS: VTAB 2 215 N = 50 @: PRINT RS 220 INPUT "NOMBRE ? ";N: DIM MS(N) 258 HOME : IF R$ = "1" THEN CLEAR : GOTO 225 PRINT : PRINT "SAISIE DE "N* MOTS": 100 PRINT 295 IF R$ = "2" THEN PRINT CHR (4)"RUN 230 FOR I = 1 TO N: INPUT "> ";M$(1I): NE MENU" XT 260 IF R® < > "3" THEN 245 . TRI.1 (esave tri.1, a$ 306, 1$9¢) eunens 0300- 20 BE DE JSR $DEBE 0303- 20 E3 DF JSR $DFE3 0306- 38 SEC 0307- £9 OL SBC £801 0309-85 85 STA $85 O30B- 80 0} BCS $030E 030D- a8 DEY O30E- 84 86 STY $86 0310- A200 LDX £900 0312- Al 85 LDA ($85,X) 0314- C9 02 CMP = £802 0316- = BO 0 BCS $0319 0318- 60 RTS 0319- 85 FA STA $FA 031B- AS 83 LDA $83 7 031D- 85 85 STA $85 O31F- AS 84 LDA $84 0321- 85 86 STA $86 0323- = =A2 00 LDX £900 0325- A? 00 LDA = £800 > 0327- 85 09 STA $09 wl 0329- AO 02 LDY £%02 032B- =BI 85 LDA ¢$85),Y 032D- 99 06 00 STA $0006,Y 0330- 88 DEY 0331- 10 F8 BPL $032B — 0333- EB INX 0334- £4 FA CPX $FA | 0336- = FO 56 BEG $038E 0338- AS 85 LDA $85 a O33A- 85 18 STA $18 033C- 69 03 ADC £803 O33E- 85 85 STA $85 0340- AS 86 LDA $86 0342- 85 19 STA $19 CHKCOM : teste la virgule dans TXTPTR PTRGET : recherche la variable par son nom Au retour, A et Y contiennent la bonne adresse. On lit la longueur du tableau & cette adresse moins un. Ainsi, A = A—1...siA = FF,Y = Y—1 Le résultat est placé dans $85-86 et le contenu est lu grace a l’adressage indirect avec X Si la longueur est inférieure 4 2, pas de TRI Sinon on continue RETOUR au Basic Le nombre d’éléments 4 trier est placé dans $FA REINITIALISATION L'adresse de base est contenue dans $83-84 et il est facile de la réinstaller dans $85-86 Sert de pointeur pour compter les éléments triés Si9 = @, il n'y a pas eu d’échange. Si9 = 1, ona modifié la liste. SLeEMENT Oo On écrit page @ : — 6: longueur de I'élément 8: ‘| adresse ou il est implanté dans la mémoire X = X + 1 pour ELEMENT 1 (le suivant) Si X = $FA (nombre d’éléments 4 traiter) GOTO $38E Uadresse + 3 (élément suivant) est savvegardée dans $18-19 (ov elle sera utilisée plus loin pour la permuta- tion éventuelle) et placée dans $85-86 Suu a2 00000 SSeS RSRSeReRNseseesesensEosEs eee eee oT eoReeESseRSSeNERUEsEsERERePOReEEeREeeEeeeReReneoeesses 26 GUY-HACHETTE | ; sgeuseescesesneroosneessesrosonrsconscenscoonessasssoneseonnonnesesonenscosensecensenersneacesssnesenn 0344- 69 00 ADC = £800 7 0346- 85 86 STA $86 al 0348- AS 06 LDA $06 “lS i 034A- FO DD BEQ $0329 | Si la longueur de V'ELEMENT @ est nulle, GOTO $329 eLeEMENT 1 034C- AO 02 LDY £02 Tl 034E- Bi 85 LDA ($85), $FB = longueur de I’élément 1 eam rd a oe Ones 5 sf5 ‘1 adresse ov il est implanté 0354- 10 F8 BPL $034E 0356- AS FB LDA SFB Fi _ Ree - = ee oon aoe gy __| SiSFB = 0, permutation immédiate 09sC- * 02 foe ae Si la longueur de I'ELEMENT 1 est plus petite que celle 035E- AS 06 LDA $06 de IECEMENT G, le contenu de - est hon: einenon P= tit if te FE 0360-85 FE STA SFE _| Pren ja plus petite longueur que l'on stocke dans - CcCOMPARAISON 0362- AO 00 LDY £900 = 0364- Bi FC LDA (SFC),Y Caractére de I'ELEMENT 1 (de rang Y) comparé 4 celui 0366- DI 07 CHP cao7),y'_| SO VELEMENTC 0368- FO 04 BEQ $036E Si égalité, la boucle continue O36A- BO 2A BCS $0396 Si plus grand, pas de permutation (GOTO $396) 036C- DO OB BNE $0379 Si plus petit, permutation immédiate (GOTO $379) 036E- C8 INY “] O36F- C4 FE CPY $FE Comparaison terminée si Y est égal 4 $FE 0371- DO Fi BNE $0364 _| a ee by ee | Silal de l'ELEMENT 1 est égal plus grande 0375- C5 06 CMP $06 EON GUS Sel SaaS: u 0377- BO 1D Bes $0396 | We celle de l'ELEMENT @, pas de PERMUTATION 0379- A? O1 LDA £801 "| govestinteat 037B- 85 09 STA $09 | Ee: PERMUTATION 037D- AO 02 LDY £902 7] O37F- Bi 85 LDA ($85) ,Y 0381- 48 PHA 0382- BI 18 LDA ($18),Y | L’adresse de IELEMENT 1 0384- 91 85 STA ($85),Y prend la place de celle 0386- 68 PLA de I'ELEMENT @... et vice-versa 0387-91 18 STA ($18),Y 0389- 88 DEY O38A- 10 F3 BPL $037F _| 038C- 30 08 BMI $0396 GOTO $396 | O38E- AS 09 LDA $09 a ee "| A i -— 0390- FO 03 BEQ $0395 | S'il n'y a eu aucune permutation, tri terminé } 0392- 4C 1B 03 JMP = $031B Sinon on recommence 0395-60 RTS RETOUR AU BASIC 0396- E4 FA CPX $FA X est-il égal au nombre d’éléments & comparer ? 0396- BO F4 BCS $038E Egal ou supérieur, ultime vérification en $38E O39A- 90 8D BCC $0329 Inférieur, affaire & suivre... . : ‘gauneeeeoeesoeeeeees coos one o oR scene eeee esses eEesRs seas seceseenseNeeReoUeEeeoeesnennaREeseeaDEsEET TREMPLIN MICRO 27 DRAW et XDRAW en langage machine A routine en langage machine peut tre utilisée sans faire appel au pro- gramme DEMO. Elle utilise la fonc- tion XDRAW ($F65D) et elle tournera aussi longtemps que vous n’aurez pas pressé une touche. Que fait I'instruction XDRAW ? Elle affiche une forme avec la couleur inverse de celle qui se trouve aux points od) est déja tracée la forme. Ainsi, noir devient blanc et vice-versa. C'est pourquoi avec XDRAW le programme fait et défait indéfiniment I'écran. La forme est réduite 4 un octet ($4) qui est placé en page zéro a l'adresse $8 et terminée par un 0 en $9. Dans la démo, XDRAW devient DRAW ($F601)... ce qui modifie I'écran. Toutefois, com- me DRAW se contente de tracer (sans effacer), on stoppe le programme dés la fin de la boucle (continuer’ ne modifierait pas l'affichage). QUELQUES RAPPELS En Basic, pour utiliser DRAW ou XDRAW, il est indispensable d'indiquer le numéro de la forme dans la table de formes et aussi de renseigner l'Apple sur l’adresse de cette table. Ainsi, pour notre mini-forme, nous aurions dé exécuter les opérations suivantes : * FA: 104040 * E8: FAG Le 1 indique le nombre de formes. Le premier 4 indique la partie basse du nombre d'octots séparant le début de la table de la premiére forme. Le or 4 (suivi du x6ro) est la forme olle-méme (ici, il n'y en a qu'une). Et ensuite, en Basic : 10 HCOLOR = 3: HGR: SCALE = 1:ROT =@: X= 139:Y = 95 20 DRAW 1 AT X,Y 16@ PRINT CHR (21): HOME 116 PRINT CHR* ¢4)"BLOADXDRAW.L M": CALL 768 128 CALL - 198: GET R$: PRINT : POKE ~- 16301,0 138 VTAB 22: CALL - 958: PRINT "Le meme avec DRAW au lieu d e XDRAW "5: GET RS 140 POKE 865,01: POKE 826,3: CALL 768 158 CALL - 198: GET R$: PRINT : POKE - 16301,0 160 VTAB 22: PRINT "<1> ENCORE ¢ 2> MENU DISQUETTE <3> FIN "; : GET Rd | 17@ PRINT : POKE 826,225: POKE 8 65,93: IF R$ = "1" THEN CALL 768: GOTO 120 180 IF R$ = "2" THEN PRINT CHRS ¢4)"RUN MENU" 196 IF R$ < > "3" THEN 160 208 TEXT : HOME e Un RUN affichera un point. Puis, si vous tapez, en mode direct : SCALE = 10 : GOTO 20 vous afficherez, 10 points... qu'un XDRAW 1 AT X,Y fera disparaitre. C.Q.F.D. En langage machine, il est inutile de renseigner les pointeurs $E8-E9 sur I'adresse de la table de formes. Par contre, on devra placer dans X la partie BASSE de l’adresse du premier octet de la forme et dans Y la partie HAUTE de cette méme adresse. susuasenensseuzszezsesconensonssnnnsnsunesnmunsssoansssoussenenenasnssnsasensnssensssnennassasseenses 28 GUY-HACHETTE — °°» suapansusecescecsenesenenenaoeossnessesneuesssesucuseeenoesscosnsasersanercsecueesscecessenvazscensene xXDRAW_LNE 300- AI 95 LDA £39 ee 2- 20 ED FD JSR ee CTRL-U (envoyé par COUT) va désactiver la carte 80 colonnes @305- AP 28 LDA £928 ] On place $20 (valeur pour HGR) dans HPAG ($6). @307- 85 ES STA ES | Cette adresse contient $40 pour HGR2 @309- AP 7F LDA = £$7F | Code de la couleur : $7F=3 @30B- 85 E4 STA $E4 (0=0, $2A=1, $55=2, $80=4, SAA=5, $D5=6, $FF =7) o3er- es a8 an sa. 1 Ca, c'est notre forme (un point) @311- 20 F2 F3 JSR F3F2 Efface I’écran (HCLR) @314- 20 E2 F3 JSR $F3E2 Initialise la page HGR ($F3D8 pour HGR2) @317- 2C 52 Ce BIT C852 C'est POKE — 16302, : plus de fenétre texte ! INITIALISATION ] @31A- AP BB LDA £400 Accumulateur chargé avec 0 @31C- 85 66 STA $06 . | @31E- 985 67 STA 407 ‘| Pointeurs pour une boucle allant de 1 4 1024 6320- 85 89 STA #09 Dernier octet de la forme (on profite de A=@) @322- 85 FP STA $F? ROT=6 |} 6324- AP O1 LDA £901 ie iy sas 0326-85 E? STA $E?7 al SCALE = 1 ($E7 =@ correspond & SCALE = 256) BOuUCcLE @328- £6 66 INC 06 Plus un pour la boucle @32A- D8 13 BNE $033F Si le résultat est différent de 0, on saute @32C- £6 87 INC $07 Sinon, il faut incrémenter la partie haute de l’adresse el AS 87 LDA = $07 ~] Celle-ci est-elle égale 4 04 ? (autrement dit : est-on arrivé & e- co? 04 CMP = £04 $400 ?) @332- 08 8B BNE %833F _| Silaréponse est non, on continue eSo47 G0 OE Ch LOR $00) ne tuche apt reste ? nee Hd ti ce ee ee 2 Oui, on arréte, mais sans oublier un POKE — 16368,0 @33E- 40 RTS Retour au Basic ON POSITIONNE LE CURSEUR O33F- Ab ea LDY £368 ~~] X, position horizontale, est placé dans les registres Y (partie @341- A2 8B LDX £%8B haute) et X (partie basse). Y, position verticale, est placée 8343- a9 SF LDA £$5F _] dans I’accumulateur. @345- 26 11 Fa JSR $F411 HPOSN fait le reste. xXDRAW OU DRAW — ————_ @348- AG 88 LDY £366 ~~) L'adresse de la forme est placée dans Y (partie haute) et X @34A- A2 88 LDX £%68 _| (partie basse). @34C- E6 F? INC $F9 = | @34E- AS F9 LDA $F9 ROT ($F9) = ROT +1 6350- C? 41 CMP) «£41 Quand ROT = $41 (65), on remet la valeur 1 dans $F9 ‘ @352- De BC BNE #6360 On en profite pour augmenter SCALE de 16 ($10) | @354- A? Bl LDA £301 Notons que la valeur de ROT doit étre dans |'Accumulateur | @6356- 85 F9 STA $F9 a T | @358- 48 PHA On empile la valeur de ROT @359- A 18 LDA £418 7 |} @35B- 65 E7 ADC E7 SCALE = SCALE + $10 . @35D- 85 E7 STA %E7 J 5 635F- 48 PLA Récupération de ROT sur la pile x 0366- 28 SD Fé JSR F65D XDRAW ou DRAW ($F601) NEXT e @363- 4C 28 83 UMP $6328 Et ca repart pour un autre tracé ! e TREMPLIN MICRO UI 9053 | Fano] cto TREIZE ceterrees DE LETTRES APPLE choisit un mot parmi ceux d'une liste présentée sous forme de DATAs. Il en mélange les lettres et les affiche sur l'écran graphique. Vous avez déja compris qu'il s'agit ensuite de les placer, mais en bon ordre, dans les treize cases pévues 4 cet effet. Pas de définition : si le mot est peu connu, c'est coton ! Heureusement, il suffit de taper un 0 (zéro) pour obtenir un renseignement. Celui-ci codte un point, mais permet de placer exacte- ment la premiére lettre (ou la suivante... si la premiére a déja été localisée, et ainsi de suite). Quand on croit connaitre le mot, on tape seulement un T et on est invité a fournir la solution (atten- tion ! en cas d’erreur, cela codte un point !). Ce petit programme est entiérement en Basic, mais utilise une fonte spéciale de caractéres (voir plus loin). NOTA : Vous pourrer contdler la slsie de TREIZE et de TREIZE.FONTE en ulisont a disquette VERIF de notre ami Yvan KOENIG (page 2.de couverture). 100 TEXT : PRINT CHRS (21): HOME : POKE 768 198 DRAW NAT D + E,B 3E66 8 3200 | 195 D =D + 21: NEXT ar 105 LOMEM: 16384 + 1476:A = 16384: GOSUB 545 208 : 8038 + GOSUB 618 6B9E | 205 REM #x* ET MAINTENANT, JOUONS #4 116 HOME :NM = 7: REM NOMBRE DE MOTS EN DATA 8E73 210 + 8038 115 DIM L$(13) ,M6(13) M13) 0328 215 VIAB 21: HTAB 1: PRINT "Renseignement: * 128 GOSUB 480 FCAC 1 INVERSE : PRINT 03: NORMAL + INPUT * 125 HGR : HCOLOR= 3: SCALE= 1: ROT= 0 8096 (ou RANG + LETTREDctr16 ";R$ 3F27 130: 0028 | 220 IF R$ = "SOL" THEN PE = PE + 13 - TR: GO 195 REM #x* CASES POUR LE MOT #4 TO 430 72FA 140 : 882A | 225 IF Rb = "T" THEN 425 OCEA 145 X = 3:Y = 27 8627 230 IF R6 = "" THEN 215 2093 158 HPLOT 6,8 TO 279,0 TO 279,30 TO 0,30 TO 235 IF Ré < > "@" THEN 290 8196 6,8 F99D 240 IF RS = 13 THEN T$ = "PLUS DE RENSEIGNEM 155 HPLOT X,X TO 276,X TO 276,Y TO X,Y TO X, ENT": GOSUB 575: GOTO 215 OFBF x 5C73 245 RS= RS + 1 6Al3 168 FOR I = 24 TO 265 STEP 21: HPLOT 1,X TO 250 FOR 1 = 1 TO 13: IF MSC) ¢ > LSCRS) TH 1,Y: HPLOT I + 2,X TO I + 2,Y: HCOLOR= @ EN 260 B944 : HPLOT I + 1,X TOI + 1,Ys HCOLOR= 3: N 255 IF M(I) THEN PE = PE + 1: GOTO 276 B97 ExT BEA® © 268 NEXT 0582 165 : 883A 265 GOTO 248 4B4l 178 REM ### LETTRES MELANGEES 270 IF I = RS THEN DR = 27 AFFE 175 3 803A 275 IF I) RS THEN DR = 28 83FE 188 D = 9:B = 80 Foes 280 IF I < RS THEN DR = 29 3881 185 FOR I = 1 TO 13:E = 8:N= ASC (MCI)? ~ 285 D = 21 #1 - 12: DRAW DR AT D,45:M(1) = 64: GOSUB 590 caca Os GOTO 215 0956 p:unnncnnenenescenovcennennnssennsenansunncusssusensnsnnssssssusnsensnsnasassennsnnannsensensnnsenesenen 30 GUY-HACHETTE seaaceneeoeevssseseccoaeseoss cesses eeseensesosesaesencenenoseoeeoReseRsaenesoeeeeReseeeeeeeeeneeRee 290 IF LEN (R$) = 1 THEN 315 S7B5 295 L$ = RIGHTS (R$,1): IF L$ < "A" OR L$ > "2° THEN 315 (882 300 NU = VAL ( LEFTS (R$, LEN (R$) - 1)): I FNU < 1 OR NU > 13 THEN 315 305 IF L$(NU) = "" THEN T$ = “LETTRE DEJA TR DBBS QUVEE": GOSUB 575: GOTO 215 3CCB 310 GOTO 326 2040 315 T$ = "ERREUR DE SAISIE": GOSUB 575: GOTO 215 3CFO 328 FOR I = 1 TO 13: IF M8(I) = L$ THEN 338 AI7C 325 NEXT : GOTO 405 FEOO 330 IF M$(I) = L$(NU) THEN D = 21 * I ~ 12:N = ASC (L$) - 64: GOSUB 598: XDRAW N AT D + E,80:D = 21 * NU - 12: DRAWN AT D + E,10:MS(1) = ""sL$(NU) = “":M(I) = 8:TR = TR + ts IF TR ¢ 13 THEN 215 2589 335 IF TR < > 13 THEN 405 1584 348: 803A 345 REM ##* = FIN DE LA PARTIE ##* 358 : 0024 355 PT = 13 - PE 4B36 368 VTAB 21: CALL - 958: INVERSE : PRINT “S CORE:";: NORMAL : PRINT “ "3: IF NOT PT THEN PRINT " TRES MAUVAIS ("PT® POINT)" : GOTO 385 ADD4 365 IF PT < = 18 AND PT ) = 6 THEN PRINT PT" POINTS (BON RESULTAT)": GOTO 385 4965 376 IF PT > 18 THEN PRINT PT" POINTS (EXCEL LENT RESULTAT)": GOTO 385 5a12 375 PRINT " A VOUS DE JUGER! ("PT" POINT";: IF PT > 1 THEN PRINT “S"; 4723 388 PRINT ")" 7627 385 VIAB 23: PRINT "<1) ENCORE <8) TERMINE P OUR CETTE FOIS ctriG";: GET RS 7468 390 IF R$ = "1" THEN CLEAR : GOTO 118 A968 395 IF R$ ¢ > "8" THEN VTAB 22: PRINT : GO TO 385 6B7A 400 TEXT : HOME : END 5514 405 T$ = "MAUVAISE REPONSE": GOSUB 575:PE = PE + 1: GOTO 215 8158 410: 603A 415 REM eee = =SOLUTION ###* 420: 803A 425 VTAB 21: CALL ~- 958: INPUT "MOT ENTIER "31$: IF T$ < > M$ THEN GOTO 465 ICSE 438 GOSUB S15 EB4B 435 D = 9:B = 10 FOFA 440 FOR I = 1 TO 13:E = @:N= ASC (L8(I)) - 64: IF N= 9 THEN E = 4 SD86 445 DRAW N AT D + E,B 3E66 450 D = D + 21: NEXT 443F 455 GOTO 355 4948 460: 863A “465 REM *** CHOIX ET TRAITEMENT *##* 470 REM *** DU MOT (13 LETTRES) #** 475: 8834 480 CH= 1+ INT ( RND (1) * NM) 843A 485 V = PEEK (768): IF ¥= NM OR NOT V THE N POKE 768,1: POKE 769,CH: GOTO 580 1009 490 FOR K = 1 TOV: IF PEEK (768 + K) = CH THEN 488 B371 495 NEXT : POKE 769 + V,CH: POKE 768,V +1 4383 500 RESTORE : FOR I = 1 TO CH: READ M$: NEXT 96ED 505 FOR I = 1 TO 13:L$¢1) = MIDS (M$,1,1): NEXT CC3E 510 FOR 1 = 13701 STEP - 1: = INT ( RND (1) #1 + 1)aMB(T) = LOCI) L8G) = LOCI) : NEXT 6F8D 515 FOR I = 1 TO 13:L$(1) = MIDS (M$,1,1):M (1) = Ls NEXT 6F68 520 RETURN 63B1 525 : 8034 538 REM *** INSTALLATION DE LA = ##* 535 REM *#* FONTE (38 CARACTERES) #** 540: 083A 545 PRINT CHR$ (4)"BLOAD TREIZE.FONTE,A",A AC43 558 POKE 232,A - INT (A / 256) * 256: POKE 233, INT (A / 256) OA3E 555 RETURN 63B1 568 : 003A 565 REM *** SOUS-PROGRAMMES = *## 578: 803A 575 VTAB 22: CALL - 958: VTAB 23: HTAB (41 ~ LEN (T$)) / 2: INVERSE : PRINT T$: NOR MAL : IF RV THEN RV = 0: RETURN E175 580 FOR K = 1 TO 2008: NEXT : VTAB 22: CALL - 958: VTAB 23: HTAB 3: PRINT "Tapez <T) si vous connaissez le mot” 0876 585 RETURN 6381 596 £ = 6: IF N= 9 THEN E = 4 6798 595 RETURN 63B1 608 : 063A 605 REM ##* PRESENTATION ee 610: 8634 615 HOME : INVERSE :T$ = " AB 1: PRINT T$: VIAB 3: PRINT T$: VTAB 2 : PRINT" TRE IZ € "5: NORMAL : HTAB 29: PRINT “REGLE DU JEU": VTAB 3: HTAB 2 9: PRINT "=---------~~' i 3811 628 PRINT : PRINT “OBJET: Trouver un mot de 13 lettres qui -----~ est fourni dans le désordre.* 8849 625 PRINT : PRINT : PRINT " - Tout renseigne ment demandé fait per- “““dre un point" BDI7 630 PRINT : PRINT " - Pénalité identique pou r toute erreur® COFL (suite page 32). oneaneeeseresseesssosaszsessesTerenesescerensseoasnsassaanssssoRoRsEEAEA eA eEAOsE RST ET EUSes TOSS ATEEETETs SS TREMPLIN MICRO 31 EEE ''' re “eeneuaneannnnnnenennnnesesnnnnnenensuaasnetentenenssnusssesteneninneseseseesenenaneveneeseesece TREIZE uite) 650 CALL - 198: WAIT - 16384,128,127: POKE — ~ 16368,0: HOME : RETURN SELI 635 PRINT : PRINT " - TAPER <SOL) pour annul 655 : 003 er la partie.* AEBE 668 REM #¥* MOTS DE 13 LETTRES xxx 0001 640 VTAB 20: FOR 1 = 1 TO 18: PRINT "__";: 665: 083% NEXT : PRINT 99CA | 670 DATA INTERLOCUTEUR, CONFERENCIERE, DEMYSTI 645 VTAB 22:T$ = " PRESSEZ UNE TOUCHE SvP *: FIANTE, FRAGILISATION, GALEOPITHEQUE ,G1GAN RV = 1: GOSUB 575 S7AF TOMACHIE , HELICI CULTURE C82 TREIZE.FONTE ne alan 4000: 31 02 41 08 7C 00 BS G0 EO 00 LE a1 4E 01 71 01 Ce2n65 EXPLICATIONS 4010: AP O1 EL 81 F4 81 15 2 4a 62 69 2 AD 02 ES a2 f£EBCES DU PROGRAMME Basic 4020: 20 03 58 03 BE 03 C6 03 Fé 03 14 04 4B 04 82 84 FE14R 4030: C3 04 EC 04 1E 85 48 85 46 05 85 85 AB 85 C3 85 ££108C 100: Pourquoi POKE 768,60 ? expli- 4040: 60 68 2D 20 20 15 SF 3F 3F 3F 2E 4p 49 35 FF DB ££6B6B cation 4 la ligne 485. 4050: 3B 2E 4D 49 35 FF DB 3B 17 2D 2D 2 2p 35 3F 3F ££A3C7 105: LOMEM est placé au-dessus de 4060: 3F 3F 77 6D 49 29 3E DF DB 37 6D 49 29 3E DF DB ££4EDA la fonte de caractéres. 4078: 37 6D 49 29 3E DF DB B7 49 49 49 a1 80 29 2D 2D £e0724 115: L$(n) = lettres du mot 4080: AD 3F 3F 3F 37 6D 49 35 FF DB 37 4D 49 35 3F 3F £fFEO6 MS§(n) = lettres mélées 4090: 3F 3F 2E 2D 2D 2D 15 FF DB 37 4D 49 29 3E DF DB ££4230 M(n) = 1 au début du jeu 40AB: 37 6D 49 29 3E DF DB 37 2D 2D 2p 2p 1E 3F 3F 3F ££33D4 et 4 @ quand M§(n), la lettre 4080: B7 49 49 49 61 88 89 2D 2D 20 15 3F 3F 3F 3F 17 £87848 40C8: 2D 4D 49 FS DB DB 3B 2E 3E 26 36 2E 3E 2E 4D 49 £83481 40D8: 29 3E DF DB 3F GE 2D 2D 20 FS 3F 3F B7 49 49 49 £eAFFA 40E0: 88 29 2D 2D AD 3F 3F 3F 37 6D 49 29 15 FF DB 18 ££A1eD 40F0: 37 6D 49 09 35 FF DB 1B 37 6p 49 09 35 FF DB 1B ££3749 4100: 37 6D 49 89 35 FF DB 1B 37 4D 49 99 35 FF DB 1B ££3749 4118: 37 2D 2D 2D 2D 1E 3F 3F 3F B7 49 49 49 89 88 29 ££42BA 4120: 2D 2D 20 15 3F 3F 3F 3F 2E 4D 49 FS OB DB 37 35 ££0573 4130: 37 2D 2D 20 3E 3F 3F 37 35 37 4D 49 29 3E DF DB £6564 4140: 37 20 20 2D 20 1E 3F 3F 3F B7 49 49 49 01 86 29 £e3ie2 4150: 2D 2D 2 15 3F 3F 3F 3F 2E 4D 49 F5 DB DB 37 35 ££0573 4168: 37 2D 2D 35 3F 3F 37 35 37 35 37 35 B7 49 49 49 £8210 4170: 81 88 89 2D 2D 2D 15 3F 3F BF 3F 17 2D 4D 49 FS £e9D71 4180: DB DB 3B 2E 3E 2E 4D 49 89 3F FF DB 37 6D 49 2D £8530) 4190: 35 FF DB 1B 37 6D 49 9 35 FF DB 3B 77 2D 2D 2D £88168 41A0: 2D 1E 3F 3F 3F 56 49 49 09 00 29 4D 49 35 FF DB ££96¢7 4180: 3B 2E 4D 49 35 FF DB 3B 2E 4p 49 35 3F 3F 3F 3F £fAC3E 4108: 2E 2D 20 20 35 FF DB 3B 2E 4D 49 35 FF DB 3B 2E £fAcaB 4208+ 4D 49 35 FF DB 3B 2E 4D 49 35 FF DB 3B 56 49 49 £fE0D6 41E0: 49 88 2D FS 37 35 37 35 37 35 37 35 37 35 37 AD ££0168 41FO: SF B7 49 89 80 49 49 29 3E 2F 36 2E 3E 2E 3E 2E ££C9B3 4200: 3E DF DB 37 6D 49 29 3E FF DB 37 20 2D 2D FS 3F £8c718 4210: 3F B7 49 49 49 88 29 4 49 35 FF OB 3B 2E 4D 49 £8BF9E 4220: 35 FF DB 3B 2E 4D 49 F5 FF DB 37 6D 69 FS 3F 3F ££64FD 4230: 37 2D 2D 20 15 FF DB 37 6D 49 29 3E DF DB 37 6D ££385F 4240: 49 29 3E DF DB B7 49 49 49 01 99 29 3E 2E 3E 2E £f7EFE 4250: 3E 2E 3E 2E 3E 2E 4D 49 35 FF DB 3B 2E 2D 2D 2D £83409 4260: FS 3F 3F 3F B7 49 49 49 81 Ba 99 2D 4D AD 3F 3F ££05F3 4270: 3F 3F 17 6D 09 6D 29 3E DF FF 1B 37 6D 89 6D 29 ge7918 correspondante, a été utilisée, La variable E est égale a 0... sauf quand le caractére a affi- cher est un | (a ce moment, E=4... voir ligne 590). Le E=0 n’est pas utile (on le retrouve & la ligne 590). Notez la présence d'un CTRL-G avant les guillemets de fin de ligne (pour le placer, appuyez simultanément sur les touches CTRL et G). RS totalise le nombre de ren- seignements. Au début du jeu, on donne un tuyau sur la lettre n°l... et ainsi de suite. Si L§(RS) ne contient plus rien (c'est le cas quand la lettre a déja été placée), on continue la boucle. PE totalise les points de péna- lité (un par renseignement et un par erreur manifeste). Si Mi!) est égal 4 G, on continue. Le renseignement n‘a pu 6étre donné parce que la lettre n°RS a déja été trouvée. RS va donc 6tre incrémenté pour donner un renseignement sur le carac- tere suivant... s'il existe. 32 GUY-HACHETTE ee I EIS SSS EFF - ssunssnnanseunnenannansustnesusnnssusesensnsunenaensszaasaasenssnenaunassesessenernneenesasensrennons 270: DR est le numéro du caractére 4280: 3E DF FF 1B 37 6D 89 6D 29 3E DF FF 1B 37 6D 89 EEA75E E de la fonte spéciale (celle-ci 4290: 6D 29 3E DF FF 18 37 6D 9 6D 29 3E DF FF 1B 37 £eFa7eE 4 somimencs. par a Ona: 42A0: 60 09 4D 29 SE DF FF 1B B7 49 49 49 49 00 09 20 Ee5154 Q = = et2= . 4280: 20 20 15 3F SF 3F 3F 2E 4D 49 35 FF OB 3B 2E 4D £eBIF4 A 290: Si on n’a qu'un caractére, la 4200: 49 35 FF DB 3B 2E 4D 49 35 FF DB 3B 2E 4D 49 35 £EEFIA réponse est forcément mav- 4200: FF DB 3B 2E 4D 49 35 FF DB 3B 2E 4D 49 35 FF DB EEAGF6 vaise. A cet endroit du pro- 42E0: 3B 56 49 49 49 80 09 2D 2D AD 3F 3F 3F BF 4D 49 EFEDAE 9 gramme, on attend une 42F0: 09 35 FF DB 18 37 6D 49 89 35 FF DB 1B 37 6D 49 £67640 réponse de type 1A, 12T, etc. 4300: 09 35 FF DB 1B 37 6D 49 09 35 FF DB 1B 37 6D 49 £67640 330: XDRAW efface la lettre utili 4310: 09 35 FF DB 1B 77 2D 2D 20 F5 3F 3F B7 49 49 49 ££0936 sée, mais on laisse les fleches 4320: 88 29 2D 2D 2D 15 3F 3F 3F 3F 2E 4D 49 35 FF DB £EC394 correspondant aux renseigne- 4338: 3B 2E 4D 49 35 FF DB 3B 2E 4D 49 35 3F 3F 3F 3F SfAcae ments clonnés (cela permet de 4340: 37 2D 2D 20 2D DE DB 3B 2E 3E 2E 3E 56 49 49 49 Fe17E8 elie i" nombre ‘de 4350: 80 09 20 2) AD 3F 3F 3F BF 20 4D 09 2D 3E DF DB ££c834 Benes i) ; 4368: 3B 2E 4) 49 29 3E DF DB 3B 2E 4D 49 29 3E DF DB E£E940 | 430: Avant d'afficher le mot entier, 4370: 3B 2E 4D 49 29 3E DF DB 3B 2E 4D 29 OD 35 3F FF Ee427F en Salty Bin) ovee. ie We 4380: 1B 3F GE 2D 20 20 AD FF SF 3F 56 49 49 09 00 29 eeeD33 | ee Gosh ‘ Milluerlatenetion 4390: 2D 20 AD SF 3F 3

Showing the first 100000 of 188788 characters.

mp.ls