Skip to main content

magazine poms44

  • PublicationApple Periodicals
  • Pages76
  • Sourcemagazine_poms44.pdf
← Magazines magazine poms44
/ 76
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
La revue francophone indépendante pour les utilisateurs d'Apple ae 7 i === KW -F Stricto Sensu, accessoire Mac | Macros AppleWorks wii 045005 Universal Disk Controller me Sn BRO ot ...LA solution pour relier aux Apple //e et ]I+ : un “Apple 3.5 GS Platinum’ 800Ko un lecteur Macintosh 800Ko un lecteur Macintosh 400Ko un lecteur Chinon 800Ko un Unidisk 5,25” 140Ko Connectée a n’importe quel port, elle pilote deux lecteurs (méme différents, pouvant totaliser 1,6 méga). Elle permet le travail bit a bit avec tous les lecteurs d’aujourd’hui (ce travail était impos- sible avec l'Unidisk 3.5”). Carte UDC : 1 050,00 F TTC franco Tarif carte Pom’s Joker : 945,00 F TTC Logma S.A. — 12, rue d’Anjou — 78000 Versailles — Tél : 39 51 24 43 Numéro 44 septembre-octobre 1989 Graphisme et son : DPA 23, 24, 25, 26 = Page 40 Jean-Yves Bourdin Editorial e: Page 7 [ice] Hervé Thiriez ESE} GS-Init Un accessoire Mac : Stricto Sensu Page 8 Jean-Luc Bazanegue Page 42 Les nouveaux TimeOut dee A essai : imitri Geystor re] ConcertWare == Fess es Christian Piard = = Programmation AppleWorks Des Ascii et des @ ProCommand Dimitri Geystor : [ Tre] a = Ice Pierre Demblon a) ples ee) Pee 18 as) ctemly [eeeSe! © Page 36 Un nouveau CDA : Macintosh: * Ram.Use Patrice Neveu Les News Ics Ariel Sebban el. Page 23 Page 51 Une commande externe : ShortP Giséle Perreault Jean-Yves Bourdin [J] & [Ze] Page 58 (==) Beas fee Ze] (ss BN) + rave 29 = wee GS & fenétres : 3 Petites annonces ° Page 74 Scrolling Patrick Desnoues Mots croisés aS Page 32 Joélle Piard page 74 Les annonceurs : Apple : pages 4 & 5 ; Bréjoux : page 25 ; Logitech : page 76. Editions MEV - 12, rue d’Anjou - 78000 Versailles. Tél. : (1) 39 51 24 43. Directeur de la publication : Hervé Thiriez Pom’s n° 44 Pour savoir si la créativité a vraiment quelque chose a voir avec la productivité, venez 4 Apple Expo retrouver Apple et tous ses partenaires. Installée au CNIT, le plus grand centre de communication et d’échanges du monde, Apple Expo vous présente tous les moyens de des mearques Jéposées de Appl - Un jour, on te parlera de la créativité N’écoute pas. Ca n’a vraiment rien a développer la créativité et donc la productivité des hommes. Cest l'occasion ou jamais de venir découvrir ou redécouvrir le «monde Macintosh ~. Les nouveaux Macintosh vous seront présentés en exclusivité ainsi que les derniéres applications et matériels périphériques vous ner Inc permettant de développer toutes les facettes de votre créativité quel que soit votre domaine : traitements de texte et tableurs bien sir, mais aussi par ordinateur ou enco Enfin, vous verrez qu’il est tres facile de mettre Macintosh en réseau ainsi au service de la productivité. voir. mhésitez pas a lui en toucher deux mots. Ca ne peut que | Pour recevoir votre invitation ou vous désirez de plus is connaitre le calendrier des informations, venez donc nous voir : conférences, tapez sur votre Minitel Apple Expo a lieu du 27 au 30 3614 Code Apple. EXTRAFONTS Deux APPLICATIONS, CoLorFonts ET EpiFonts, QUI DONNERONT A voTRE AppLeWorks/TiImMEOuT ENCORE PLUS DE SOUPLESSE ET DE PUISSANCE - ColorFonts donne 4 TimeOut SuperFonts la couleur. - EdiFonts est un éditeur de polices qui dépasse de loin les possibilités d’Edipol et FontViewer réunis. CotorFonts Votre SuperFonts monochrome (version frangaise Pom’s) est transformé en ColorFonts, permettant désormais l'impression dans les sept couleurs de I'Imagewriter II (noir, jaune, rouge, bleu, orange, vert et violet), en conservant bien sur toutes les possibilités de SuperFonts (polices ct stylcs variés, justification 4 droite, tabulations, impression d'images). Les changements de couleurs peuvent, comme les changements de polices ou de styles, intervenir 4 tout endroit, méme au milieu d'un mol. Vous pouvez aussi imprimer une image dans la couleur souhaitée. En bonus, ColorFonts vous donne aussi accés aux caractéres normalement inaccessibles par Super- Fonts (codes 0 a4 31). Bien entendu, les commandes habituelles restent inchangées. ColorFonts est compatible avec les autres impri- mantes, mais imprime alors en monochrome. de DanieL Luror EpIronTs Une nouvelle application TimeOut Avec EdiFonts, vous pourrez visualiser, modifier et imprimer vos polices de caracléres, mais aussi en créer de nouvelles (en partant de zéro), copier des caractéres d'une police vers une autre. Tout ceci sans quitter AppleWorks ! Avec a4 votre disposition un index des polices (analogue a l'index des fichiers AppleWorks) per- mettant de travailler sur plusieurs polices (jusqu’a sept a la fois). Affichage de la police page par page. commandes ergonomiques Accés rapide aux caractéres désirés Copie d'écran graphique Impression de la police compléte Visualisation individuelle et modification des caractéres Edition rapide grace A des commandes puis santes : insertion au effacement de colonnes ou de lignes — déplacement du caraclére loul entier dans les quatre directions — effacement de la grille d’édition — modification des ‘width’ et ‘offset” Création de nouveaux caractéres Copie de caractéres interne, vers le presse-papiers, du presse-papicrs Suppression de caractéres Visualisation, impression et modification des paramétres globaux de la police — firstC — lastC — leading et kernMax — ascent — descent — nom de la police La disquette ExtraFonts existe en 5,25"/140Ko et 3,5"/800Ko. ExtraFonts est compatible avec les Apple //e 128Ko, //c, IGS. ColorFonts nécessite AppleWorks, une ImageWriter II et TimeOut SuperFonts en version francaise. EdiFonts nécessite AppleWorks et au moins un TimeOut en version frangaise. ExtraFonts : 500,00 F — Carte Joker : 450,00 F — Bon de commande page 70 Ont collaboré & ce numéro Jean-Luc Bazanegue - Jean-Yves Bourdin Pierre Demblon - Patrick Desnoues Dimitri Geystor - Olivier Herz Nathalie Laudat - Daniel Lurot Gérard Michel - Patrice Neveu Gistle Perreault - Christian Piard Joélle Piard - Ariel Sebban Hervé Thiriez Directeur de la publication rédacteur en chef Hervé Thiriez Rédacteurs Jean-Luc Bazanegue - Christian Piard Siege social Editions MEY — 12, rue d’Anjou 78000 Versailles — t (1) 3951 24 43 Serveur Minitel (1) 39 53 04 40 Publicité Editions MEV Diffusion N.MP.P. Impression MAME — 49, boulevard Preuilly BP 1701 —37017 Tours Cedex @ 47.37.08.08 Photos CP&ILB Dessins Gilles Coursicr Photogravure Graphotec — 21, chemin de la Tour 92350 Le Plessis-Robinson = (1) 46 3044.49 Pom's est une revue indépendante non rattachée & Apple Computer, Inc. ni 4 Apple Computer France S.A.R.L. Apple, le logo Apple, Mac et le logo Macintosh sont des marques déposées d’Apple Computer, Inc. IBM est une marque déposée de International Business Machine. PC et AT sont des marques déposées de la Société IBM. @Editions MEV 1989 Toute reproduction intégrale ou partielle, effectuée par quelque procédé que ce soit, sans l'accord écrit d’Editions MEV, constitue une contrefagon. Loi du 11 mars 1957, articles 425 et suivants du Code Pénal. Droits de traduction, de reproduction et d'adaptation réservés pour tous pays. Editorial | Apple Expo 200 exposants, dont Pom’s, attendent 50 000 visiteurs cette année dans le nouveau CNIT de La Défense. Apple n’organise pas moins de 25 conférences sur des thémes aussi variés que la programmation d'HyperCard, la Musique, les handicapés, Unix, Numéris ou encore I'intelligence artificielle et bien d'autres encore. Ce sera l'occasion d'entendre John Sculley, Michael Spindler d'Apple Europe, Jean-Louis Gassée ou Alan Kay I'un des trois ‘penseurs’ d'Apple. Pour ce numéro d’Apple Expo, Pom’s met le GS 4 I'honneur: une application au look Mac, un accessoire de bureau, un programme d’initialisation et un nouveau lot de disquettes freeware et shareware. Pour tous les Apple //, Pom’s a traduit ProCommand de Glen Bredon que vous étiez nombreux a nous demander. Bel ensemble pour un Applesoft toujours jeune. Une commande externe ProDOS par |’une des rares auteuses de la revue et les toujours astucieuses macro-commandes AppleWorks de notre spécialiste Dimitri Geystor. Cété Mac, un accessoire de bureau indispensable écrit en C, un essai de ConcertWare et des infos, d'autant plus séduisantes qu'Apple annonce une baisse sensible des prix Mac: de -27 % sur le Macintosh Plus 4-10 % sur le Mac SE 30. A 10 900,00 F le Mac Plus... qui résiste ? Hervé Thiriez Pom’s n° 44 Iss aaa Jean-Yves Bourdin Le programme ci-dessous est une extension du programme “Bram Master” publié dans Pom’s n° 41 : son but est de mettre en un seul programme les routines initialisation ou de réinitialisation de la machine dont je me sers le plus fréquemment. Je n’ai en effet pas seulement a rétablir ma configuration de Bram : je me suis également apercu que j’avais fréquemment a “purger” la mémoire du GS. Sans quoi certaines applications, ou bien refusaient de se charger, ou bien plantaient, malgré mes 2,3 Mégas de mémoire en ligne. Il apparait en effet que certaines applications gérent de fagon pour Ic moins cavaliére (fautive, en fait) les appels au gestionnaire de mémoire du GS, le Memory Manager. Parmi celles-ci, AppleWorks, PaintWorks Gold, et le Linker d’APW... Au départ, ce programme incluait une routine de configuration du port série pour lui donner un buffer de 64Ko, inspirée de celle de Gary Little. La routine marchait, mais le buffer interne du GS est top bugué : il vaut mieux ne pas s’en servir du tout. En revanche, j’ai ajouté quatre sous-routines pour configurer la carte accélérateur Trans Warp GS, d*Applied Engineering, de fagon que je puisse lancer Thexder sans me faire ridiculiser ensuite. Bram Master, suite : GS-Init — OE VOL, It VIENT Di Co Oo 16] 19} ° o . Cok CESTLE PROBANN — TOUT EFFACER | 4 o Oo oO zy, ’ Oo oO ° Confier votre Tableau de Bord a J.-Y. Bourdin, est-ce bien raisonnable... Obéir au Bureau Politique Les “bidouilles” avec le Memory Manager et les outils GS ne sont plus de saison. Avec GS/OS, le niveau de maturité du systtme du GS interdit désormais les fantaisies. Quoi que nous en ayons, il est temps désormais de nous plier, serait-ce en maugréant, aux directives du Bureau Politique. Sans quoi, c’est l’utilisateur qui paye. par des “plantages” intempestifs, V'indiscipline ou l’impatience des programmeurs. C’est d’ailleurs pourquoi je préche d’exemple en m’y soumettant moi-méme. Le “noyau” de GS.INIT est composé du lancement de trois outils (Tool Locator, Miscellaneous Toolset et Memory Manager), puis de Icur fermeture, dans I’ ordre spécifié par le Bureau Politique. «Que d’octets inutiles !», dira le programmcur formé a la chasse aux octets sur Apple //. Effectivement, je n’ai encore jamais vu de situation od cette “bande des trois” ne soit pas déja active : ils sont toujours 1a. Mais Pom’s n° 44 Apple nous demande de le faire, faisons-le. Ceci dit, si vous ne le faites pas dans le programme que vous taperez pour vous, c’est votre affaire... De la méme facon, le programme Passe son temps & alterner entre mode 16 bits et mode 8 bits (je préfre cette formule a la formule “mode natif/mode émulation” : en mode 8 bits, toutes les instructions du 65816 fonctionnent, il ne se comporte pas comme une “émulation” qui ne reconnaitrait que les instructions du 6502). Il fallait choisir un “standard” pour les sous-routines, j’ai choisi le huit bits. La aussi, que d’octets inutiles : mais que de plantages évités si on fait constamment attention a bien préciser au 65816, et a notre assembleur, cn quel mode il doit étre. Un programme GS, il faut s’y faire, est toujours un peu verbeux, et gache quelques octets. C’est la condition pour s’y repérer, et puis on compte la RAM en Mégas, désormais. Attention, j’ai dit “un peu” verbeux, et “quelques” octets : cela n’excuse pas les abus “A la PaintWorks Gold” ! Purger la mémoire Précisons, pour ceux qui ne le savent pas, ce qu’est la purge mémoire : une application comme le Finder, par exemple, a besoin de certains outils qui sont sur la disquette syst@me, et il les charge en mémoire. Quand on quitte le Finder, en langant un Programme par exemple, celui-ci devrait dire au systéme de libérer Vespace mémoire occupé par ces outils, et par le Finder lui-méme. Oui, mais !’application suivante va peut-étre avoir besoin des mémes outils, qu’il va falloir alors recharger & nouveau du disque. De plus, en quittant l’application suivante, on va retourner au Finder, qu’il va falloir encore recharger du disque. Le Memory Manager permet donc de laisser certains segments de programme, certaines ressources systéme, chargés en mémoire, mais VersionSoft, ca plante ! Exemple parfait de ce qu’il ne faut pas faire avec le Memory Manager du GS : OO/1FA4 :A9 03 00 LVA #0003 # charge la valeur 03/0000 00/1FA7 :8F FA8 0A 00 STA O00AF@ ; dans une variable 00/1FAB :A9 00 00 LDA #0000 OO/IFAR :8F F6 0A 00 = STA O00AF6 OO/1FB2 :48 PHA # démarre appel 4 NewHandle OO/1FB3 :48 PHA 00/1FB4 :F4 0A 00 PEA 000A # longueur du bloc demande 00/1FB7 :F4 00 00 PFA 0000 2 = 640Ko 00/1FBA :AD 82 C5 LDA C582 # pour mon identiticateur OO/1FBD :48 PHA OO/1FBE :F4 02 80 PEA #%10000000 00000010 ; attributs : verrouillé, adresse fixe LDA UOUAF8 ; 4 créer a partir de i‘adresse fixe 03/0000 (début du banc 3) OO/1FC1 :AF F8 0A 00 OO/1FCS 348 PHA ¥ OO/1FC6 :AF F6 OA 00 LDA OOOAFE OO/1FCA 348 PHA 00/1FCB :A? 02 09 IDX #0902 + appel 4 UO/1FCE :22 00 00 El JSL $£10000 ; NewHandle 00/1FD2 BCC 1FE6 # si ok, passe d la suite OO/1FD4 PLA 00/1FD5 PLA 00/1FD6 :AF F& 0A 00 LDA OOOAF8 ; sinon incrémente partie OO/1FDA :1A INC ; haute de l’adresse du banc mémoire demandé 00/1FDB STA OOOAF@ ; pour le début de mon bloc 00/1FDF CMP #0008 =; mais on ne peut pas occuper au-dessus 00/1FE2 BNE 1FB2 ¢ de $03 + $OA + $ 07 = $15. 00/1FE4 BRK 4c # Sinon, BREAK : Lu plantes la machine!!! OO/1FEG :68 PLA # il doit rester ue la place pour charger 00/1FE? :8F FA 0A 00 STA OOOAFA ; les outils et le systéme. 00/1FEB 8 PLA O0/1FEC :8F FC 0A 00 STA O00AFC 00/1FFO ‘4 00 00 PEA 0000 OO/1FF3 :F4 A6 OA PEA OAA6 00/1FF6 01 OF LDX #0F01 O0/1FF9 00 00 El USL £10000 ; LoadTools Ce qui se trouve ci-dessus est le désassemblage commenté de ce que j’ai pu trouver, suite 4 une remarque d’Yvan Koenig, a l’octet $1FA4 dans ma version de PaintWorks Gold. Une conjonction exemplaire de deux énormes erreurs volontaires : 1° Faire comme si il ne pouvait pas y avoir d’extension mémoire supéricurc & 1,2 Mégas pour le GS (!) 2? En cas d’insuffisance de mémoire libre en-dessous de ce 1,2 Méga, ne pas quitter proprement, ne rien dire 4 l'utilisateur, méme pas renvoyer a une erreur ProDOS : planter, tout simplement. Ca plante : c’est étudié pour ! Et je ne parlerai pas de la pratique qui consiste 4 demander un bloc de 640Ko, d'un seul tenant, commengant a une adresse fixe, au Memory Manager, en lui interdisant méme de déplacer ce bloc cn mémoire ensuite... Voir “Le mange-mémoire” dans Pom’s 37 page 59. Vous avez donc bougrement intérét, si vous utilisez des logiciels VersionSoft, & les lancer par GS.INIT, avec la routine de purge et de compactage préalables de la mémoire. Mais PaintWorks Gold est un excellent logiciel par ailleurs. ‘Vous trouverez un patch pour corriger son erreur dans Pom’s 42 page 64. Pom’s n° 44 10 dans un état “purgcable” : si V'application suivante n’a pas besoin de toute la mémoire disponible, elle trouvera scs outils déja chargés en mémoire. Et l’on pourra retourner quasi-instantanément au Finder en sortant. Si en revanche elle a besoin de toute la mémoire, le Memory Manager “purgera” ces segments purgeables et rangera (“compactera”) la mémoire disponible pour faire de la place. Le Memory Manager raffinc méme, en fixant 3 niveaux différents de purge, ce qui permet de fixer des priorités dans la purge. Toutes ces subtilités permettent d’aller le plus vite possible avec un espace mémoire restreint. Elles signifient que plus vous aurez de mémoire, plus le GS tournera vite, et moins il fera dace’s disque. Ce sont ces subtilités qu’ignorent les applications “primaires”, comme AppleWorks ou PaintWorks Gold, dont Ic seul souci est de manger pour elles-mémes le plus de mémoire possible. Il faut done purger nous-mémes, avant et/ou aprés elles. Comment purger ? Jutilisais auparavant la routine de purge mémoirc de Glen Bredon dans Merlin 16 Plus et de Mike Westerfield dans Call Apple d’ Avril 89, mais j’y ai renoncé. Cette routine purge la mémoire bloc par bloc, en cherchant pour chacun des “handles” concernés s'il cst purgeable ou non. Cette routine marche, et elle a l’avantage de permettre si on le veut d’afficher 4 chaque fois quel bloc on libére. Mais elle utilise la connaissance des enregistrements du Memory Manager : or cette structure n’est absolument pas garantie par Apple, ct il est possible que cette routine ne marche plus dans les versions ultéricures des outils. Toujours le soumission au Bureau Politique... Bientét d’ailleurs, je l’espére, nous n’aurons plus a purger la mémoire : les dernitres versions du Memory Manager ont en effet un appel “RealMem”, distinct du classique “FreeMem”, qui renvoic non seulement l’espace mémoire libre, mais l’espace mémoire libérable au total aprés purge et compactage. Une application pourra donc savoir exactement sur combien de mémoire elle peut compter. J’ai donc choisi pour purger la mémoire une formule qui devrait rester compatible, tout en restant évidemment dans une certaine mesure une bidouille (nous sommes sur Apple //, n’est-ce pas). Au lieu que le programme purge lui-méme, bloc aprés bloc, mon idée a été de demander au Memory Manager de m’allouer un bloc mémoire de... 16 Mégas ! Bien entendu, le Memory GS.INIT 1 2 3 4 4 Gs INIT. 5 ou 6 7 a 9 Ly ee 23 4 24 teeeesens 25 26 -eF00 27) MEI sou =E10000 28 TOOLBOX EQU 29 30 ox 2” 32 ong 33 35 36 DSK 37 1p 38 ouzvvy : zu sure 39 usr 40 002003 : 38 41 VERIFGS SEC 002004 : 201F FE 42 ISR 202007 : 90 03 -200c 43 Bec o02009 : 4c 64 20044 ome 45 gozo0c : 18 46 INTRO cLe 002000 : FB 47 XCF 202008 : ¢2 30 40 REP vozvly : az 0102-49 1x 002013 : 00 00 E1 50 Jsb 002017 00 00 51 PEA 00201A z A2 02 02 $2 Lox 0201p : 22 00 00 B1 53 Js ooz02! : 68 a4 PLA 002022 : 8D 62 20 55 STA 002025 : A2 03 02 56 Lox 002028 : 22 00 00 E1 57 Jst 58 o0202¢ : 38 oy sec 002020 : FB 60 XCE 61 62 Ce programm se charge de mettre ou remettre le GS dans 1a configuration choisie par Itutilisateur. Il comprend un noyau standard qui lance et ferme Jes outils, et un choix des différentes formes de guit possibles sous Prodos &. I1 incorpore pour le moment trois sous-routines : ~ PORGE.MEN : ~ MODDRAM : Reconfiguration automatique de la mémoire sauvegardée = Trois sous-routines de configuration de la carte Transwarp GS Applied. Assembleur Merlin 16 Pluo. 22 * J.¥, Bourdin, Purge et compacte 1a mémoire * Pon's 44. $BF00 $E20000 11 7 on démarre en mode + é@milation (8 bits) 62000 GS. INIT SP sFcse 7 Home 7 vérifie qu'on est sur SFRIF 2 GS INTRO peguit =; sinun quitte 7 passage en 16 bits 900110000 #30201 ¢ ThStartup : démarce le TOOLBOX ; Tool Locator #80000 480202 + MNStartp : démarre Te TOOLBOX + Memory Manager MYID #80203 ; MTStartup : démarre le TOOLBOX —; Misc Toolset repasse en 8 bits, car les sous-routines démarrent en & bits Pom’s n° 44 Manager n’est pas prés de pouvoir me le donner. Mais, avant de me le refuser, il commence par tout “Lasser” (purger et compacter) de lui-méme. C’est seulement ensuite qu’il s’apercoit qu’il n’a pas assez de mémoire : mais la purge est faite. Au cas oi le Memory Manager, un jour, aurait 16 Mégas a m’allouer (!), le programme les lui redonne aussitét : dans ce cas donc, tout ne serait pas purgé, mais on aurait 16 Mégas de libres, ce qui devrait suffire pour nos applications... L’inconvénient de ce choix, c’est que Vutilisateur de la routine ne voit rien du tout, il n’y a pas d’affichage des blocs libérés. Mais c’est précisément ce dont j’avais besoin : on purge et on quitte, c’est tout, pas besoin de raconter sa vic. Un bug d’AppleWorks Qucelqu’un (peut-étre votre serviteur ?) a signalé un jour que quand on langait AppleWorks deux fois de suite sous ProDOS 16, on gagnait environ 100Ko pour le bureau. AppleWorks avail apparemment trouvé un truc pour augmenter “RealFreeMem” (qui s’accroit de 100Ko aprés le passage d’AppleWorks). C'est vrai, mais ensuite... le plantage guette. AppleWorks fait en effet une bétise “de débutant” dans la gestion de la mémoire du GS : quand une application démarre le Memory Manager (voir les lignes 50 a 54 ci-dessous), celui-ci répond en lui accordant un numéro d’identification (Userld). Et AppleWorks a parfaitement raison, en quittant, de dire au Memory Manager qu’il peut disposer de la mémoire qu’il avait accordée a l’application (DisposeAll), avant de clore le Memory Manager. Oui, mais AppleWorks est une application ProDOS 8, et non ProDOS 16. Si on a démarré sous GS/OS par exemple, le Memory Manager attribue systématiquement aux applications ProDOS 8 qui font un MMStartup l’identificateur de ProDOS lui-méme ($3001). ooz0zE : 002031 : 002034 : 002037 : 00203A : oz0sp : ooz04o + 002041 + ooz0s2 : oozvsa : 002047 : o0704R + oozoee oozoer : 20 20 ooz0s2 : 2 002056 002059 : 00205D : 902055 : o020sF : 002062 + 902064 : 092067 : 002088 + 00206A : oozg6c : 002060 : a0706F + 00206F 002071 902072 002074 : 002077 : 002078 : 902072 : 90207¢ : 00207D : 002075 00207F 092081 002082 002084 + 002088 : 902090 : 002096 002098 002080 0020a8 ooz080 : oo202 : 902083 : ooz0B4 : 002086 : 2 00 100 35 75 8D ag BC 00 20 oo 00 oo 20 90 20 00 2P 59 41 gy cA EA 30 20 21 20 -206C BE =207¢ 53 2E 52 54 63 64 65 66 ‘67 68 69 70 1 72 73 74 75 76 77 9 80 92 83 84 8s 86 87 as 89 90 a 92 93 94 95 on 97 98 99 100 101 102 103 104 105 106 107 108 109 110 11t 112 113 114 115 116 117 1s ng 120 121 122 45 40 123 124 125 FA EA ER EA EA EA 126 127 128 129 130 131 Ios JSR PURGEMEM JSR MODBRAM JSR TWEAST JSR TWSLOW JSR IRQFAST JSR TROSLOW FIN one 7 passage en 16 bits XCE REF 400110000 wx #90303 7 Mrshucuown JSL TOOLBOX LDA MYID PHA Lox #9302 7 MuShutDown JSL TOOLBOX LOX = #80301 # TLShutDown JSL TOOLBOX SEC 7 retour en 8 bite XCE JMP LAUNCH 7 ou P8QUIT ou HRDRBT # ow APLRB? MyTD ps * Choix du Quit MK IT 7 assemblage @ bits PaQUIT JSR MLI ¢ Quit Prodos 8 erdinaire DEB #365 DA: PARM BCs :ERR ERR BRK :PARM DPB «#804 DFB #800 DA $0000 DFS #300 pA ssvg00 LAUNCH TSR + Quit Prados & DEB 7 “Enhanced” DA BCS ERR BRE :PARM DEB 404 DEB OHSEE DA ZNAME DEB #500 DA —- $0000 :NAME STR '*/S/SYSTEM/START’ ;mettre le chemin 2F 53 7 d’accés complet du 3 fichier 4 lancer DS «30, ASEA BABA EA EA EA EAR HRDRBT CLO. 7 passage en 16 bits XCE REP #00110000 IDA #80051 + Hard Reboot de Bill Pom’s n° 44 11 Tos Quand une application dit au Memory Manager de libérer la mémoire occupée par ProDOS, il nettoie tout Vespace mémoire occupé par le systtme, y compris l’espace mémoire en page zéro occupé par ProDOS & lui-méme. Le Memory Manager pense par exemple que la page 00/BFO00 est libre, et l’attribue au deuxitme lancement d’ AppleWorks, comme tout le reste de la mémoire, au bureau d’AppleWorks ! Faites une carte-mémoire du GS sous AppleWorks lancé pour la seconde fois, et vous aurez. des surprises... On gagne 100Ko, mais a quel prix ! Une application Systtme 16 n’a pas ce probléme, son identificateur n’étant pas celui de ProDOS. Mais, dans tous les cas, le mieux est bien de suivre la procédure recommandée par le Bureau Politique (Toolbox Reference, vol 1) : avant toute demande de mémoire par un appel NewHandle, commencer par modifier le champ auxiliaire du numéro d’ identification, ou demander un nouvel identificateur par lV'intermédiaire du Miscellaneous Toolset (GctNewld). Au fait, oui, un mot de la solution : il faudrait sans doute patcher AppleWorks, plus exactement réécrire toute la partie de gestion de® la mémoire du GS, pour la mettre en conformité avec les régles Apple. Je crois que cela a été fait avec la version 3.0. Pour ma part, je m’en tire en langant AppleWorks depuis un fichier $16 qui s’installe cn mémoire, ct auquel AppleWorks renvoie donc obligatoirement en sortie. Etant un fichier $16, il relance le syst&me dés qu’ AppleWorks quitte. Si vous lancez AppleWorks depuis le Finder ou depuis Prosel 16, ou tout autre lanceur $16, ca ira aussi. Mais ¢a n’ira pas si vous le lancez directement depuis Prosel 8. oozoss = uz0BB : 0020BE 0020¢1 anz0ce + oo20c7 oaz0ca : 0020CE : 9020CF + 02000 902001 : 902003 : 002006 : 902009 oozovc : 9020DE : 902081 002083 = oo20re : 002059 : oo20Ec 0020ED 00208 oozoro 002063 ooz0r6 0020F9 o020FD o0z0FE 02102 002107 002208 : 0210D 002110 oo2111 002114 : 002117 + 002114 o0211D 002121 007123 : 02124 ooziz5 : 02128 002129 85 Fa Fa Pa Fa a2 2 18 FB 2 8D 74 ooz10¢ : 07120 : 002130 ; 902131 : 002132 : 002133 ra Fa F4 46 ra Fa re a2 22 30 00 oz 00 00 oa 09 oc 68 a7 41 39 30 09 00 03 00 33 00 00 FF FF 33 00 00 02 oo 09 33 02 00 00 oo 00 00 00 09 oo co co 03 rr oo 10 20 00 Ft 21 oo oo oo 21 00 et -2123 11 0 FI 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 166 STA $00 7 Basham pas du tout rea $0002 7 garanti par Apple PEA $0000 PEA $0000 PEA $0008 Lox #50909 JS TOOLBOX SEC 7 retour en 8 bits xCE APLRBT SEI 7 Reboot reconmandé par LDA #50C ¢ Apple sur GS STA $c068 7 StateReg STZ $co47 2 ClrVblInt sT2 $c041 + IntEa LOA #809 STA $039 # SccaReg LDA #80 STA $C039 DEC $03F4 ume (SEFFC) sperersertvereerccer irr tererrreererereee ceri rr rie) * ROUTINE PURCE.MEM * * Force le Memory Manager 4 purger les blocs . * purgeables et 4 compacter la mémoire . * en Iui demandant un bloc mémoire supérieur * * a ce qu'il peut attribuer. * m (ttl 7 sous-routines démarrent sen 8 bits PURGEMEM CLO 7 pagse en 16 bite aE Ree $00110000 * demande un PER PEA 1x ISt. PLA * demande un ERROR ast. END sMYID DS nouvel identificateur #50900 ##00010000_00000000 ; idTag : applic #82003 + GetNewld roor.Aax # range 1’ identificateur sep bloc de 16 Méaas #s0000 #80000 #S008F ¢ taille du bloc : #SEEFE #16 Mégas ! 2MYID 2 etre identificateur ##00010011_00001000 ; application + niveau de purge 3 #$0000 + LecationPtr : sans #50000 + importance ict #80902 7 Newhandle TOOLBOX ERROR 7 erreur : toujours 7 laisser la pile propre :MYID 7 désalloue 1a mémolre 7 de cet identificateur #81102 7 Disposeall rooLROx 7 retour en 6 bits 2,4800 SARA ARADA REA AR AREARERARARARRAN ANA AR ERA RA RARE EERE * RECONFICURATION DE LA BRAM. . * Cecte routine reconfigure la Ram Batterie * 12 Pom’s n° 44 A propos de la Transwarp Les sous-routines utilisées pour configurer la carte sont celles ouvées dans la documentation. J’ai du méme coup trouvé un bug sérieux du “firmware” de ma carte : la sous-routine “ResetTW”, qui est censée remettre la TransWarp dans la configuration indiquée par |’ utilisateur dans Ie tableau de bord de la TransWarp, plante purement et simplement. Pour voir si votre Transwarp a le méme bug, passez sous Basic System et tapez : SCALL~151 *<CTRL-N> (pour avoir des registres 16 bits) *BC/FFOCK En revanche, je m'étais laissé dire que la routine d’identification de la Transwarp proposée par AE était fausse : elle marche impeccablement. A mon avis, certains doivent utiliser un assembleur qui n’est pas le bon... Vous trouverez les explications concemant loption dite “Appletalk/ IRQ” de la Transwarp dans Pom’s 43 pages 62-63. Présentation du listing La partie concernant les différents Quit en sortie n’a pas changé depuis Pom’s 41, pritre donc de se reporter & ce numéro pour toutes explications. En revanche la partie “ModBram” qui modifie les réglages du tableau de bord, a subi quelques modifications du fait de son passage en sous-routine. Mais les explications de Pom’s 41 suffisent. Le “noyau” central du programme est congu de telle fagon qu’on puisse lui rajouter d’autres sous-routines cn fonction des besoins, ou supprimer ce qui n’est pas souhaité. Il suffit de supprimer les JSR correspondants, ou de les transformer en BIT. On peut patcher le code objet avec des $2C a la place des $20 en $202E et suivants. Pour un programme a 002135 002136 002137 ouzi39 00213¢ 00213F : 002142 ooz146 : 002148 : 00214A = 00214D o0214F vuzisz 002154 : 002157 : 002159 + vuzisc : 00215E : 002161 : 002164 : 002167 002168 00216 oozi6e : 002172 : 002173 002176 : vozirs : 6 002271 : 002275 : 002276 : 002277 o0z279 : 002270 : 002280 002262 : 002286 00228A : 002268 : oozzec : 202 :e8 24 #22 £2 ag 8D 6D ay aD 6D 222 282 218 ar cy : DO 38 'B 60 oo 75 03 00 30 00 7A 00 6r or 90 oF 91 iF 3g 00 75 03 00 vg 54 08 10 24 oo 21 oa 00 BI 00 21 09 00 E2 00 £1 EA EAR FF BC 57 =228R FF BC FF BC 2u4 215 216 217 218 219 220 221 222 223 224 225 226 227 228 zey 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 234 255 256 257 258 259 260 261 262 263 264 Ics sans passer par le tableau de bord du GS, * et fait prendre en compte 1a modification par * Je GS. Pour que Prades 16 et & recanfignrent * leur liste de “devices” auseitét, lancer . 4 * * ensuite un programme de type ~start~ de P16 * (voir I*étiquette Launch). Cf Poms 41, * PYeUESECT eter eres rererererertrtertrerererei ri st te? Mx GIL # sous-routines démarrent en mode 8 bits MODBRAM CLC passage en 16 bits XCE REP 400110000 IREAUBKM PEA $0000 PEA :BRAMBUF EDX #80403 2 Lie la Bram JSL TOOLBOX ICHGHRM SEP suU1100U0 ¢_registres ¥ bits LDA #800 + pas de buffer sur le STA :BRAMBUF+$05 ; port 1 LDA #800 ¢ met 1'affichage en STA :BRAMBUF+S1A ; “écran Mac” wa #808 STA :BRAMBUF+$1B LOA SOF STA: BRAMBUF+$1C IWKrBKM KEP $00110000 7 registres 16 bits PEA $0000 PEA :BRAMBUF Lox 480907 2 Berit la Bram JSL TOOLBOX :SETBRM SEP 400110000 ; registres ¥ bits cle 7 avec CLC, reconfigure 7 les slots UsL 6810094 ~—¢_ vecteur ToBramSetup 3END SEC 7 repasse en 8 bits XCE Rrs BRAMBUF DS 236, 432A AU AUAAAARARARAD ADA EERE AERA RE RE EER RERERA REEL ELE A EA * TRANSWARP FAST 1 cette routine reconfigure la * carte accélérateur Transwarp GS d’Applied * Engineering pour tourner 4 sa vitesse maximum * * REARARA RARE AERP AEA EEERAAA RARER ARE AURA EASES HELE aK 411 7 Assemblage 8 bits TWEAST CLC 7 passage en 16 bits XCE REP 900110000 EDA >SBCFFOO ; vérifie la présence de cup 4” THY 7 1a carte Transwarp ANE :END JSL SBCFFIO —;_ GetMaxspeed JSL SBCFF24 ~—;_ SetCurSpeed END SEC fo repasse en & bits KOE Pom’s n° 44 13 Ics publicr dans une revue, cette formule me semble préférable & celle des “DO” a l'assemblage. C’est volontairement que ce programme-source n’inclut pas de macros : j'aime bien savoir ce que je fais, et cela le rend plus lisible. Utilisateurs, attention : ce que fait le programme est parfaitement invisible, tout se passe “dans la téte” de la machine. Scul le passage (a supprimer) en “écran Mac” donne un indice qu'il se passe quelque chose. Ce programme n’cst pas & utiliser tel quel, mais A ajuster en fonction de votre configuration et de vos besvins. Et si vous y rajoutez d’autres sous-routines, envoyez-les nous... Le programme-objet correspondant au listing ci-contre... n’existe pas ! Il serait absurde, puisqu’ il consisterait & défaire ce qu’il vient de faire. A la place, sur la disquette Pom’s, vous trouverez six fichiers correspondant aux six fonctions du programme, (PURGE. MEM, MODBRAM, TRANSWARP FAST, TRANSWARP SLOW, TW.IRQ . FAST, TW. TRO. SLOW). Références + Sur la partie “ModBram” et les divers Quit, voir Pom’s 41. + Sur le Memory Manager et le Miscellaneous ToolSet, voir Toolbox Reference, volume 1, et la mise & jour Apple IIG S$ Toolbox Reference Update (pour RealFrecMem par exemple ; un indispensable). NB pour avoir une synthése compléte et rapide des appels outils, plutét que les deux volumes Apple de Quick Reference (C et Assembleur), je conseille le Programmer's OnLine Companion pour le C et le Pascal, Merlin 16 et ses ToolHelp (qu'on peut adapter pour APW) pour I’ assembleur. * Sur la carte Transwarp GS : voir le “Programmer’s Reference”, inclus dans la documentation francaise. 2. oozz8o 00226 00226F : 02291 : ovzz9s 002298 : 092292 : 002290 + oozzat : 0022a5 : 002206 : 0022A7 + 0022A8 : 0022A9 : 00228A : oozzac : 002280 : 002283 : 002285 : 002289 : 9022BA : 0022BB : 0022B¢ : 002280 00zzBE : 0022c0 : oo22c4 + ooz2c7 : 9022¢9 : oo22co : 0022cE : oo2z2cr : a2 22 22 38 FB 60 18 FB c2 ar D0 22 38 FB 60 ar co 22 38 FB 60 00 a4 0B or ic oo 54 04 00 54 o4 38 Fe BC 57 =22B9 FF ac FF OBC 57 -22c0 FF BC 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 U6 317 ous 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 252 323 354 355 356 357 358 359 360 361 362 363 364 365 366 367 4 TRANSWARP SLOW : cette routine reconfigure la * * carte accélérateur Transwarp GS d’Applied * 4 Engineering pour tourner 4 2,6 MHz (vitesse * + “rapide du CS). é PO RER AH AP AREA HE RARER RA AERA RA RHEE ED wx att + Assemblage 8 bits TWSLOW CL 7 passage en 16 bits XCE REP $00110000 LDA >$BCFFOO + vérifie la présence de cme | #eTHe ¢ la carte Transwacp BNE :END wx Hn + vitesse 2,6 MHz ISL SBCFFIC + Index2Freq vst BCFF24 —_SetCurSpeed END SEC + repasse en 8 bits XCE RIS * IRQFAST : cette routine reconfigure la 4 carte accélérateur Transwarp GS d’Applied Engineering pour ne pas se ralentir durant les Inteccuptions. Pprrrrest rier eri tte tree ee eee ee Mx 411 7 Assemblage & bits IRQFAST CLC 7 passage en 16 bits XCE REP 400710000 LDA >S$BCFFOQ ; vérifie ta présence de cup ON’ TH" + la carte Transwarp BNE :END JSL $BCFF34 + _supprime le ralentisse- ¢ ment de la Transwarp durant les interruptions END SEC + repasse en 8 bits xCE RIS PALA EAA AAEM RA AUER ARAN ERAEHA AAAS AAAS AERO AU ADEE EE IRQSLOW : cette routine reconfigure la . carte accélérateur Transwarp GS d’Applied ‘ Engineering pour se ralentir durant les . interruptions. . Povrsrrreererrrerrrerrerreti titi tet erestri rrr a MK 11 ¢ Assemblage 8 bits IRQSLOW CLC + passage en 16 bits XCE REP 400110000 LDA >SBCFFOQ ; vérifie la présence de one aT + la carte Transwarp BNE END JsL SBCFF38 = ;_ rétablit le ralentisse~ + ment de la Transwarp sdurant les interruptions END SEC 7 repasse en # bits XCE RTS 14 Pom’s n° 44 eS eee a... Les nouveaux. TimeOut Comme le dit la sagesse populaire, un bonheur n’arrive jamais seul... Pom’s vous propose un joli doublé pour la rentrée 1989 : MacroTools.I et DeskTools.II dans leur version frangaise, qui viennent compléter une panoplie déja impressionnante d’appli- cations TimeOut. Deux disquettes truffées de morceaux de choix. En voici un survol, a l’intention de tous les adeptes d’ AppleWorks. MacroTools.II Une vingtaine de macros fort diverses feront la joie des programmeurs, mais aussi de tous ceux qui se préoccupent moins du “comment ga marche” et souhaitent plus prosaiquement s’équiper d’ outils “préts a l'emploi”. Pour les premiers (par prédilection), deux macros tout & fait inédites : — une macro “Désassembleur”, qui traduit automati- quement n’importe quelle petite routine écrite en langage machine en “pokes” compréhensibles pour UltraMactos ; — une macro “Clavierlnterdit”, qui détourne Ja fonction habituelle des macros <ato> pour en faire des sous-routines inaccessibles a partir du clavier et uniquement “appelables” par une autre macro, d’od un double avantage : aucun risque de déclencher par inadvertance une sous-routine malencontreuse, et disponibilité d’un jeu complet de définitions pour les sous-routines (qui ne feront jamais double emploi avec les macros a “part entiére”). Pour les deuxiémes (mais non exclusivement, bien sfir), une macro d’impression de Traitement de textes sur deux colonnes, une macro de chainage de Bases de données “en paralléle”, histoire de disposer de “pseudo-fiches” de 60, voire de 90 catégories... Dimitri Geystor Pour tout le monde, sans ostracisme, des macros pour caler la date et l'heure d’ AppleWorks, avec et sans horloge. Et pour les possesseurs de GS, la saisie de l’heure 4 la seconde pres. Des macros encore pour : — copier l’écran dans le presse-papiers ; — envoyer des codes a votre imprimante ; — utiliser l'imprimante comme une vulgaire machine & écrire ; — charger d’un coup toutes vos applications TimeOut méme s’il y en a plus de 30, trouver sans douleur et précisément les coordonnées de tout point de l’écran. Parmi les fichiers de la disquette, vous trouverez aussi un tableau récapitulatif de toutes les macros UltraMacros déja publiées dans Pom’s. Et -je réservais la bonne surprise pour Ic dessert- il n’y a pas que des macros sur cette disquette. Vous y trouverez aussi quatre mini-applications TimeOut inédites : @ Avec “Changer BIP” vous pourrez. modifier rapidement et précisément le BIP d’ AppleWorks. ®@ Grice a “Lister.Type” vons saurez lister sélectivement, avec AppleWorks, n'importe quel type de fichier (au lieu de vous heurter & la dénomination “autres” dont il affuble globalement tout ce qui n’est pas TdT, BdD ou Tableur). ® La mini-application “Références” vous donnera instan- tanément une “photographie” du statut actuel d’AppleWorks : lecteur actuel, nom d’accés ProDOS actuel, fichier actuel, nombre de fichiers sur le Bureau, occupation et type du Presse-papiers. ® L’application “Noms d’accés” est modeste par la place-mémoire qu’elle occupe, mais elle m’est vite devenue tout a fait indispensable : elle se présente sous la forme d’un écran, appelable par C-Escape, oi vous pouvez inclure & l’avance (et en permanence par configuration, si vous le souhaitez), jusqu’a 12 noms d’accés ProDOS prédéterminés. Pour changer le “chemin actuel” d’ AppleWorks, pointez et cliquez : imbattable en simplicité et en rapidité. Pom’s n° 44 15 een | I3.4 DeskTools.II Il faut le dire tout de suite, le titre anglais “Accessoires de bureau” me semble pécher par excés de modestie. La calculatrice scientifique/financiére “Calculator+” est un authentique programme & part entitre (méme s’il cst appelable & tout moment directement 4 partir d@ AppleWorks, avec lequel il sait échanger ses données). Quant aux autres applications, il serait plus exact de les traiter de prolongements naturels d’ AppleWorks, plutét que d’accessoires, vu la connotation de futilité qui accompagne généralement ce demier vocable. Mais jugez plutot par vous-mémes : Accés direct Vous avez des disques a forte capacité (3,5 pouces, ou disque dur), et malgré tout Ie soin que vous apportez 4 vos classements vous ne retrouvez pas toujours facilement tcl ou tel fichier ? Vos soucis appartiennent désormais au passé : “Accés direct” se charge de tout. ® “Accés direct” vous demande d’abord quel lecteur, ou quel catalogue vous voulez examiner. @ I demande ensuite si vous voulez voir : — les fichiers AppleWorks seuls ; — tous les fichiers ; — les fichiers dont le nom contient une chaine de caractéres déterminéc. Ces informations enregistrées, “Accés direct” fait son travail : il lit tout le catalogue avec tous ses sous- catalogues et affiche un superhe tableau de tons les fichiers désignés. Les fichiers des sous-catalogues sont indentés, et précédés d’un, de deux ou de plusieurs points correspondant aux “niveaux” de leurs sous-catalogues. Ce super-catalogue est imprimable, en entier ou par écrans. On peut aussi le faire défiler 4 l’écran avec la souris, vers le haut ou vers le bas, autant de fois qu’on le désire. De plus, les fichiers spécifiquement AppleWorks (TdT, BdD ou Tableur) sont signalés en marge par une petite pomme. II suffit de cliquer dessus, et aussit6t le fichier sélectionné est chargé sur le Bureau, tandis que son préfixe devient le “chemin actuel” d’ AppleWorks ! Je n’en dis pas plus, c’est tout bonnement magique. Calculator+ Si vous voulez faire vos comptes d’épicerie sur cette calculette, ce n’est certes pas interdit, mais 1A n’est pas sa véritable vocation. Il s’agit d’une calculette scientifique et financiére a Notation Polonaise Inverse (NPI). Les opérations et les formules les plus complexes s’écrivent au moyen d’une petite pile de 4 variables. On met des données dans les variables, on leur applique une opération ; le résultat passe au sommet de la pile tandis que les variables (dont on n’a plus besoin) sont purgées. Et ainsi de suite. Cela ne vous rappelle rien ? Ce n’est pas autrement que procédaicnt nos grands-parents sur leurs bouliers. Sauf qu’ici, nous travaillons avec tout le confort de L’électronique, que nous pouvons chaisir la base (décimale, hexadécimale), le format (jusqu’a 16 chiffres significatifs, nombre de chiffres aprés la virgule, notation scientifique), les fonctions (trigonométriques, exponentielle, logarith- mique, etc.), les options financitres (amortissement, verse- ments, dépét périodique ou global, valeur actuelle ou acquise). Les valours peuvent étre introduites & la main, prélevées dans une cellule de Tableur, et “exportées” dans toute application AppleWorks. Les connaisseurs apprécicront. Chronométres Cette application donne le meilleur d’elle-méme sur le IIGS, car elle chronomtwe & la seconde pres. Elle fonctionnera aussi sur tout autre Apple // muni d’une horloge, avec un précision d’une minute. Vous n’avez pas d’horluge ? Désolé, attendez-moi un instant, on se retrouve 4 l’application suivante. ® Vous disposez non pas d’un mais de cing chronomttres, et pouvez mesurer jusqu’a cing événements distincts. Chaque chrono donne |’heure du début, de la fin et le temps écoulé. @® Vous pouvez méme ajouter & chaque événement, une note explicative. Une fois les chronos démarrés, vous pouvez revenir 4 AppleWorks, et continuer ce que vous aviez a faire : le chronométrage continue. Vous pouvez, bien entendu, consulter 4 nouveau le chronométre - ou l’arréter a votre gré : il suffit de revenir a |’application par G-Escape. Eteindre écran L’écran s’obscurcit aprés un compte a rebours de quelques secondes. Pour le réactiver, appuyer sur une touche. Ah oui, il y a un petit “extra” : on peut configurer cette application pour que 1’écran ne revienne que si vous tapez un code secret de votre choix. Tant pis pour les petits 16 Pom’s n° 44 curieux qui voudraient ausculter le travail en cours pendant que vous vous étes momentanément absenté, Gérer imprimantes Avec cette application, vous pouvez envoyer tous les codes que vous voulez directement aux imprimantes définies dans AppleWorks. La configuration est trés riche en possibilités. Vous décrivez les commandes (14 par imprimante), et leur attribuez Ics codcs 4 envoyer (jusqu’a 10 octets par commande). A I'appel de l’application, il suffit ensuite de donner le numéro de la commande pour que celle-ci soit immédia- tement exécutée, c’est-a-dire transmise a l’imprimante en ligne. Ceci permet l’envoi & volonté de tous les codes simples (caractéres gras, souligné, caractéres par pouce, appel du jeu de caractéres spéciaux, etc.), mais aussi une gestion complexe du travail de l'imprimante si vous en connaissez un peu les principes. La configuration est ts simple a faire, et je me suis apergu que cette application est un outil idéal pour tous les “travaux pratiques” indispensables quand on veut perfectionner sa propre compréhension du manuel d’une imprimante. Imprimer écran Une application toute simple mais exuémement utile. En fait, elle permet d’imprimer (avec l’imprimante G-H) n’importe quelle partie de l’écran. On définit un bloc de texte avec les fléches (ou Ja souris), en le mettant en inverse vidéo. On valide : le bloc sélectionné est immédiatement imprimé. D’un emploi ultra-facile et intuitif. Prospecter fichier Voila un outil trés incisif : il permet la recherche d’une séquence de caractéres dans des fichiers AppleWorks sur disque. Vous avez bien lu : la recherche porte sur le contenu des fichiers. L’application est donc d'une grande puissance, & vous de savoir bicn la manicr. La prospection se fait d’ailleurs a une vitesse surprenante, si l’on tient compte du fait que le contenu entier du fichier est passé en revue. La recherche en cours peut étre nuancée : comme pour la fonction -L d’AppleWorks, vous pouvez choisir “Texte brut” ou “Image exacte”; de plus, la chaine indiquée peut tre limitée —ou non— aux seuls mots entiers. Par exemple, si vous choisissez la chaine “PAS”, l’application ec 654) eH retrouvera selon le cas uniquement le mot “pas”, ou aussi “passablement”, “dépassé”, etc. En cours de recherche, une fenétre d’information s’affiche au milieu de 1’écran. Elle indique le déroulement de la Pprospection : nom du fichier prospecté, type de ce fichicr, chaine cherchée, emplacement de. chaque chaine trouvée (le contexte est affiché). On peut a tout moment poursuivre, charger le fichier sur le Bureau, ou arréter. En fin de recherche, un petit bilan s’affiche dans la fenétre : nombre de fichiers prospectés, et nombre de correspondances trouvées, La grande classe, quoi. Et le grand confort ! Vérifier disque Cette application wavaille en deux modes : Lecture simple, ou Lecture/Ecriture. Elle lit un disque entier bloc par bloc (et le réécrit au fur et A mesure dans la deuxiéme option). Vous pouvez l’interrompre & tout moment par Escape. Si elle rencontre un bloc défectueux, elle le signale et fait une pause avant de continuer. A employer si vous n’arrivez pas a charger un fichier AppleWorks. Si aucune erreur n’est détectée, l’erreur est dans le libellé du fichier ou du catalogue. Si une erreur est détectée, le défaut est dans la disquette elle-méme, ou dans les données du bloc. De toute fagon, ce n’est pas dréle, mais un homme prévenu en vaut deux... Voir Presse-papiers Indique le type des données du presse-papiers, et montre son contenu 8 !’écran, Particulitrement utile si vous employez l'application Triple Presse-papiers de Randy Brandt, et n’étes plus tout & fait sfir du contenu de I’un des presse-papiers : maintenant vous pouvez vous en assurer sans avoir a essayer de le copier dans un fichier (avec toutes les manipulations et fausses manceuvres qui vous menacent si vous tentez. de copiez un presse-papiers dans un fichier de type différent...). Non seulement le contenu du presse-papiers peut étre consulté, mais il peut étre sélectivement effacé (ligne & ligne pour du TAT, fiche a fiche pour une BdD, ligne ou colonne pour un Tableur). Pom’s n° 44 17 18 Programmation AppleWorks Des Ascii et des pommes Je vous propose aujourd’hui d’explorer certains compor- tements d’ AppleWorks, et d’UltraMacros. Il sera question surtout de lecture ct d’affichage de caracttres al’écran, dans le traitement de textes. A titre d’illustration, je montrerai comment !’on peut, sans trop de peine, créer avec UluaMacros de jolies fenétres de messages a l’écran, avec caractéres normaux, MouseText et méme en inverse vidéo. (La disquette d'accompagnement optionnelle Pom’s 44 comporte le fichier Macro. Fenétre prét a l’emploi). Pour travailler & l’aise je vous recommande d’avoir sous la main le fichier de macros SuperP rint . um de Daniel Lurot (Pom’s, n° 42), la disquette PathFinder de Randy Brandt (et plus précisément l’application TimeOut “Valeurs ASCII” qu'elle contient), Ceci n’a rien d’obligatoire mais, 4 moins d’étre masochiste, pourquoi travailler, comme on dit, avec “une main attachée derriére le dos” ? En cours d’article, j’expliquerai aussi pas-&-pas comment utiliser l’utilitaire Block. Warden de ProSel — a l’intention de ceux d’entre vous qui possédent ProSel, |’emploient pour lancer des programmes, mais n’ont jamais osé s’en servir pour “€diter” un fichier. Il n’y a rien de sorcier 1-dedans. Je vous recommande enfin de transformer vos fichiers SuperPrint.um en fichier Task, selon la méthode décrite dans mon précédent article, au moyen de |’application Macro Options. Ainsi, vous pourrez y accéder instan- tanément en cas de besoin. Quant aux petites macros qui émaillent l’article, avant le macro-programme proprement dit, vous pouvez soit les compiler toutes d'un coup (aucune ne porte le méme nom), soit les compiler au fur et & mesure de votre lecture. Bon, j’en viens & mon propos. Faisons un peu d’explo- ration, en commengant par le plus banal. Le clavier Quand vous appuyez sur une touche, ou une combinaison de touches, un signal est envoyé a votre ordinateur sous la forme d’un code, dit code ASCII. C’est un nombre, de 0 a 255 en notation décimale, ou de $00 a SFF en notation hexadécimale. Dimitri Geystor Le manuel d’UltraMacros conticnt, cn derniére partie, une table des valeurs ASCII qu’il est commode de consulter d’un seul coup d’ceil. Vous constaterez tout de suite que les caracttres sont au nombre de 128 sculcment, deux valeurs étant attribuées & chacun d’entre eux, une valeur “basse”, et une valeur “haute”. La différence entre I"une et I’autre est toujours de 128, ce qui correspond justement 4 la valeur du huitiéme bit d’un octet. Si vous avez “Valeurs ASCII” sur votre menu TimeOut, appelez-le, et parcourez les divers codes en promenant la souris de gauche & droite. Puis faites “Return” deux fois, et tapez sur une touche ou une combinaison de touches : les codes correspondant s’afficheront aussit6t. 2 L’écran Votre Apple II profite de cette double attribution de codes pour afficher les caractéres de deux facons différentes : le mode “ordinaire” et le mode “inverse”. Si, de plus, votre Apple dispose des ROMS qui accompagnent le processeur 65C02 (c’est le cas de toutes les machines récentes) il vous est possible d’afficher A I’écran un jeu de caractéres supplémentaires “MouseText”. Si vous programmez en Basic Applesoft vous savez qu’il faut, pour activer ct désactiver ce jeu de caracttres, envoyer des codes de contréle spéciaux. Les choses se passent autrement avec AppleWorks. Comment AppleWorks interpréte-t-il le code envoyé par le clavier ? Et qu’affiche-t-il & l’écran ? AppleWorks fait un double filtrage A sa maniére, de telle sorte qu’il est impossible a l'utilisateur de taper directement des caracttres en Inverse ou MouseText. Ces caractéres ne sont accessibles qu’a travers des routines internes. Pour toutes les valeurs ASCII basses comprises entre 32 (Espace) et 126 (Tréma), AppleWorks affichera & I’écran le caractére “normal” correspondant a (ASCII + 128). La valeur 127 correspond au “Delete”. Les valeurs “hautes” sont, pour AppleWorks, des commandes “G-". Il y réagira s’il les reconnait, ou enverra un “BIP” si cllcs lui sont inconnues. Pom’s n° 44 Les commandes UltraMacros liées aux codes ASCII Key UltraMacros posséde une commande qui permet de lire la touche qui a été enfoncée. C’est la commande <key>. Exemple : ki<awp msg “ Appuyez sur une touche ou un e combinaison de touches ”: k=key (attend qu’on appuie sur une touche) msg k>! (la valeur de la touche est dans la variable k) Quand vous actionnez cette macro, et que vous appuyez ensuite sur une touche ou une combinaison de touches, elle vous renvoie en message de bas de ligne le code ASCII correspondant, tel qu’envoyé par le clavier et regu par AppleWorks. Essayez par exemple de taper “M”, et la valeur renvoyée sera 77 en décimal. C’est la valeur ASCII basse, ou valeur ASCII avec le huititme bit a zéro. Essayez maintenant la macro avec “ G-M”, La valeur renvoyée sera 205 , soit 77 + 128. C’est la valeur ASCII haute, ou la valeur ASCII avec le huitiéme bit a 1 (le huitiéme bit vaut 128). Compte-tenu de ce qui précéde, vous voyez que <key> lit la touche telle qu’AppleWorks |’ interpréte. Print Au lieu de taper un caractére au clavier, on peut l’envoyer & AppleWorks par la commande <print>. Exemple : P:<awp print "M”>! (élémentaire, Watson) mon cher On peut aussi d’abord définir une chaine, puis imprimer la chaine : q:<awp $1="M" (on définit la chaine) print $1>! (on 1’imprime) Chr$, Asc $, Str$ Dans la macro ci-dessus, on aurait pu définir la chaine & partir d’une valeur ASCII. L’intérét d’une telle définition est qu’on peut envoyer 8 AppleWorks des commandes “-quelque-chose” : ri<awp $l=chr$ 177 (177 = code ASCII pou x oa-1) print $1>! (on envoie la command e a AppleWorks) Elle permet aussi de transmettre des touches. En général, on ne change pas la valeur de k. Mais si l'on s’amuse, par exemple, a incrémenter k d'une unité, cela donne : f:<awp (Clavier fou. Quitter avec Esc) begin k=key ifnot k=27 k=k+1 print chr$ k: else stop >! Actionnez cette macro, et essayez de taper du texte... xrpt Revenons & la macro sa-r, et compliquons-la un peu, en lui faisant donner le code ASCII du caractére imprimé (la commande <ase $> lit la valeur ASCII du premier caractére d’une chaine) : S:<awp $1="M” (on définit la chaine) print $1 (on 1’imprime) k=ase $1 (la variable k contien t le code ASCII de $1) msg k >! (k est imprimé en mess age de bas de ligne) La commande <str$>, quant a elle, transforme une variable numérique en chaine de caractéres. La macro ci-aprés imprime la caractére M et sa valeur ASCII : t:<awp $1-"M”" (on définit la chaine) k=asc $1 (la variable k lit le code ASCII de $1) $2 = str$ k (on transforme la vari able numérique en chaine) print $1 + “ =” + $2>! (on imprim e 3 chaines “concaténées”) Peek $10f5 Cette commande analyse le caractére sous le curseur (dont AppleWorks conserve le code a l’adresse hexadécimale $10f5) et renvoie la valeur de ce code ASCII dans la variable numérique désignée. Exemple : c:<awp k=peek $10f5 (envoie le contenu de $10£5 dans la variable k) msg k>! (affich k en bas de ligne) Si le curseur était sur un “M”, surprisc, cc n’cst pas 77 mais 205 (77 + 128) qu’affiche le message. Eh oui, c’est ainsi, autant le savoir : la commande <peek $10f5> renvoic la valcur haute du code ASCII du caractére sous le curseur. Poke $10f5,x La, nous nous aventurons un peu. L’hypothése étant : si <peek $10£5> lit la valeur du caractére sous le curseur, pourquoi ne pas bluffer AppleWorks en mettant une quelconque valeur ASCII dans cette mémoire ? Essayons : m:<awp k=193 (valeur haute de “A”) poke $10£5,k>! Pom’s n° 44 19 20 Ah, mais ca a l’air de marcher ! On actionne-la macro, et un “A” apparait sous le curscur. Hélas, c’ciit été op beau. On a bien mis un caractére & |’écran, mais en prenant un raccourci, et AppleWorks n’est malheureusement pas au courant. A la premitre occasion, il réécrira par-dessus ce que lui, AppleWorks, est censé mettre a cet endroit. Faites Escape deux fois de suite, et pfuiit ! votre caractére de contrebande cst cnvolé, Ne nous décourageons pas, et poursuivons notre exploration : du moment que <peek ¢10£5> envoic la valeur haute du code ASCII, que se passera-t-il si nous faisons un <poke $10f5> avec la valeur BASSE ? Essayons : vis<awp k=65 (valeur basse de poke $10£5,k>! “a”) Et voila une jolie pomme. On ne peut pas |’effacer par Delete, mais elle disparait si l’on écrit par dessus (méme en mode insertion) et, comme tout a I*heure, elle s’évanouit définitivement au moindre “rafraichissement” d’écran (par Escape ou défilement). Essayons de la capturer en la mettant dans la macro zéro ($0) avec la commande G-/ : aie, c’est “A” qui nous revient, bien permanent cette fois, mais ce n’est pas ce que nous voulions. Essayons de la copier avec G-C : elle s’envole aussitét, avant méme qu’on ait pu la saisir. Et pourtant, n’y a-t-il pas quelque chose & tirer de cette nature fugace ? Si seulement, au lieu d’afficher un seul caractére, on pouvait en afficher plusieurs, on tiendrait 12 une fagon de mettre & I’écran (a l’endroit du curscur) des messages “propres”, qui disparaitraient ensuite sans laisser de traces en restituant le texte qu’ils auraient éventuellement oblitéré. Eh bien, ca marche sans probléme. Par exemple : u:<awp k=64 begin poke $10£5,k right k=k+1 ifnot k=96 rpt else slop>! Mettez le curseur en début de ligne, et tapez sa-u pour voir s‘afficher les caracttres MouseText. De 1a, cependant, 4 pouvoir afficher commodément un message dans une fenétre, avec la possibilité de modifier facilement et le message, et la position de la fenétre, il y avait plus qu’un pas a franchir. C’est ce que fait le macro-programme que je vous présente en fin d’article. Mais avant de l’aborder je ferai un détour par Block. Warden, Péditeur d’octets de ProSel, et pour ceux qui ne I’auraient Pas, par SuperPrint. um (les macros de Daniel Lurot du n° 42 de Pom’s). Enfin, ceux qui n’ont méme pas les macros SuperPrint.um trouveront quand-méme en fin d’article la macro sa-$ de Daniel Lurot, qu’ils pourront recopicr soigncusement a la main, compiler ct utiliser pour introduire de fagon permanente des caractéres spéciaux (MouseText ou Inverse) dans un fichier de traitement de textes AppleWorks, En effet, s’il fallait par la méthode des <poke $10£5> créer une fenétre (cadre composé en partie de caractéres MouseText, et en partie de caractéres ordinaires), et y mettre un texte qui contienne au choix des caractéres ordinaires, MouseText ou inverses, la tache serait fort laborieuse. De plus, il serait tres difficile de modifier le texte du message. Or nous savons (depuis le n° 42 de Pom’s), que des caractéres spéciaux peuvent étre introduits de fagon permanente dans un fichier TdT AppleWorks, et qu’alors ils sont copiables 4 volonté par la commande G-C. J’ai constaté en outre qu’ils étaient lus correctement dans tous les cas par la commande <asc $>. Il est donc possible de créer d’avance des chaines composées de caracttres mixtes, qui serviraient de modéle a celles du message afficher ; il suffirait ensuite d’écrire une routine qui les lirait, caractére par caractére, avec la commande <ase $>. Créer ces caractéres avec SuperPrint.um est un jeu d’enfant, je n’y reviendrai pas. Je dirai quelques mots par contre de l'emploi de Block. Warden, de ProSel. Si vous vivez (heureux ?) sans ProSel, sautez la partie qui lui est consacrée. Tant que yous étes dans AppleWorks, créez un petit fichier de Tdt que vous nommerez Essai. Tapez-y trois fois de Suite la ligne suivante, en changeant le numéro du début : (4) 4aABCD EFGHTIKILMNOPQRST UVNXY ec J* (avec un espace entre chaque caracttre, et une ligne vide entre chaque ligne). Sauvez Essai, quittez AppleWorks. Vous étes maintenant dans 1’écran s€lecteur ProScl, ProSel : A partir de l’écran de sélection principal, tapez les deux chiffres qui correspondent au Port et au Lecteur oi se trouve la disquette qui contient le fichier Block. Warden. Par exemple 51 pour le Port 5, Lecteur 1. Vous verrez. s’afficher une liste de fichiers-programmes (en majuscules) et de sous-catalogues (en minuscules). Si Block.Warden n’est pas visible, sélectionnez le sous- catalogue qui le contient (probablement “util”). Sélectionnez et validez Block.Warden. I] faut maintenant lui indiquer oii est votre fichier Essai. Changez au besoin de disquette (Block. Warden reste en mémoire), et indiquez le préfixe ProDOS. Pour cela tapez sur la touche “P” : une fenétre apparait, avec un préfixe par défaut qui n’est sans Pom’s n° 44 doute pas Ie bon. Tapez Ic préfixc voulu, cn commengant bien par une barre oblique (/). Par exemple /traveil/tdt /. Faites Return, et le préfixe actuel s’inscrira & gauche en haut de I’écran. Maintenant, tapez “F” pour appeler le fichier. Une fenétre s’ouvre, avec “Follow/Info pathname”. Tapez le nom du fichier, sans barre oblique. Par exemple “Essai”. Faites Retum. L’écran change aussitét, et vous devriez y voir déja des choses familiéres. Cet écran est divisé en deux parties : 4 gauche, les valeurs hexadécimales de tous les octets du fichier, & droite leurs équivalents en caractéres ASCII. En haut 4 droite de I’écran, la mention “R/W mode”, c’est & dire mode Lecture/Ecriture. On circule écran par écran, avec les fléches haut/bas. Un bloc occupe deux écrans. Tapez sur la touche “E”. En haut & droite, la mention est maintenant “Edit mode”. On circule caractére par caractére avec les fléches haut/bas et droite/gauche, et l'on fait passer le curseur au choix dans la partie droite ou gauche de l’écran avec la touche TAB. On ne peut éditer qu’un bloc a la fois (deux écrans). Pour revenir au mode R/W, taper Escape. Pour sauver les changements, taper W pour “write” suivi de Retum, et valider avec la touche “Y”. Repérez, dans la partie droite de l’écran, les trois lignes de caractéres que vous aviez tapées dans AppleWorks. Mettez Je curseur sur le “a” de la premitre ligne, et faites TAB : le curseur saute & gauche sur le code hexadécimal correspondant, qui doit étre 40. ‘apez cO (c'est a dire unc a la place du 4 ct aussit6t aprés un zéro). Le curseur est maintenant sur la valeur 20, qui est le code hexadécimal de Pespace. Avec la fléche a droite, allez sur la valeur suivante qui est 41, et tapez cl. Continuez ainsi, en remplagant les 4 par des c, et les 5 par des d, jusqu’au demier caractére de cette ligne du fichier AppleWorks, qui est Sf, et qui doit devenir df. Faites Esc pour revenir au mode R/W, tapez W et Return, suivi de Y. Le disque tourne, les modifications que vous avez apportées ont été enregistrées. Revenez au mode “Edit” avec la touche “FE”, et modifiez les deuxitme et toisitme lignes de la méme manitre, mais en remplagant les 4 et 5 par des e et f dans la 28me ligne, et par des a et b dans la 3éme (donc, de e0 a ff, et de a0 a bf). Sauvez, el quittez Block.Warden en tapant “Q” suivi de “Y” pour confirmer. Lancez AppleWorks, chargez le fichier Essai, et admirez votre ceuvre. Si vous n’avez pas fait de faute, les trois lignes sont devenues : ® BBEEABREHE DHRU Oe @ #¥44-L3H#8ca/eleF | @ BEESRORORABEDees @ BESSHOUNEABRDEeS En dépit des apparences, les lignes (2) et (3) ne sont pas identiques. Mais il est impossible de distinguer facilement, a partir d’ AppleWorks, les caractéres des séries (2) et (3). Une solution est de recopier le caractére & tester dans la macro suivante, de la compiler et de l’exécuter ; elle affichera le caractére spécial en inverse vidéo, et indiquera sa valeur ASCII en bas d'écran. w:<awp $1="M@” (définition de la chaine) vease $1 (lecture de la valeur ASC IT du ler caractére) n=v+128 (on inverse le 8éme bit) aif n>255 n=n-256 elseofft poke $10f5,n (on poke la nouvelle valeur) msg n>! (et on l’affiche aussi en bas d’écran) Voici les caractéres qui correspondent a la série (3) : @G) !"#$%&?()*+,-./0123456789:;3< =>? Devant Ic point d’cxclamation, il y a un espace (non visible). Nous voici maintenant préts 4 construire notre macro-programme. La premiére tache est d’écrire les chaines qui formeront la fenétre. Elles logeront dans la sous-routine ba-2. Tapez ces chaines au clavier, directement pour les caracttres “normaux”, et avec la macro sa-$ de Daniel Lurot (donnée en fin d’article). Vous pouvez aussi copier caractére par caracttre a partir des trois lignes obtenucs avec Block.Warden. Si vous avez essayé I’un et l’autre, vous ne douterez pas de la supériorité écrasante de la macro. Pour changer le texte du message, il suffit de modifier les chaines, Pour déplacer la fenétre, il suffit de changer les coordonnées dans la macro ba-1. La macro de démarrage ba-1 positionne le curseur au coin supéricur gauche de la future fenétre, puis passe aux sous-routines. Note 1 : Les routines ba-3 et ba-4 utilisent la notation $(k) pour désigner les chaines, ot k est une variable que |'on incrémente : notation trés pratique quand une série de chaines doivent subir le méme traitement. Note 2 :Lapartieif n > 255 n = n - 256 elseoffde la macro sa-v ci-dessus a été omise : on peut s'en passer, AppleWorks rétablit la valeur ASCII dont il a besoin. Dans la routine ba-4 on peut aussi mettre v=v-128, le résultat est le méme. Pom’s n° 44 21 22 Macro.Fenétre START Macro principale : <ba-1>:<awp (repérages et mise en place du curseur) insert (mode insertion pour un cur seur moins voyant) G-up ba-left (curseur en haut a ga uche de 1’écran) posn x,y (on note sa position) x=x+25 (coordonnées du coin supéri eur gauche...) y=y+6 (...de la future fenétre) begin posn a,b down b=bt+1 ifnot b= y rpt else (on descend de 6) begin posn a,b right a=at+l ifnot a =x rpt else (on avance de 25) ba-2 (lecture des chaines qui cons tituent la fenétre) ba-3>! (exécution de la fenétre) Routines : <ba-left>:<awp (renvoi du curseur en dé but de ligne) c=0 begin G-tab c=c+1 ifnot c=18 rpt>! <ba-2>:<awp (Définition des chaines qui feront la fenétre) $1=" ” $2="/ Exemple : Message j# $3="/ en caractéres ag $4="/ normaux, MouseText f* $5="/ et INVERSE lig $6="/ ka >! (Fermons la macro) <ba-3>:<awp (boucle d’appel des chaines successives) k=1 (k=1 pour la premiére chaine) begin ba-4 down ba-5 k=kt1 ifnol k-7 rpt else down stop>! <ba-4>:<awp (boucle d’affichage tempora ire d‘’une chaine) L=len $(k) (longueur de la chaine) v-asc $(k) (lit la valeur ASCII du premier caractére) v=vtl28(on rétablit le 8éme bit) poke $10£5,v right (on poke ct on avance) L=L-1 ifnot L=0 $(k)=right $(k),L (on fait sauter le premier ca ractére de la chaine) xpt>! (et on recommence la boucle) <ba-5>:<awp (curseur a la ligne, et au bord gauche) left posn x,y if x>a rpt>! Macros de saisie de caractéres spéciaux (Daniel Lurot, Pom’s n°42) $:<awp msg ‘Tapez le caractére désiré’: A = key msg ’’: if A<32 then A=32+A elseoff print chr$ A>< left:goto ba-M>! <esc>:<awp>;<left:goto ba-M>! <etrl-v>:<awp>6<left:goto ba-M>! <ba-M>:<awp>< poke $800,$8d:poke $801,$08:poke $ 802, $c0: poke $803,$20:poke $804, $ld:poke 805, $6f: poke $806,$c9:poke $807,$81: poke $808, $d0:poke $809, $12: poke $80a,$a5:poke $80b, $82: poke $80c,$38: poke $80d,$ed:poke $80e, $00:poke 80£,$7c: poke $810, $a8: poke $811,$b9:poke $812,$02:poke $ 813,$7c: poke $814,$49:poke $815, $80: poke $816,$99:poke $817,$02:poke $ 818,$7e: poke $819,$20:poke $81la,$17:poke $ 81b, $6£: poke $81c,$8d:poke $81d,$09:poke $ 8le, $c0: poke $81£, $60: call $800><oa-Z oa-7>! % a Pom’s n° 44 Un nouveau CDA GS : Ram.Use Seize millions sept cent soixante-dix sept mille deux cent seize octets, c’est ce que le 65SC816 de votre Apple IIGS peut adresser, soit 256 fois plus que cc dont était capable Pancestral 6502. Pour gérer ces 16 Mo, le GS est doté d’une gestion de mémoire perfurmante appelée Rom Tool 02, ou Memory Manager. Le Memory Manager Dans le principe, le rdle principal du Memory Manager est de comptabiliser la mémoire de telle fagon qu’en I’ utilisant, un programme peut allouer ou désallouer des blocs de mémoire ainsi que changer leur taille pour satisfaire ses besoins. Le Memory Manager prend note de chaque utilisateur de chaque bloc de mémoire, afin de ne jamais donner plus d’une fois une zone de mémoire. Pratiquement, pour connaitre a chaque instant l’état de la mémoire, le Memory Manager entretient une liste lui indiquant pour chaque bloc : * adresse de début du bloc ; * le statut du bloc, (s’il est dynamique, effacable...) ; + Putilisateur du bloc ; * lataille du bloc. C’est cette liste que peuvent vous donner le Memory Mangler, CDA fourni avec la Documentation Développeur, ct le Memory Peeker, CDA installé dans les ROMs version 01 (voir Pom’s 35 page 63). L’ID Tag Manager Pour étre capable de reconnaiure chaque utilisateur, le Memory Manager travaille avec I'ID Tag Manager, qui fait partie des Miscellaneous Tools (Tool 03). L’ID Tag Manager est utilisé pour assigner un identificateur (ID) & chaque programme en fonction de son type. Cet ID est composé de trois champs : @® Champ Type, 4 bits indiquant le type d'utilisateur : 0 = Memory Manager (Systtme, E/S, Affichage, RamDisk...) Application (GS.Paint, APW...) Programme de contréle SOS (ProDOS 8, 16 ou GS.OS...) Tool (RamTools essentiellement) Accessoire de bureau (CDA, NDA) Uwe oon oon Ics Patrice Neveu 6 Bibliothéque (fichier RTL) 7 System Loader 8 Fonction du Firmware ou du Systéme 9 = Tool Locator (RomTool 01) A = Mise & jour (fichier STR) B a F = Non-défini Champ Type Auxiliaire, 4 bits définis par I’utilisateur. Champ d’identification, 8 bits assignés par I"ID Tag Manager, Bank FF Bloc indiqué par le ROM du I+, //e dernier handle de bo $FFFOOO ~~~] | Ja liste. Regroupe le complément sur gre |__ROM, 128Ko 32 bits, les ROMs, AS i] la RAM existante, ees et $4000 octets inexistante du bank $E1 que le Memory Manager $E1 $EVCOOO wnnnn| 7 ne gere pas. RAM systéme, E/S iatrien ane et libre wee $£02000 ------|, Bloc contenant $EO $2000 octets du i Foo Bank $£0 non j RAM inexistante gérés par le MM $12 | pour un GS 1,25Mo || et la RAM inexis- $11 { tante RAM pour un GS 1,25Mo 4 ROMs sur ; RAMpourun ; O carte-mére go2 | GS512K0 $01 Puces sur car- RAM systéme, E/S te d'extension affichage, et libre ile du systéme Puces sur goo L? 2 carte-mére Schéma simplifié de l'utilisation de la mémoire du GS Pom’s n° 44 23 En pratique Question : Comment se répartissent tous ces éléments dans ma mémoire ? Réponse : Faites C-Cirl-Escape, selectionnez le CDA “Répartition de la Mev", et conformez-vous aux indications inscrites en bas de I' €cran du CDA. Question : Jen suis a I’ affichage en pourcentage. Qu'en est-il ? Réponse : Les lignes ‘MEV utilisée’ et ‘MEV libre’ sont en poucentage de la Mev Totale. Les lignes Memory Manager, Applications jusqu’a Non-Défini sont en pourcentage de la MEV utilisée. La ligne RAM Disk est en pourcentage du Memory Manager. Au premier coup d’ceil sur le schéma simplifié de la mémoire du GS, on a l’impression que tout est bien organisé, Certes, mais en fait, il ne faut pas oublier que ce schéma est simplifié 4 l’extréme et qu’en outre, deux particulatités, signalées par les accolades y sont remarquables. Pour expliquer le schéma, il faut dire qu’il y a une importante zone vide en plein dans la MEV, ainsi qu’entre Ics banks $E0- E1 ct la ROM. Pour ne pas allouer le trou an milien de la MEV a un utilisateur, le Memory Manager considére qu’il Iutilise. Il fait de méme pour les ROMs et Vespace les séparant du bank $E1. Allez-voir avec le Memory Peeker : vous trouverez deux handles correspondants & des blocs énormes. Malheureusement, pour ce faire le Memory Manager n’utilise pas un bloc fictif allant de la fin de la MEV €tendue jusqu’au début du Bank $EO, mais un bloc allant de Ja fin de la MEV étenduc jusqu’a la page $20 du Bank $EO (SE02000), car les $20 premiéres pages du bank $E0 sont réservées au sysitme, et ne sont ainsi pas gérées par le Memory Manager. En conséquence, ce dernier mélange allégrement de la MEV réelle et de la MEV inexistante. De méme, parce qu’il est impossible d’allouer une zone en ROM ou dans l’espace actuellement vide situé entre le bank SE1 et la ROM, le Memory Manager crée non pas un bloc allant de la fin du bank $E1 jusqu’en $FFFFFF (24 bits), mais un bloc partant de $00E1C000 jusqu’en SFFFFFFFF (32 bits), car la zone $E1C000 & SE1FFTF est elle aussi réservée au systéme (E/S et carte langage). Remarquez qu’cn considérant que la mémoire se termine en SFFFFFFFF, Apple se réserve ainsi une porte facile vers la compatibilité avec un processeur adressant 32 bits. Ces deux trous dans la mémoire sont bien évidemment pris en compte par le présent CDA, ainsi que les $6000 ($2000+S4000) octets réels ‘mélangés’ @ la mémoire absente. Amusez-vous Il est ues intéressant d’utiliser ce CDA sous différents environnements tels que APW, AppleWorks, GSPaint, un Quit ProDOS (8 et 16), I’AppleSoft, ProDOS 8, ProDOS 16, GS.OS... GO Source RAM.USE.ASM Asm 0¥.Us0.COA heap RAH.Use Filetype RAM.Use COA exit Source MAKE.RAM.MAC macgen RAM.Use.COA RAM.Macros /RAMS/Macroa/= RAM. Use. ASH Exit Source RAM.USE.CDA pawsune v1.6 + Dermot dafticher I"vtilisation de Ja menoize geree par le memory Manager, * + welon les 10s definis dane 12 1D Tag Manager des ttiscellanevue Touls. . + Pour Iassenblege / linkage é oopy RAM.Macros Reep kaw.use # Bloc d'identitication de CDA . WAUee Info Start ate 'Repartition de Ia Mev’ de 14°RAM_Use_startup' de 14"RAM_Use_ShutDown* * Segnent principal du GUA . AAM_Use_Starttp start ming RAM tine_naen Weate equ $20 Koad eqe $21 wedtop eqs $22 wedsem equ $23 Fizst_Hondle gequ $00811600 Pushlong £0 _retaives Furiiong ma totale Joe RAY totale Jdy Aa Tocales? te Panam dey Retire len blocks KO £ Rl, pour savoir cay Se trouve Je trou en RAN sty BORae2 Purhtong £0 Demande conbien de RAM est Libre Frectien Polltong RM tibce ae say rotate nav ovate — 10m Libre = HAM vtiLieee the RA tibee 24 Pom’s n° 44 ata RAY UeL1is08 Pince pour Ie resuitar Mode video de In Battery RAM ora £$0014 videoto sta >$0020 + Actichage du imatop= 6 & WndBem= 21 Jey cer12-4 dae 0 ata sinen.y any ey bp! Clear sires clear_sizes aumier a 0 ate aumiak_sive ate RUDIah_Sizer? ate Mode Mode 0 aftichage des tallies on octers de ceFizet_Handt dey erricar i atx msaie acy sandler Passe le ler handle Puantong Handle Franefome Je handle en adsosse jer mndlTohde Poll) Adreseest shoren ple Depile Ie fene octet (nul) Joogn Depile Iadrerse Next_Mailion lay £6 Index pour Lire 110 jer Read Maillon te st indexation pour 1a table dex taiiien aed £47000 ders Garde te Type Field (nibbie 4) Passe Le dane te nibble 9 (4221) dere dare dara xe exp 8B bes Indoxe Jde es8 ele asia cae Indexe * cae apecial du Type 0 Memory Manager) qui pevt etce: * 2 . Memory Manager type $Oxxx / Statut Sux ¢ 2 . fosiak : $0001 soo + Fi . False RM $0000 sco 7 sere} ‘bre Read Length tee 0 beg FULL Me exp es0001 oe head Lengce aamiek + can oe Rolex lity 80 Jar Read Maillon emp £80008 be Full Statut des blocs du RaaDisk dey 058 jar Read Maition ale acc RUMDLek Size sca namwian_s: ve ‘ay 2a for Mead Meition pip de maenint_stvee? fee muwDisk_siees2 bea Read Length st Tester si l'on a atteind 1a Linite de 1a Ran situee avant Je bask $62 ruse sey 00 Jer Read aition op onan bee Read Length day 2 Jer Road Maillon op Bares? bee Read tangth beg Tey Next Lit adresse du bloc ca peut etre 1a fin de RAM ? Fin de RAM, alors passe Ady £8 jer Read Maillon ele ade Sir ata sizes, Pip conserve a retenue ddy 44 Jor Road Maliton Read Length Index pour lise 1a longeur Aecupere Ja retenve ss passe ay prochain meillon.. idy £810 jar Read Maillon Tey Next ( APPLE EXPO STAND 118 > VOS APPLE TIC VOS APPLE IIE VOS APPLE II GS. N'EN REVIENDRONT PAS ! IIGS: Extensions mémoire (GS Ram et GS Ram Plus), Alimentation permanente (RamKeeper) Accélérateur 6.25 Mhz (TransWarp GS) Compatibilité MS-DOS avec PC-Transporter, Disque Dur interne 20/40/100 Mo Vulcan Co-processeur mathématique (FastMath) ... TIE: Extensivn mémvire, Alimentation permanente Disque Dur interne 20/40/100 Mo Vulcan Disque dur winchester 3.5" externe 20 Mo Accélérateur 3,6 Mhz (TransWarp) ete ... TIC: Extension mémoire avec ou sans horluge et CP/AM, UniDisk 800K et kit de mise a niveau, TOUT LE MATERIEL APPLE II sur mesure: Apple Il GS, LaserWriter, ImageWriter 1, LES MEILLEURS LOGICIELS pour Apple II a des prix U.S.A dont en exclusivité: AppleWorks GS, HyperStudio, AppleWorks 3.0 BREJOUX.AE 29 A rue Montribloud 69009 LYON & Tel: 78.36.52.69 Fax: 78.25.50.84 wy Pom’s n° 44 tp US,wlog ferree) eaney erazed ef errdeg arzzne Boot un sued +300 p euep 2u0f2 01x OW 91 mnMTxOE OY ‘oor #20320 worsrarp ef ep e2eez or asta eubre op wee eozexo8ze2 § sox op syue3@ cesar ve or evorssy gas" 2uers0n07 Suoryens pearsuor™ 07 prowuena 47 Pronyeng a7zas"auer10007 ouoryend sprapoteer— auerzonp SuoTyene aoxkg SueTyens 017 Buotysng eoxka BuoTueng (07 Buotyang 07 Suoryeng 4 ue eteyorzzeP oo erg era Deyz3s263T2N— 2s" aeersonas Suorysne pegeteor 03 preven: $3 prongeng ass" seersenoy Seoryene sprarotuer™ peore Avoryens yerke Rooryend 07 Beorvenz 09 buoreeng a 20 ofeyor779,P, Far aerse 909 carer seyza Dog oretes er ears"aurza af 02Kg‘eoertr30 Hee BuCTeAOK oepryan Mve er eTag ye0r3000 ones» azecus and 300, ue 72 rave) exaze ‘9 aneedap uo re ama 30h orrtss =r 30n Wne SueTeAON Corr serza suranozsnos + oe er3erza auranozenos + ors" are oxys"aurzg 20 soxkg'x ‘20135 DucTeAOK ere wr oxle 138 @s7 yerouny exeeut vo 200 eedtr oun exnoty errs axon aueysocg "eeerrraa wwe BeoTesen — eortres z7¥ eerrtes ear arr + zeyoe2ta4~ saiow? promvend ereze3 wey vr eezenur ue oyorsz¥ A oe ereses hee eT eed oyerzz9.¥ 40. sseampes op azrou epsed er sump sezenuy opow ve eTwi02 ME ET ewTIY Arag | est verze 4 29 =z epON * ox ue =1 epoH : #20220 ve =9 poy fepuewep epow oT #uNp BDRYOITZY + exeaeen"iny Buren Seeae weuraeow nea ie jomeesBozg-en05 ae arstez verszes wae eavorazeres 97g eaerT aerzg 29 FIC eba04D abeysrzz0.p 2 19 nesedex erazes Beg zea3rnp wedvorg 187 do Pax peee xf eusorzoeTes. shez TT no erryaBye 3° ‘eyose op eagezz aT peasy eae yaweFIEAa Top werazeres + wodks op exer er oyrrsz¥ everr aera ref frre oN reonss it ‘Razea"at one et 000987 ve zeleuey Azouey of 7d 0% oss werpesn ay ssenart nee wt 20 evesiyan wet ef ab yaure eorrtea NOTITE aee norrren vem rq TrTeN Wie e9 wed been tiv Dea 7 de worrren poey 26f er jepecesd eonbsewez set 270/ # ebueys sab xrd an seg SorryeN peoy 280 ez7ess0omy ourmres wortren pew zat 2187 fr L@ vy .US,WOg wvzborg rorsu09 sv0rs0orrddy Bas i 1008 8> ‘ 100.0%.e" 2 © 00.8 2 > > > z z oP na 2 © 2 » ” © ” ” ” ow ” sone EN "MOSS “ANE 1 MOON HOR, TF", HIVE. TTC AOSD ‘ANE. TT', 42 2 RION eean ‘EVE "ENSD"ANT, TT 2P pebeyorz7¥ edeowe 12022700 ,2 2p. MReON MREOKD ‘EVE. TE 2P $4, LEE" meUN EON “EL 2e eve ‘ant *uo0s9.1¥ ©) ‘ezart anit anton HONDO "neve VE ANE Wo0ED, TT 2P a oeerrran AoW 2 28 ARGON RRIONO "OVE "ONE "EROSD“ANT, TT, £5, TFA 2 s2ue8 '£0082.08*, LAO WE op werseerrran .2,sMOM ‘barons ‘ouve 'wnos9 ‘Akt, EF Len i20e%, 2 NRtOH *saNON 2, TF essezp © azz0q ‘3ney se ezzeq eapesp © exeaoere evened © aney ap300 xnwuzou azzeq (66 =258) je mecrne oy ovews ¢ ove ‘ove ‘Ant "én0S9, TF 2P ~_Fayzeq-uoy ,2 2p WRIOH "RONDE "DEVE "ANT "40089. TF has) anor 9 eevin yo Rtn ONS "CONE EVE ANE “2083.07 caer ene oe Haven ‘snyono "ove ‘ouve ‘aut 'un069.17 ‘auasele/arenmrys euarianeg 2 sen N09 neve IVE ANT "COED. TF —————soprot woaeds ,2 HRIORRROND "OVE “DAVE “ANT "40089. TF (rae) seeboyzor rare 2 IRVOH “RRIOND “CVE "VE “ANT “40082, 17 ~Aagesng ep sezTosse22y ,2 IRIOM ‘RONDO eve “ANE “ANT "0082,7F ———{8T0ek ROX/HRE) ETT3RO 4.2 SPRL ARON UN "RENAN "HLIDSD, UT anvae ‘ROD "eve "OUVE ARE "400ED. IT —ararwag ap sawmztorg 2 WRLOH "RRND "OEE AYE “ANT *H0059.1T t ) yergwey auop > #8tCH ‘RON "eve “DEVE ’ANT "40089, TT ———————ebeuey Azoue 2 HREON RON "OEE. TT ene anes, p88 eM pa0n 2 4anretE SHR FE SPSL IS Ss ss esssssssssssses + fos vss) 27 (90 ons) T+ po soerden + t gezerzeze9 ¢ ons ferys re ear03 waa" sa0rz000 aas"eeske seks aweq2000 erpuey reue one a eratrome serzse,t 2 ea ezednooy erroxpe,t 9p 2n0y Of 27 jexpe,T 9p seq 8T 357 quewesoerrp err zerTe 200g 1 ezaertex or ep erpovg rp sney at sees erpery np aneH ersrpow esse en rab gq eanos Beer ve “eryd er eu rab erpuew op zrazed y aeoesc ae azsag ar ‘errenaze eusoreo vr 020739 evan ‘even 1v0rs) a Pens exo cozsst Poe ye008¢ WT Feve ne Eazag wun qt + X erednome red eepwe.e anya pe ane £ ue eBoxeper.7 392 enbrareusKB 03300 exter 3100 © expred avd yo0y ou T3,nD x eaner ore wcezette opr fsuua xa oo Azz vortsen pene worryee us,p 023207 + ezesceseo or eadem er ateozan rouapeny Suemenarnadrow 702 #2 euw0o 3103 0 osueaae se tpan op emaren “zeraer> ae ectfexz oun, deooe7 poe anepave "er pay pew rde pax wer ‘Aa30g por"peoy or02s abe ner 00028 abe Pot ‘ZOTABID Mp o703207 ¢ worerAyp ef op eamez of extiey ez re ore bupaaszetan ast Proves ae ood sccstaneses Mga sé kon Time Libraries Bn: Be 07 ae Syren iowdes 9F 02 60 ae Pesiace 7 dyoten fonction coun ae Pay ja tates, F4 00 00 | aoe Undefined A2 0¢ 20 ' 00 F4 00 parwish size de taille ds RAWDisk ue ae pu rotale ds ¢ Seldte ae 2340:F4 05 00 F4 eS! ie ton dasciee co 07 12 BasUtilinee de Taille de 1a RY isi 2360:F4 00 00 Fa ses F4 00 00 07 68 8p * 24 F400 00 ed iain ; BC 07 48 : : F407 60 : Mandlen nont enregistres dass une Liste chainee. Lo oremier —* BERe OF + aandie est on $811600, to fomeat dee saillon eat te au : snide + $00..03: Adresse dv bloc nenoize ‘ 11 FA 60 * $04.05: attribute 2 aF 24°00 Rea a : 03 24 22 * $0C..0F: Handle precedent (nul pour le premier maillon) 0a OB E2 20 + $10,113: Handle suivant (ou! pour 1e dernier mailice) ‘ Pere oF 20 SF SF SF SF SF Récapitulation RAM.USE ee 2 69 6C 69 4D 65 56 Apres avoir saisi ce code sous moniteur, vous le sauvegarderez par : 2480:20 20 20 20 create Ram.Use, $b9 2490:4¢ 4¢ 4C 40 bsave Ram Use, a$2000,1$c00, 1869 24n0:40 4c 4c 4c 248 @ OF 20 4D 2000:06 00 00 00 00 00 00 00 23 08 00 00 00 OA 04 01 24C0:72 SF SF SF 2010:00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 24D0:20 20 20 20 00 01 00 00 00 00 00 2 00 40 00 20 20 20 20 24E0:20 20 20 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24F0:28 20 20 20 DE 07 00 00 15 52 65 70 61 72 74 69 74 69 OF 2500:20 20 20 20 20 64 65 20 6C 61 20 4D 65 56 1F 00 00 00 Ee 2510363 61 74 £9 2060:03 00 00 6B 4B AB F4 00 00 F4 00 00 Az 02 1D 22 2520:5F SP SP SF 2070:00 00 E1 68 8D 13 08 68 8D 15 08 AE 13 08 AC 15 2930:1B OF SF 58 2080:08 8£ 17 08 88 88 BC 19 08 F4 00 00 F4 00 00 Az 2540:73 20 64 65 2090:02 1B 22 00 00 El 68 8D 1B 08 68 8D 1D 08 AD 13 2551 iF SF 20 20 2080:08 38 ED 1B 08 8D 1F 08 AD 15 08 ED 1D 08 8D 21 2560:18 OE 20 53 20B0:08 F4 00 00 F4 19 00 A2 03 OC 22 00 00 E1 A9 00 2570:6C 6F 69 74 20C0:28 FR FO 0209 14 00 AF 20 00 00 F400 00 Fa RO 25R80:20 20 20 20 20D0:03 AZ OC 20 22 00 00 El EZ 20 A9 26 OF 21 00 00 2590:75 74 69 6c 20E0:AF 20 00 OO 1A 8F 20 OU 00 AY US BF 22 OU UO AY 25A0:6F 6F 6C 73 20F0:15 8F 23 00 00 C2 20 AO 2C 00 A9 00 00 99 DF 07 20 20 20 2100:88 88 10 F9 9c OF 08 9C 11 08 9c B2 07 A2 00 16 6F 69:72 aii 0 El 00 BE B& 07 &C BA 07 AD BA 07 46 AD BE 07 SF SF SF 2120:48 20 C7 03 E2 20 68 8D 9A 03 C2 20 68 8D 9B 03 OF SF SA 2130:2 20 68 C? 20 AD 46 O00 20 97 03 AD RO 07 79 00 75 65 72 2140:F0 4A 4A 4A 4A EB C9 OB 00 90 03 AI OB 00 OA OA 2600:5F SF 20 20 2150:AA DU 4A AD BU U/ FU 2D C¥ U2 OU DU 4U AU U4 UO 261 8 OE 20 53 2160:20 97 03 C9 08 00 DO 1D AO 08 00 20 97 03 18 6D 2620:5F SF SF SF OF 08 08 AO OA 00 20 97 03 28 6D 11 08 2630:20 20 20 20 80 18 AO 00 00 20 97 03 cD 17 08 DO OD 2640:68 6E 63 74 20 97 03 CD 19 08 DO 02 FO 1B AO 08 00 2650:65 2F 53 79 18 7D DF 07 9D DF 07 08 AO OA 00 20 97 2660:20 20 20 20 £1 07 9D £1 07 AO 10 00 20 97 03 AA AO 2670:4C 6F 63 61 97 03 E2 20 8D 9C 03 C2 20 BE 9A 03 AD 2680:5F 5F SF SF 97 03 C9 90 00 DO 0B AO 12 00 20 97 03 2690:18 OF SF 5A 00 FO 03 82 4D FF AD DF 07 18 69 00 60 8D 2620:6F 75 72 20 90 03 EE E1 07 20 D7 01 20 89 03 C9 1B 00 2680:5F SF 20 20 C9 20 00 DO F3 EE B2 07 AD B2 07 C9 03 00 '26C0:18 OE 20 4E 9C R2 07 20 07 O01 80 £0 AR 6B AD B2 07 C9 26D0:5F SF SF SF 29 A9 1D 01 20 AC 03 F4 OF 00 Az OC 18 26£0:20 20 20 20 UU El AD 13 U8 8D CU U7 AD 15 08 BD C2 07 26F0:1C 1¢ 1¢ 1¢ 02 F4 OE 00 A2 OC 18 22 00 00 El AD IF 08 2700:1¢ 1¢ 1¢ 1¢ AD 21 08 8D BE 07 AS OB 00 8D B4 07 1A 03 00 EB 09 1D 00 20 AC 03 AL B4 07 OA OA DF 07 8D CO 07 BD El 07 8D C2 07 20 9F 02 2280:CE B4 07 AD B4 07 30 04 DO DS FO D4 AD 13 08 8D 2740:1D OF SF 5A | 2290:BC 07 AD 15 0@ @D BE 07 A9 1D 11 20 AC 03 AD IF 2750:58 SF SF SF | 22A0:08 8D CO 07 AD 21 08 BD C2 07 20 SF 02 AJ 1D 12 2760:5F SF 20 20 22B0:20 AC 03 AD 1B 08 8D CO 07 AD 1D 08 8D C2 07 20 2770:18 OF 1¢ 1¢ 04 aD aD AD a2 22 00 0B 00 oc 00 Fa 2 aD a2 Fa a2 AF ap 00 48 0B SF SF SE 73 20 20 4c ae 65 SE 20 20 1B SF 18 20 20 739 61 20 73 23 1B 65 SE 18 20 20 79 SF 20 73 1B 74 oF 18 28 20 OF SE 20 1c oF 73 SF 18 SE 20 ic 20 oF B2 co 36 43 aR 6E SE 20 1c 1B ac co SF 52 SF ic oF 65 20 20 SF 20 1c 03 2D FO 48 22 Et 07 00 0B 09 00 a2 68 22 a2 22 54 1c co 07 ra 00 60 00 27 00 0B Fa aD 00 0B 29 24 48 68 2B SF oF 20 OF oF 4c 4c 4c 13 69 ac 20 6D SF 20 65 18 SF 20 69 29 20 65 SE 1B 1¢ 1c 18 SF 20 65 SE 20 1¢ DF 07 7) 00 Fa El 22 EI oc 4a 20 oF 72 20 65 SF 4D oF 29 46 ie 20 56 SF 20 1¢ 07 El 00 48 68 00 FA 1B 20 SF 20 oy oF 20 20 SF SF S 20 20 62 20 6c SF 20 4c SF SE 69 20 20 SF 20 65 Sr 20 69 SF SF 1c 1¢ 20 20 20 SF 20 1c 1 00 ra ra 00 07 00 00 68 07 00 Fe 408 Fa 00 68 60 29 ae 60 53 28 SF oF 20 SF S 52 20 41 75 20 SF 20 OF SF SA 20 sa SE 20 SE 20 SF SA 1¢ 1 4D SF 20 6c oF 20 1¢ BC 08 FO ca 090 Fa 48 00 £1 60 48 00 00 aD oo 00 68 DA 00 4a og 09 60 oF SE 18 65 20 18 1B 18 40 2 63 72 20 OF SF 61 SF 18 6D 20 oF oF 20 20 18 69 SF 18 Ic 1¢ SF 20 SF 1B 16. 07 o7 £1 FE 65 SF OE 4D 2) 63 20 4 SF oF 64 SF 37 20 oF oF 20 61 SE oF SF SF OE 1¢ 1¢ 56 SF 20 oF OF 1¢ aD c2 Do ra Fa 00 00 cD 00 00 co 68 ra 07 Fa SF 78 20 20 20 20 65 61 20 68 SF SF 65 20 20 a1 20 6c oF 20 20 SF Se SF 20 1c 1c 1¢ 20 20 72 SF SF 1¢ SF 12 20 Za 20 20 SF aa SF SF 20 ic 1¢ 75 oF 20 65 SF Ic Pom’s n° 44 2780:1C 2790:1C 27A0:75 2780:20 270: 61 27D0:4¢ 2760:4¢ 27F0:4C 2800:00 2810:00 2820:00 2830:04 2840:36 2850:15 2860:F5 2870:00 2280:00 2890:08 28A0:02 2830:C0 2800: B2 28D0:F5 28E0:00 28F0:00 2900:07 2960:01 2970:03 2980:02 2990:83 2920:97 2980:F5 29€0:00 2900:01 2980:07 29F0:02 2A00:F3 2a10:¢2 2A20:F5 2A30:00 2A40:02 2A50:07 2A60:02 2A70:3C 2A80:13 2A90:F5 2AA0:00 2ARO:02 2Ac0:02 2AD0:02 2AE0:78 2AFO:AC 2B00:F5 2B10:00 2B20:02 2B30:02 2B40:02 2850:B7 2B60:C4 280, 2BB0:02 pre 2BD0:D6 2BEO:FS 2BF0:00 1¢ 1c 69 20 63 4c 4c 4c 00 oo 01 12 ac FS 90 1c 1c 74 41 65 4c 4c 18 oo 25 1A 15 FS FS 02 07 02 53 co F5 oo 02 03 oz 08 c2 Fs 00 03 07 02 54 00 00 1c 1c 66 20 4c OE 00 v1 oz 03 27 FS oo OL 07 02 oc BE Fs 00 02 07 oF FS 00 02 07 1c 1c 65 66 oF 4c 4c 00 00 00 45 £8 FS 00 00 02 cE 37 FS 00 o1 or 02 DI ac FS oo oz 07 02 30 2 FS oo 02 08 02 6c co FS 00 oz oe 02 a0 co F5 00 02 07 02 38 co FS FO 03 00 1c 1c 69 1B 4c 00 oo 02 Fe Bc F5 so oz 07 oo 1c ic 63 SF 4c 00 07 07 03 1¢ 1¢ 20 ow 18 4c 37 YS 02 C7 c2 00 03 07 02 67 D6 00 1c oF 65 61 OE ac ac 00 43 Fo 00 00 08 02 SE 15 FD 00 00 07 53 97 5 90 5 01 oz 5c DF F5 00 or oz 18 FS 00 07 02 5D 2 FS 00 02 07 02 93 c2 FS FO 0? 07 o2 oc co 5 00 03 07 02 00 Ic 1B 73 o7 20 4c 4c 00 00 oF 04 30 13 FS 00 00 oz 59 11 FS 00 00 03 oz 28 97 PS oo 01 07 oz 9A FS vu 01 07 o2 15 FS 07 07 Ba ca FS 00 03 0? 58 D6 FS 00 00 1c SF 00 03 4 FS 02 02 07 Fg cD FS oo 03 07 02 00 4c 16 13 ic oF FS 1 03 02 7 37 FS 00 on 03 02 De 13 00 02 07 02 33 oF F5 00 o2 07 02 or 1D FS 00 02 07 02 ac ca FS 02 07 02 BE FS 00 03 00 02 42 1D FS 00 oo 07 02 D2 BB 00 00 or 08 02 09 21 F5 00 oz 02 02 4B ac 00 02 08 02 87 BE F5 00 02 07 02 ES FS 00 03 07 02 7D Be 00 1E BS 00 00 08 0? 67 Eg FS 00 07 02 F7 a7 FS 00 01 03 02 6A Et 00 o1 oy ce B2 F5 02 08 92 EL F5 02 2 FS a0 02 07 02 3B c2 FS oo 03 07 oo Ic 02 19 F5 00 00 o3 02 ce FS 09 07 02 Fo IF Fs 00 02 o7 48 00 03 07 02 cy Dé 00 FS Une commande externe: — | Iss§ G. Perreault L’objet de la présente commande est de simplifier l'usage des préfixes ProDOS sous Basic.System. Le probléme est le suivant : Le programme Basic sur le disque dur se situe dans le dossier /Ddur20M/En.Cours/Compta/Version.2, dossier qui contient le sous-catalogue Donnees. Pour travailler dans ce dernier dossier, il suffit de taper Prefix donnees, mais pour revenir au niveau précédent, il faudra taper Prefix /Ddur20M/En.Cours/ComptalVersion.2... Les stakhanovistes du clavier apprécient, les autres, dont je fais partie, taperont simplement shortp. Moins imprcssionnant mais plus élégant... En pratique Vous rendrez cette commande externe ProDOS disponible en tapant au Clavier sous Bz - shortp ou brun shortp Vous pourrez également I’activer depuis un programme Basic par : 10 print chr$(4) "- shortp Dés lors pour raccourcir un préfixe, tapez au clavier : shortp , ou dans un programme Basic : 705 print chr$(4) "shortp Pour contréler I’effet de la commande, demandez a Basic.System le préfixe courant en tapant : prefix Source Shortp.src Assembleur ORCA/M err on 65816 off 65002 off absadds on keep shortp org $2000 main START + EQUATES: Pom’s n° 44 rdecode Jength gequ $2F Jongueur de 1*instruction pel gequ $3A adresse de la ligne désassenblée al gem $3¢ adresse de départ pour move 22 gequ $35 adresse de fin "ot a4 gequ $42 adresse d'errivée * * age gequ $Fc pointeur tenporaire ptr gequ $FE v > + sous-programmes moniteur et adresses systéme: wutdo — gequ $0B5C insdsp2 gequ sreec désassembie 1a ligne (pcl) move gequ S$FE2C conme son nom 1"indique 2 Panos et RASTC. SYSTEM: pe = mit gequ $aF00 point dentsée de Propos extrnemd gequ $BE6 saut vers commande externe errout gequ $BE09 affiche erreur et fin badcall gequ $BE8B convertit erreur MLI en BASIC.S getbufr gequ SREFS réserve (A) pages sous BASIC SYS. xtrnaddr gequ $8550 adresse commande externe xlen —.gequ S$BESZ Jongueur de 12 commande xcnum —gequ $BE53 n® de 1a commande pbits gequ $BES4 paramétres autorisés vpath1 gequ S$BE6C vecteur vers la commande entrée xreturn gequ $BE9E un RIS qui gagne 4 etre conny nomi opencnt gequ $BE4D nonbre fichiers ouverts Jong gequ fin-debut+$100 longueur du programme 4 reloger ; relogeur - —— annaannennes rsuivant 7 Relogeur nonteusement copié sur celui de Sylvie GALLET, qui 7 a elle-meme copié celui de POM's n° 26 + initialisation ; 4 intt Ida mit comp #$4C est-ce un JNP ? beq init1 out Idy nonactif non -> affiche message et fin nabel Ida nonactif,y jax outdo dey bne nabel rfin rts test init! Ida openent y act-il des fichiers ouverts 7 beq init2 non dda #915 oul -> impossible placer la comma nde message FILE(S) STLLL OPEN imp errout fi inft? Ida extrnemd+2 sauve adresse de 1a premiére sta preemd+2 commande oxterne out Ida extzncmdtt sta precmd+1 non Ida #>long demande d'un buffer de (A) pages Jer getbufr calcul emp #S0C erreur ? bne gothen non jmp errout oul -> affiche ‘NO BUPFERS AVAILA BLE" et tin gothen sta adresse n® de la I-ére page accordée par sta adel Prop0s ata extenemd+2 dda #odebut sta al+l Ida #<fin-1 sta a2 ; Ida #>fin-1 sta zit lay #0 sty a¢ Jes adresses depart et arrivée sty al sont alignées -> poids faible = 0 sty extrnemd+1 none jer move déplace le progranme jax reloge adresse rts retoge ida adresse adresse de relogement sta pel+l e ; Ida 40 . ata pel : Idx #0 névessalze pour tnsdsp2 Ida (pel, x) beq rfin si 00 séparant progrmm et données Ssr insdsp2 dy length ¥ = Longueur instruction = 1 epy #2 inotruction sur 3 octets ? bne rsulvant non > pas de changement Ida (pcl),y ous emp #omli est-ce un appel au MLI ? bne nomlt non doy pevt-erre... ida (pel), emp #<mii bne nomli non dey Ida (peli.y emp #820 est-co un jer ? baw nomi non ida pel oui -> avance pel de 3 octets et ele traite les 3 octets suivant jsr $ BFOO ade #3 comme une instruction 4 reloger (1'adresse du buffer n'a pas beso in d'etre relogée) sta pel bee nomli ine pel+! Ida pel passage de paramétres pour catcn! ste ade dda peut sta adrel ddy length jar calevl Ida length on passe & inotruction suivante: sec avec pel = pel + length ade pel sta pol Ida pele? ade 40 ste pelel sec distance (pel) - adresse stockée sbe adresse dans A (MSB) et X (LSB) ddx pet gsr test distance >= long du programme ? bea rfin oul => on a fink Jmp rdecode non rts cmp #fin-debst A < nbre de pages du progranme ? bee out ous bne nen non et A> nhre de pages -> en de hore du programme px #<rin-debut on est dany 1a dexniere page: X < poids faible ae tin bes non non -> en dehors du programme cle dans les limites ets sec rts dey Ida (adr),y partie basse de 1'opérande tax tay Ida (adr),y partie haute de I *upézande sec she #>debut écart (en pages) entre adresse et début bee none écart <0 -> opérande en dehars d es adresses 4 modifi jsr test écart >= 0 -> écart > longueur du programme ? bes none non ade adresse out -> on reloge sta (adr),y cle rts sec rs dst adresse début du programme rologé ds SPF-(adzesse-init) debut sera égale 3 $2100 30 Pom’s n° 44 7 programme 4 reloger debut ida vpath? sta ptr da vpathi+1 sta ptr+] ddy #1 compare Ida (ptr),y comp conmande-1,y bne nocad iny copy #7 bee compare ida (ptri.y emp #900 beq emdok sr 3DAFB ida #$10 imp errout andak — dey dey sty xlen Jaa #0 sta xcnum sta pbits sta pbits-1 dda xsuite daa versuite+! sta xtrnaddr Ida versuite+2 eta xtrnaddr/I cle rts precmd jmp xreturn 7 Lecture du préfixe: xsnt Ida boffer dda xsuite+t sta table+i Tda xenite+? eta table? Jsc mit dc £2°3u7- dc i2*tabie* hee ok errcur jor badeall Jmp errout ok Idy buffer beg end boucle dey da butter, cmp #1/* bne boucle sty buffer jar ali de 11°$c6" de iz*tabie* bee end mp erreur ond rts rien dol 7 Table de paramétres et message. vpathI pointe sur la commande entrée analyse de 1a commande tapée pas “shortp™ Jongueur “shortp" + 1 envoie un retour chariot code de "SYNTAX ERROR* n° conmande externe aucun paramétre autorisé utile au relogeur seulement adresse de retour de ProD0S aprés examen des paramétres retour 4 ProoDs pour analyse des paramétres suivant éventuellement 1a command @ tapée utile si notre cde est Ia seule ou Ja deride your siynaler Ler reur saut 4 la commande externe précédente utile pour le relogeur (permet de reloger I'adresse buffer utilisé pour lize préfixe) GuTEREE IX table des paramétres utilisés pou © GETPREFIX affichage de I'erreur Jongueur du préfixe actuel si longueur = 0 inutile de raccou reir le préfixe Je derailer caractére est */* donc inutile de le relire Jongueur du nouveau préfixe SETPREFIX Ja meme table que pour GETPREFIX en principe “PATH NOT FOUND" Je relogeur 1*apprécie table de £2"1" de 42‘buffer* buffer ds 64 commande de c'SHORTP* nonactif de 11'25,13,13,7' 1 soul paramétre zone de stockaye du prélixe de et## PITCA NON SODORP +4! fin anop END Récapitulation Shortp Apres avoir saisi ces codes sous moniteur, vous les sauvegarderez par : bsave shortp, A$2000,L$1E8 2000:AD 00 BF C9 4c FO OD AC 2008:CE 21 B9 CE 21 20 5c DB 2010:88 DO F7 60 AD 4D BE FO 2018:05 A9 15 4¢ 09 BE AD 08 8D 4A 21 AD 07 BE 8D 21 A9 01 20 F5 BE C9 DO 03 4C 09 BE 6D E2 85 43 8D 08 BE A9 21 3D A9 B7 85 3B AD 21 SF AQ 00 84 42 84 3C 07 BE 20 2C FE 20 5A 60 AD E2 20 @5 3B Ag 85 3A A2 00 Al 3A FO 20 8C F8 Ad 2F CO 02 2C #1 3A C9 BF DU 19 BI 3A C9 00 DO 12 88 2080:31 3A C9 20 DO OB AS 3A 2088:18 69 03 85 3A 90 02 EE 2090:38 AS 3A 85 FC AS 3B 85 2098:FD A4 2F 20 C& 20 AS 2k 20A0:38 65 3A 85 3A A5 3B 69 20A8:00 85 3B 38 ED E2 20 A6 20B0:3A 20 BA 20 BO 03 4C 63 20B8:20 60 C9 00 90 06 DO 06 20C0:£0 £8 BO 02 18 60 38 6D 20C8@:88 Bl FC AA C8 Bl FC 38 20D0:E9 21 90 0c 20 BA 20 BO 20D8:07 6D E2 20 91 FC 18 60 20R0:38 60 00 00 00 00 00 00 20£8:00 90 00 00 00 00 00 00 20F0:00 00 00 00 00 00 00 00 20F8:00 90 00 00 00 00 00 00 2100:AD 6C BE 85 FE AD 6D BE 2108:85 FF AO 01 Bl FE D9 C7 2110:21 DO 34 ca co 07 90 F4 2118:B1 FE C9 OD FO 08 20 FB 2120:DA A9 10 4C 09 BE 88 88 2128:8C 52 BE A9 00 8D 53 BE 2130:8D 54 BE 8D 55 BE AD 4B 2138:21 AD 37 21 8D 50 BE AD 2140:38 21 aD 51 BE 18 60 38 2140:4C 2E BE AD 88 21 AD 4c 2150:21 8D 86 21 AD 4D 21 aD 2158:87 21 20 00 BF C7 85 21 2160:90 06 20 8B BE 4C 09 BE 2168:AC 88 21 FO 16 88 BS 88 2170:21 C9 2F DO F@ 8C 88 21 2178:20 00 BF C6 85 21 90 03 2180:4C 62 21 60 00 01 88 21 2188:00 00 00 00 00 00 00 00 2190:00 00 00 00 00 00 00 00 2198:00 00 00 00 00 00 00 00 21A0:00 00 00 00 00 00 00 00 21A8:00 00 00 90 00 00 90 00 21B0:00 09 00 00 00 00 00 00 21B8:00 00 00 00 00 00 00 90 21C0:00 00 00 00 00 00 00 00 2108:53 48 4F 52 54 50 19 OD 21D0:0D 07 24 2A 20 46 49 54 21D8:43 41 20 4E 4F 4E 20 53 21E0:4F 44 4F 52 50 20 2a 2a Pom’s n° 44 31 Voici quelques considérations sur la mise 4 jour des fenétres des programmes typiquement GS et une routine bien utile a Vécriture des applications. A titre de démonstration, une application GS figure sur la disquette qui accompagne optionnellement ce numéro : elle vous permettra de lire les sources et fichiers de type TEXT. Programmant depuis quelques temps sur Apple ITGS, je me suis heurté sur le fait de faire défiler du texte rapidement dans une fenétre graphique. Beaucoup de programmes d’amateurs sont désespérement lents, et je pensais cet état de chose normal, jusqu’au jour oi j'ai vu ce que pouvaient faire les professionnels... Je me suis donc penché sur le probléme et aprés avoir décortiqué le déroulement des mises 4 jour, j’ai écrit cette routine qui pourra rendre service a un certain nombre de lecteurs programmeurs, oii leur donner des idées pour faire mieux. Défilement rapide de texte dans une fenétre La mise a jour d'une fenétre (Update Event) survient dans plusieurs cas : * clic dans une barre de défilement horizontal ou vertical ; * changement de la taille d'une fenéure (avec une exception) ; « — fermeture d’une fenétre sur la fenétre 4 mettre jour (par exemple, fermeture d'un accessoire de bureau). Une procédure de Quickdraw nous permet de connaitre la taille du rectangle 4 mettre a jour, c’est Get PortRect. Dans notre procédure, il faut donc : 1 Sauvegarder les valeurs du rectangle telles qu’ elles nous avaient été retournés par Get Pox tRect la mise & jour précédente ; 2 Récupérer les nouvelles valeurs de Get PortRect ; Faire une analyse des changements intervenus ; 4 Redessiner uniquement ce qui a pu étre effacé. w “(EGS & FENEIRES : Scrolling Patrick Desnoues La fenétre n’est pas active |) b fenétre q | active 1 ——- Tl faut la redessiner de al acl. La fenétre est active ‘» Si la taille de la fenétre n’a pas changé X Cestun clic sur circ di=d al>a bi=b - Le texte monte ; - Ie Window manager déroule vers le haut ce qui est a V'intérieur. - al 2c: redessiner tout l’écran de al acl ; - al<c:redessinerdecacl. Pom’s n° 44 X Cest un cli al<a bil=b el <e di=d - Le texte descend ; - le Window manager déroule vers le bas ce qui est a lintérieur. al Liga aN} b d L > - cl <a:redessiner tout I’écran de al acl ; - ¢l2a:redessiner deal aa. X Cestun clic sur¢ ou > alma bi=b el=c di= i ¢d ' ‘ Fléche > : - soit redessiner de a/b1 4 b/cl (le plus rapide) ; - Soit redessiner de a ac (le plus simple). al cy el Fléche « : - — soit redessiner de a1/d 4 d1/cl (le plus rapide) ; - suit redessiner de aac (le plus simple). » La fenétre a changé de taille X lercas al=a [ b1=» el<e di<d e Soi ‘AOL Gee ago cs UNE FENETRE AVEC DE’ (ASCENSEURS SANS Ne a . gs ‘EST sh RIDICULE b q [ee | Le rétrécissement complet de la fenétre est le seul cas qui n’entraine pas de mise & jour. Ce qui est contenu dans la Plus petite fenétre tenait forcément dans la grande et n’a pas pu étre effacé. X 2éme cas [ a=. bi=b e1>de di¢d Tl faut redessiner de c acl. X 3éme cas al=a bi=b el <e diod Pom’s n° 44 33 - Redessiner de al/dacl/dl ; - ou, plus simple, de al/b1 a cl/d1. X deme cas ala bi=b cl rc diod La fenétre a été agrandie. Il faut : - soit redessiner de al/d a c/dl et de b/c &c1/dl ; - soit, plus simple, de al/bl cl/dl. C’est tout... a = AncienHaut al = NouveauHaut b = AncienGauche bl = NouveauGauche c = AncienBas cl = NouveauBas d = AncienDroit dl = NouveauDroit On peut encore optimiser la vitesse en calculant uniquement les mises a jour des scrolling horizontaux (comme cela est défini ci-dessus, mais non traité), mais pour l’affichage d’un texte standard, le jeu ne vaut guére le coat. Une application Sur le disque Pom’s, vous trouverez l’application 16 bits ‘Turbo.Scroll’ & titre de démonstration. Le programme a été écrit sous APW. II permet de charger a partir d’un disque ProDOS des fichiers de type Text (TS04) ou Sources (T$B0). Aprés la wansformation des minuscules accentuécs adaptéc & la langue frangaise, le texte apparait dans une fenétre graphique avec une vitesse de défilement Programmation défiant pratiquement toute concurrence... Les fichiers sur disque : TiS Oe Ep ge Odea ou 1c ZETO 5 - — eréer une fenéue avec des barres de défilement ; Data données et stag de ace Ges : - dans les paramétres de la fenétre indiquer ‘dc MainPoms initialisation, boucle principale ferme- i4’ Procedure’ dans le paramétre concemé ; ture ct Quit i. : - stocker le numéro de la fenétre retourné par New Scrolli

Showing the first 100000 of 268213 characters.

mp.ls