2IMGCdrP@@@ )4   "D}, M ) TiTWiWg2 Ԣ` H i`iK ԩ`GៀL` HK!HKH@L,0 )i/ XA)Lb +)D\]g_ ?/"p@͸  ɜUUɛ`ff  ܪ330 ˩ʙppʙppp˩pwp̺ppwwwwp&Xb0qqwqqwqwqwwqwqwwwwwwwqwqqwqwwwqwwqwqwwqwqqwwwwwqwwqqqqqqqqqqqwqqqqqqqqqwqqqqqqqwqqwqwwqwqwqwwqwqwwwwwqqwqqwwqqwwwqwqwqqwwqqqqqqqqqwqqqqqqqqqwqqqqqqqqqqwwwwqwwqwwwqwwqqwwwwqwqwqqqwqqwwwqwqwwqqqGSINF93 j' @LES.PLUSj ARTICLES>m3 ,GSCLUB.9.640As- EXEMPLES!$PROGRAMMES3'EPSILONAI; 'BREJOUX AY5 5 ICONS[9!+DISQUE.DUR4)N`'GSINFOSIE' 8TEST.QUICKIE! +DISQUE.DUR1~%G `+DISQUE.DUR2)?@ABCDEFGHIJKLMNOPQRSTUV R ,@ K" H"{iii[",""S%)MIO""" :" " :""n:"." QR"g"x"HH%"hiXhi%)OOM " ""g i=j>"<"x % )q R HH%"hH &") .:""""")9999.9 FPS Polygonia I(C) 1989 Jason HarperTAB: next object ESC: exit  Zk& [t[i+k*өkJ"kfuhuk ;]88)[:d&d.+ik*.HH "hhhumd d &.+".+".+.+ڥJikju ) kumui.+L֦Lmd$nJ2.+$ ^#<ޖm6mmm]W^#VޖmP H24@dd:m&m/ 2݊o~qrsrsL_m  d$E)L>ԥm ) #0%%emuju) kuiL>ԥ%e!muju) kuiL>Ԥ)fufuL>Ԣ轖m0hu4ȹm0~qيo~q݊ors܊rs oيoڻZ$ej(za~qيorsrsFZ _ذBZ _Z80d hh6hrs/hhz6'ɜ h6zhrshzz6zdLz6يo~qrsrsZ _Z860dhhrshhɜ h6hrshz6L humd .+% nJ}>RnJ}޽.+.+d.+) .+.+.+.+ .+ڥLӤkjuXx.) ᫫*[ "J [ "ju[ "ju [ "J +X*I*ӭ]+k 42LLZ^# z.+,e$j(nJ0ڥ.+ݎ*nJ. Z.+^#,nJ0$*2. ؘ80d hhrsLhhLɜYhzLe$j(nJe2jH.+^#,nJ0.+ݎ*nJ. ؘ80d hzrsLhzLɜhhrsLԢ.+ݎ*nJ.^#.+8`,nJ0(* ,0`.`.e0j.*e,jE((,0*.`;8" [ۧ%%%% ۧ)L#"iiLا%Lۭfu huhurs~qaco%)iȷ%)k ۧ% eeȷ%0k eeZ8 w"hu}aa}cc݊oo~q~qzʎhu ۧ% L#ٮhuc0a֧% ee ۧ%  L#م ee hu dhud   8:+B$2Ͳ ^#^#LڼLڽ.+Ȯfufu:B۝2 ^#   .+8" 8"ۮfuJw+I 8"Ifu jw8" 8"ۮfu>RJwnJ+I 8"Ifu>R jwnJL+$(#';i&ke%%'`>ܩ  m>>܊ޢ@ܜBHHHHBH@H " "hz蘟@iH@ܭBiBk;8 [.*+;ik;8 [ eȷee ȷe ,eȷe +;ik;8 [ȷۥ"ۗȭۗȷۥ "ۗȭۗ ȷۥ " ۗȭۗiix+;ik;8 [ ȷ ۥ "HH ȷ ۥ"8hۅhۅ ȷ ۥ"HH ȷ ۥ " hmۗ hmۗ  ȥ  i i R+;ik;8 [ ȷ ۥ "HH ȷ ۥ"hmۅhmۅ ȷ ۥ "HH ȷ ۥ" 8hۗ hۗ ȥ  i i R+;ik;8 [ ȷ ۥ "HH ȷ ۥ"8hۅhۅ ȷ ۥ"HH ȷ ۥ "hmۗ hmۗ ȥ  i i R+;ik;8  [ nȥ b ȥ b ȥ+  ;ik i  ȷ  ȷ ۥ"mۅmۅ ȷ ۥ"mۅmۅ ȷ ۥ"mۅmۅ`ۜۜێۍ k MۍۛIIȌۭII莶ۭ)C ۿۭ۪᭹۪ mۍۭiۭ)m ۪ᘪ᭻۪᭹۪ mۍۭiiۭiېۭ)a ۪XY☪ab⭻۪N⭹۪ mۍۭiiۭiۭ)F ۪☪⭹۪ mۍiۭiۭ%IiۭIiۭIik۪ۜۜkۭ MۍۊI۬IIȌۭ)U ۪ۿۘۿۭ۪z{㭵۪ mۍۭiۭ)m ۪㘪㭷۪㭵۪ mۍۭiiۭiېۭ%IiۭIiۭIikۜۛkMۍۘIIۘ)/ ۪ۿۭ۪ۿ )mۍۘ)4 ۪䭸۪ mۍiۭIiۭIik;8 [  i@   +  ;ik )  )` ) 80- Hhi e`I Hhi 8`۠ jH8.hJkiiHi"DHHHHH""PHHHHH""HHHHH""!@`":5i歼i歼HHHHHH"Pd@""k朼 ""kiii2"DHHHHH""PHHHHH""HHHHH""!":5iiHHHHHH"Pd@""k"kiii2E "DHHHHH"E "PHHHHH"E "HHHHH"E "!Px@E ":5iiHHHHHHE "Pd@E "7"ku "kiii2<"DHHHHH"<"PHHHHH"<"HHHHH"<"!h<":5iiHHHHHH<"Pd@<" "kl"kiii2G"DHHHHH"G"PHHHHH"G"HHHHH"G"!`G":5iiHHHHHHG"Pd@G""kw"kiHHHHH"hhhh !"D  " ::0Uj쮷XX获:: 0j݋ iO iɠ8 80}읋 8ͽH !"D 8< !"  uHsH"hk_&)''()jjjjjP<(HHHH N"hhhh:!"kHHHH !"!HHHH !"@` !"Pd@ !"` *19,=ASLMRO  ..QRgxO O M'g+1i4=7j:>=<AxEcQUY]a eimquy} .ӊ;ӌT*ZJkӎrfuuhu{].+ӮiӢk*huӖmӎ.+.+.+.+ԮiԢkjuku#mu-.+<CmHMnJR.+W\Ԏe^#kԖmpԖmvԖm|Ԗm^#ԖmԖmԖmԊo~qrsrs_Ԗm>mujuku!>1mu7juAkuK>TfuWfuZ>gՖmohuvՖm}~qՊo~qՊorsrsՊoՊo~qՊorsrs__rsrs!֊o&~q,rs2rs:_Nrsbrsuhu֖m.+ nJ>RnJ־.+.+.+.+.+.+.+.+ju*׊J%׌,ju2׊9ju?׌FJO*U*X]jms^#~.+nJ.+׎nJא.+^#nJאrsnJ .+^#nJ".+%؎*/nJ4ؐFrsINZrs]d.+i؎nsnJz^#.+nJزب#!(ٓ+fu0hu5hu8rs;~q>aAcGيoRٮi[٢ka٨huټaaپccيoيo~q~qhu٨٨#hucaڨ#ڨ&#ChuPhunڎs:zڞB2ڲ^#^#ڎڎ.+fufu:ڞBڲ2ڎ^# ڎ.+ڎڪfu۾ ۪ 'fu*۾7M۪QTfuW>RanJs۪w~fu>RnJ>>>@BB@ '@-@0B6Bܴܾܶݴݶ#ݾ*4ݴ;ݶBIݾPݴݶݾݴݶݾݴݶݾݴݶ ޾d޴k޶rvz޾޴޶޾޴޶޾޴޶޾5ߴ<߶CGK߾Tߴ[߶bh߾nxߴ߶߾ߴ߶߾n(b?b "%.5;>JNQUX\`cgjnsz} XY a#'b*.2N59>EHKQU[^dgquy|  #-158<AEHLOSWzZ^{aejqtw} #-03EQUY\`cgknx{!9APZ`DP&*.14!JMPTY`fiorvz~  D #P+/369AEILO!ehkot{ E E D#'+E .E 1P9=AE DE GOSWE ZE ]!sE vE y}E E E E 77u u   #<&<)D159<<<?PGKO<R<U]ae<h<k!<<<<<<  ll$(.1G4G7D?CGGJGMPUY]G`GckosGvGy!GGGGGG  ww"(/38<@DG !J !MDQT W Z^lorXw|X ! !D#<N !Q !TX`udshw_&{)''():!:! ! !!  ! !2 !5 !8N !Q !T ,@ DIRECT Q*A ,@ LONGDATA P&dddddddddddd33DDffwwC:/!""""""33 DDDDDDUU  ff ffff  ww        UoQo2ooo+Q}+wQoo}Q2EEE ""  33  DD  UU ff  ww       "  3     2 22 2 2222d 22 2 2 2222d 2 2 2 22222d <DDDUUDDUUDD   UU DD  UU  " ""33""33       f ff!ww ! ff !ww!%$"#%% $%$ "$#"#%#% )( (& &' ') *+-,*)'&()*+*.+-+.-,-.,*,.*     w2222222(2(22( 22(( F<FdFdF<F2 F2dPdP P P <dd<2 2dd  <FKZF2FKZFFPd<dFPKFZ#F#2FPFPKFZ#F#ZZZZZ-Z-Z#Z#FFFFF-F-F#F#22  d dd d d d Z ZZ ZZ Z G3333 "" "" 3"3"  ffww   3333 "" ""3"3" ff!ww!!!ww1,-./01AD<7A1ww43254B8;CB4-,52-34103ff,145,ff.23/.wf-2.-wf/30/ww'&%$#"'SINVS'ww*+()*TUMJT*#(+"#)&'*)ff"+*'"ff$%)($wf$(#$wf&)%&DD67<=>?6DD@GFEDA@DD89:;8DDBC:9BUU6@UU7A7UU98B9UU=<DE=UU;:C;DDHQPONIHDDR  SVWXYRDDJMLKJDDTKLUTUU RHUUIS IUUJKTJUUOWVNOUULMULbc[Zb_^fg_\d>=\EFe]EiaOPiXW`hXcd\[cibZai]ef^]h`_ghjkcbjlmgfldk?>dFGleFjiPQjYXhmYckdcijbielfegmhgZ[\=E]^_`WOaZ~~ZpvutnkjpmloqmknolG@6?kpjQHRYmqpprntsvpqrpqnronorqoswvswtuwstwsvwuv""~yx~"zy{z3|{33}|"3~x}xyz{|}x { p`  " ZZdd` t t`jF F F !              ((((( (( ( 22222 22 2 <<<<< << < FFFFF FF F Z! !""  ""  """" 3  333 33   333333 [" !DD  DD  DDDD U  UUU UU   UUUUUU \# !ff  ff  ffff w  www ww   wwwwww ]$ !    ݙ  ݙݙݙ     ^% !    ݻ  ݻݻݻ     7;E    <G   !_&Z!c& !)'["-' !'\#' !(]$( !)^%) !XY8L xC)pJJJJ IH(ȱH:=IH[H`@H^H 2 9 @   I/H`JLNGȄBȄF aK ' faaFF  RJm# KKJ qJ )J ۈJJm  JFȱJGJKaȄM ' 5aaNNJFLGJ`a  XL LG &PRODOS`DaElH$?EGvѶK+`L XX LU ŠϠĠӥS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o Rh8R8L xC)pJJJJ IH(ȱH:=IH[H`@H^H 2 9 @   I/H`JLNGȄBȄF aK ' faaFF  RJm# KKJ qJ )J CUSTOM.GS.OSvj' 'START.GS.OS.2[1g:g:Z*CUSTOMGSOSu<!tlw Z-START.GS.OS.2<16 6 ZSTART.GS.OS.4V2~:~:ZSTART.GS.OS.3p1~0~0Z/ABOUT.CUSTOM.GS0 0 ZSTART.GS.OS.5Z`~~ZSTART.GS.OS.6pZ`~~Z\]^_`abcdefghijklmnArt.Polygonia: Traduit de l'amricain par Y.Gobin. Documentation originale dans le sous-dossier POLYGONIA du dossier PROGRAMMES. POLYGONIA (NDLR: Un programme de dmonstration sur l'usage du FillMode, mode graphique de coloriage trs rapide d'un polygone, spcifique l'Apple IIGS. Le jeu Tunnels of Armageddon de California Dreams en fait largement usage.) Copyright 1989 Jason Harper Il est possible de distribuer ce programme tant que celui-ci est accompagn de sa documentation. POLYGONIA I ----------- C'est le premier programme d'une srie destine explorer l'utilisation des graphismes en FillMode, unique sur l'Apple IIgs pour l'animation d'objets en 3 dimensions en temps rel. La version actuelle des algorithmes ne supporte que des objets qui tiennent entirement sur l'cran et dont la taille ne diminue pas avec la distance: des versions futures permettront des vues en perspective, des limites tronques et fonctionneront plus vite. LE MATERIEL: ------------ Un IIgs avec 512 k de mmoire. Aucun systme particulier. Cela ne fonctionnera pas bien avec un moniteur reli un VOC ( Video Overlay Card). Cela provient de ce que je considre comme une imperfection majeure du VOC. Si vous avez install un VOC et qu'il ne vous est pas facile de connecter votre moniteur la sortie vido du IIgs plutt qu' celle du VOC, il vous est possible d'obtenir de bons rsultats en mettant un cable RCA-RCA normal entre la sortie vido composite du IIgs et l'entre vido du VOC. (tout cela pour une bonne synchronisation). USAGE: ------ Polygonia I est principalement un programme que l'on regarde. Il n'y a que trois touches qui ont un effet lorsqu'il est en cours. ESC: sort du programme retournant au slecteur employ. TAB: fait passer l'objet 3D suivant ( parmi les six). Aprs le dernier, il permet de revenir au premier. CapsLock (blocage majuscules): limine le mode de FillMode de telle sorte que vous ne voyez que ce que le programme dessine ( en fait, juste le ct gauche de chaque zone de couleur) et non l'objet en lui-mme. C'est la possibilit d'afficher (sur toute la largeur de l'cran) une range continue de pixels de la mme couleur en ne dessinant que le pixel de gauche qui permet cette sorte d'animation sur le IIgs. En enfonant une nouvelle fois la touche Capslock, on revient au mode avec FillMode . Toutes les 10 secondes, la vitesse moyenne de l'animation est calcule et affiche dans le coin en bas gauche (en image par seconde). La vitesse maximale est de 60 im/s, vitesse laquelle l'cran est rafraichi. Il ne fait aucun doute que Polygonia peut atteindre cela sauf pour des objets trop petits. Il est peut-tre possible d'enregistrer de tels objets et de les ressortir en animation cette vitesse mais il n'y aura plus de contrles. LES OBJETS: ---------- Objet nb de verticales nb de polygones Moy. de cts par polygone ------ --------------- --------------- ---------------------------- Cube 8 6 4 Ttradre 10 16 3 Dodcadre 20 15 4.67 Les algorithmes ne peuvent pas rellement tenir compte d'une zone d'paisseur de zro cre par un trou dans l'objet, aussi faut-il s'attendre une image incorrecte. axes XYZ 47 42 4.14 Vaisseau spacial 132 94 4.77 Tours de Hanoi: Base 23 17 3.29 chaque disque 16 12 4 Total 103 77 3.84 (Pour ceux qui ne connaissent pas les Tours de Hanoi, en voici les rgles: il y a une base avec trois piquets et un nombre arbitraire de disques percs de diffrentes tailles. Tous les disques sont au dpart sur le piquet de gauche en ordre dcroissant. Il s'agit de les faire tous passer sur la tour de droite et dans le mme ordre en se servant de la tour du milieu. On ne peut maneouvrer qu'un seul disque la fois et un disque ne peut pas se mettre sur un plus petit). LE FONCTIONNEMENT ----------------- Chaque objet qui doit tre dessin est reprsent par une liste de points reprs par leur coordonnes X,Y,Z plus une liste de polygones reprs par leur limite et une couleur. Chaque polygone est construit de telle sorte que les points formant les cts sont dans le sens des aiguilles d'une montre vu de l'extrieur de l'objet. Les couleurs tant indpendantes des ranges de pixels, il est possible de crer des mlanges. Voici les diffrentes tapes pour chaque image: 1. Mise en place d'une matrice de transformation pour la rotation, l'chelle et la translation pour mettre l'objet la bonne position et orientation. 2. Chaque point de la liste des points de l'objet est multipli par la matrice. Faire une matrice pour une seule transformation est beaucoup moins performant que d'appliquer cette matrice chaque point sparment ( en transformant la rotation, l'chelle, etc.. pour celui-ci. 3. Pour chaque polygone de la liste de l'objet: A. La surface du polygone est calcule partir des coordonnes de ces points. Si le rsultat est ngatif, le polygone est de dos par rapport l'observateur et le reste des calculs peut tre saut. B. Pour chaque bord du polygone, une "table de bord" (edge table ou ET) est cre donnant les informations utiles pour dessiner la ligne ( position horizontale de dpart, pente, dernire position de la verticale). L'ET est divise en 200 catalogues chacun donnant une position verticale possible de telle sorte que les informations n'ont pas tre stockes pour chaque bord. 4. Pour chacune des 200 ranges de pixels sur l'cran: A. Toutes les entres dans le catalogue ET correspondant au balayage sont passes dans la table active (AET) dans l'ordre ascendant de leur position horizontale. B. Chaque bord dans l'AET est examin pour voir si l'affichage horizontal a chang. Dans la plupart des cas, cela se fait par comparaison du bord en cours et de celui qui est en train d'tre calcul. Quelquefois, on peut chercher dans le catalogue des polygones en cours dans l'EAT le plus proche. Quand un changement de couleur est dtect, il n'est pas dessin immdiatement. Cela prend 1 soixantime de seconde pour que l'image suivante s'affiche. C. Aprs toutes les entres dans l'AET, celles-ci sont corriges pour le dernier balayage. Chaque boucle dans l'AET est ajoute la position horizontale en cours.( positive pour les lignes qui vont vers la droite et ngative pour celles qui vont vers la gauche). Chaque ct qui atteint sa dernire position verticale est effac de l'AET. L'AET est retrie pour garder l'ordre ascendant des positions horizontales. 5. Quand tous les changements de couleurs sur l'image ont t ffectus, il sont dessin sur l'cran tous en mme temps. Le programme attend que le balayage vido atteigne le bas de l'cran pour utiliser les changement prcdents de l'image pour effacer ces changement et se sert de la nouvelle liste de changements pour redessiner l'image. Pour acclrer le processus, les codes de changement sont crit en langage machine. Il tait prfrable d'avoir un code de changements qui pouvait servir la fois au changements de l'image en cours et l'effacement de l'ancienne. Les codes de changement tournent en mode natif sur 8 bits avec le registre de pointeur en $E1 o se trouve l'cran graphique. Pour le changement de chaque octet, voici le code: LDA dp STA absolute L'adresse 'dp' dans l'instruction LOAD ( LDA) est la nouvelle valeur de l'octet: pour dessiner les changements, la liste est excute avec chaque octet contenant une valeur gale son adresse et pour effacer, l'octet ne contient que des zro. POUR DE PLUS AMPLES PRECISIONS: ------------------------------ Fundamentals of Interactive Computer Graphics James D. Foley & Andries Van Dam Addison-Wesley Systems Programming Series ISBN 0-201-14468-9 Cela couvre divers aspect des graphiques en 2D et 3D, y compris l'algorithme utilis pour Polygonia. Computer Graphics: A Programming Approach Steven Harrington McGraw-Hill ISBN 0-07-026753-7 Ce livre couvre moins d'aspects que le prcdent mais donne plus d'exemples concrets pour les utiliser. UN PEU PLUS ----------- Pour autant que je sache, il n'y a eu que deux programmes qui se servent du mode FillMode du IIgs. Accessibles sur CompuServe, Library 11 du forum APPRODUCTIVITY. Cubination (auteur inconnu): affiche un icosahedron (?) (polydre 20 cts) qui se dplace en diagonale sur l'cran en rebondissant sur les bords. Plus rapide que Polygonia I, mais moins pratique. Ce fichier s'appelle CUBINA.BNY sur CompuServe. FillMaze (aussi de Jason Harper): --------------------------------- Un labyrinthe en 3D. Trs rapide (55 images par seconde). FIN Jason Harper CompuServe: 76703,4222 Internet: 76703.4222compuserve.com. pqrstCATALOGUE " Toute peine mrite salaire " Jouez le jeu du Shareware en rtribuant les auteurs. Les bons programmes sont souvent le fruit d'un nombre incalculable d'heures de travail et l on n'a pas pour excuse de ne pas vouloir engraisser les marchands aux bnfices honts. La devise du club est " Payons les logiciels que nous utilisons". Ce qui est dj le cas de beaucoup d'aprs les retours que nous pouvons avoir. GS.CLUB.97 cette disquette au catalogue de notre numro 8 contient une ---------- nouvelle version du Font DA Installer, la version 2.0 au lieu de 1.1. GS.CLUB 107 SoundSmith 0.9B: Programme de Huibert Aalbers --------------------------- Artwork T.Mchain et S.Renaudin Suite notre demande, nous avons reu de la part de T.Mchain, ce superbe logiciel compos au total de 15 disquettes. En vous procurant la 107, 108 et une de celles de musiques, vous pourrez dj vous faire une bonne ide de ce squenceur 14 Pistes MIDI qui peut charger jusqu' 15 instruments et qui utilise pleinement l'Ensonic de notre GS. Pour une version infrieure distribues aux USA, les auteurs demandent $20. Bien que freeware en France, si vous utilisez ce programme envoyez 120 F aux auteurs, ils les mritent largement. *T.Mchain -19 rue Tiffonet -33800 Bordeaux *Huibert Aalbers -Travesia Andres Mellado 3 -28015 MADRID (Espagne) Huibert Aalbers et l'auteur de JigSaw et Laser Force SoundSmith requiert GS/OS 5.0 et 1.25Mo GS.CLUB 108 Soundsmith Data GS.CLUB 109 Soundsmith Player (FUN et FTA) GS.CLUB 110 Soundsmith Musiques Volume 1 GS.CLUB 111 Soundsmith Musiques Volume 2 GS.CLUB 112 Soundsmith Musiques Volume 3 GS.CLUB 113 Soundsmith Musiques Volume 4 GS.CLUB 114 Soundsmith Musiques Volume 5 GS.CLUB 115 Soundsmith Musiques Volume 6 GS.CLUB 116 Soundsmith IFF Instruments Volume 1 GS.CLUB 117 Soundsmith IFF Instruments Volume 2 GS.CLUB 118 Soundsmith IFF Instruments Volume 3 GS.CLUB 119 Soundsmith IFF Instruments Volume 4 GS.CLUB 120 Soundsmith IFF Instruments Volume 5 GS.CLUB 121 Soundsmith IFF Instruments Volume 6 GS.CLUB 122 Technotes volume 3 ------------------------------- AIIC: Tn-008. AIIGS: Tn-054 077. FileType Notes du 4 mars 90 GS/OS: Tn 007 010. AppleTalk: Tn 003 007. Misc: Tn 014 et 015 SmartPort: Tn 008. PDos: Tn 022 026. GS.CLUB 123 Next Home 1 par J.C. Derrvwxyz{|}~2/ ,@ main / "+";6",") ;8[iH"፣h)@{i+k ;8[i"].h{i+k ;8[i{iHHH"L,{iHHH"L,H"!h"-z͢))8pI) i(ς) i(ϥ8dpId{iH"-z8H("-zeHZJ"፣HH{iH "፣hۆۢ"፣{iH"-z8(HJ"፣{iH H "፣ۢ8"፣"፣"፣ :"፣{iH"፣ :"፣{iH"፣H"፣hۢ "፣{i+  ;ikContinue ;8[i{iHHH"L,H"!h{iHF 8(HJ"፣{idddd{iH8("-z8HJ"፣ dddd{iH8HFJ"፣ϩѩ{iՆ{iنddߥH{iH"፣hH{iH"፣hcH{iH"፣hBH{iH"፣h!80 sH`8 {i+;ikOk ;8[i{iHJ"፣{iH"፣"-z"-zH"!h8::ͩ8::ˢ6"፣7"፣."፣H"},h{iH "፣"-z ſ8Ʌť8Džå8pIdł8pIͅť8pIdÂ8pI˅{iHåeHeHJ"፣{iHS"፣{iHS"፣ׅϥمѥۅӥ݅ե{iHS"፣{iHHHeHeHJ"፣HH{iH"L,6"፣{i+;ik ;8[i{iHHH"L,H"!h"-zע) i(ե8pI{iH"-z8H("-zeHNJ"፣HH{iH "፣hцѢ"፣{iH".h"-z8HJ"፣{iH H "፣Ѣ8"፣{iH"-z8 HJ"፣{iH H "፣"፣"፣ :"፣{iH"፣H"፣hϥ   d Ѣ "፣{i+;ikCancelOk ;8[i{iHHH"L,{idd{iH"፣ d  {iH"፣{i+;ik ;8[i{iHHH"L, "፣ {idd{iH"፣"፣ d X򅟥{iH"፣"፣ d {iH"፣"፣{i+ ;i k ;8[i{iHHH"L,{idd{iH"፣dd{iH"፣M{iH"፣dd{iH"፣{iH"፣{i+;ik ;8[i{iHHH"L,{i{iH"፣d{i+;ik ;8[i{iHHH"L,{i{iH"፣{iH"፣{i+;ik ;8[i{iHHH"L,{i{iH"፣d{i+;ik ;8[i{iHHH"L,HH{iH": hH{iH" hH{iH" h{i+;ik ;8[i{iH*"፣{i+k ;8[i{iHHH"L, {i{iH"፣{i􅛥ʅdd{iH"፣" d {idd{iH"፣" d {iH"፣l" d I{iH"፣W" d {iH"፣{i+;ikProDOS SetEOF error.ProDOS write error.ProDOS open file error.ProDOS create file error. ;8[i{iHHH"L,{iHHH"L,H"!h"-z)8pI i{iH"-z8H#"-zuHxJ"፣HH{iH "፣h͆͢"፣"-z{iH8H<J"፣{iH H "፣͢8"፣ {iH"-z8H "-zuHJ"፣{iH{iH "፣ i {iH"-z8H"-zuH7J"፣{iH{iH "፣H"፣h0{iH"፣HH{iH"L,͢ "፣{i+  ;i kOk ;8[i"h.h)] 8pI0% 8pI00uAu8  {eH{iH{iH",{i{iT"-z  %O   %   HH{iH"L,{i+;ik ;8[i)ݥ*{iH"*hHH{iH"L,1'{iH"hHH{iH"L,{i+;ik ;8[i@  kWC/{ɰɱɲɳɴ ɵɶ$ɸ0ɹ<ɺHT`q {i+;ik---SYSP16TOLCDANDASTREXERTLS16LIBOBJSRCFNTBINTXT ;8[i{i{iH "፣HH{iH"L,{i+;ik ;8[i{iHHH"L,{i{iH "፣{i+;ik ;8[i{iHHH"L,{iHHH"L,{iHHH "L,ԋ".hH"].h"-zH"].h׆٥ʅӆե8啅ѥ8"-zϩǥх8pI0ׅɥم˩ťυ8pI0aɅ˅ͥ)"-z)å å e ɦ"].hɆ˥łӥצ"].h׆٥ǂc{i+ ;i k ;8[i{iH>BJ"፣HH{iH "፣hن{iHiJ"፣{iH H "፣٢"፣"፣"፣n:"፣"፣ #:"፣"፣ -:"፣E"፣ 7:"፣ "፣ A:"፣"፣ K:"፣"፣_:"፣y"፣i:"፣k"፣s:"፣X"፣H"፣h٢ "፣{i+kWestford, MA 01886 67 Sleigh Rd. Paul GauthierArectangle around the screen with the mouse, and deal with ProDOS.?copy them to on-screen windows, manipulate color tables, move a;show you how to load and save files, extract pixel maps and>to the address below. Among other things, the source code will=To get the source code for this program (TML Pascal) send $15Custom GSOS Source Code Offer:Ok ;8[i{iHHH"L,ש8pI0: t٥ׂ)ϩ8pI  8pI % ץυ8pI08i)թ98pI0: 80ق5F8pI0: 8Ai ق: 8ai ٥: 8pI  : 8pI  : t ׂ? eم e eʅцӥх{i+;ik ;8[iHH{iH".߅"].h{i+;ik ;8[iۥ8pI0)H{iH"hۅۂd{i+  ;ik ;8[i dd "{iH{iH "፣#{i{iT{i{iT{iH"h{i{iT d f"{iH{iH "፣{iH"h{iH{iH".HZ"{iHK"{iH"h{iH{iH",{iH"hI {iH"h{iH{iH{iH",{i{iT{iH3"{iH"h{i{iTH'"{iH""{iH "{iH",{iH"hI9{iH{iH{iH",{i{iTHH{iH": hԜԚ"r.pIH{iH" hH{iH" hHHԜԚH "፣h""|H{iHԔԒԜԚ"\ h6H{iHԔԒԐԎԜԚ" hI !" !"ԘԖ"፣{i+kTrouble reading fileTrouble writing new fileNot enough memory? to Ok to copy Enter name of new file: to directory Ok to copy Go to destination directoryPick file to copy: ;8[i{iHHH"L,{iHJ"፣HH{iH "፣hHH"፣{iHJ"፣HH{iH k)H "፣HH8"፣{iHPJ"፣HH{iH d)H "፣{iHJ"፣O){iHH){iHH"^h{iHC){iHH"h{iHA){iH",{i{iTHH{iH{iH "፣{iHxrJ"፣HH{iH3)H "፣8pI0q8 pI :"-h".hi&:H".hi.){iH: H"^h{iH*){iH: H"h{iH(){iH",{e{iT{iHHHixHi HJ"፣HHuH{iH :H".hi{eH "፣{iHJ"፣HH{iH #)H "፣{iH &J"፣HH{iH")H "፣HH{iHH"^h{iH "፣HHH"hHHuH/"፣H"፣hթ8pI  8pI % HHբ/"፣ 8pI8pI0@HHHuH."፣h 8pI: 0HH{iH"፣H{iH"hHH "፣{i+  ;ik $) ( $ New Filetype:) ( is $Present Filetype of CancelOk ;8[iC dd *{iH{iHH "፣HCH{i^H" hFFD{iNH{iFH""FD{i^HF"f {i+kSelect a file:HHH ;[ HHHHH &"  Ȁ8: ))e:  +  ;ik;8 ;[H({iH "},h+;ik ;[) eH0"+;ik ;[HHH)H ("h +;ikHHH ;[ )f A [8Ai a {8ai 80))  J ) J) +  ;i kH;iD,{F,HH ;[ H "H"hH,HHH,H "h<,h>,H "HHHH,H "h@,hB,e: "J,k ;[ j, k, :T+  ;i k"Ꮳk ;8 [  d) e )e     ;e iHH ;[>,H<,H"B,H@,H""J,J,"J, d&-)H "h "Ԣ"""H,H"D,F,[Z8k H;[ I Iʀ f  8 F F I+k H;[IIʩ FeI+kcck##k8 # zz(k ;[0  +  ;i k ;[   :0 )   h)+H   ;i(ku"j   lW?_E ykX"f"sZ"K"& 3"P '"_ ""n "P!"!!!!S#k)#d)#O)$H)+$C)L$A)$3)y%.)%*)%()&#) '"))*+7,J,+-J,<-J,Qށrsuwym"Bb"v)SbqSāP .O| CX;n7\$z{Y Xgp"PkNiD&+:?NSbgv{*/R-/J"Ꮳ{iHS"Ꮳ{iHr &J"Ꮳ{iHS"Ꮳ{iHHH8"-zeH:HJ"Ꮳ"*{iHT"Ꮳ{i+k ;8[i{iH"፣8pI0+ɩ٩˩۩ѩө(ɩ٩˩۩ѩө{iH"፣{i+k ;8[i" HH"፣Nd{iHJ"፣dddd{iHJ"፣dddddddddddddddѩE ӆթߩddHH{iH "፣hHHH "፣h" a H"፣hJ"፣{iHIJ"፣ ӆHH{iH "፣h}  {i+k Current IconsSorry. Not enough memory. ;8[i d {iH "፣ {i+kLoad which picture: ;8[i)"k d {iH "፣ {i+kLoad which file:*/SYSTEM ;8[i{iHdJ"፣HH{iH "፣h{iHJ"፣HH{iH H "፣{iH J"፣HH{iHHH "፣HH"፣"፣"፣:"፣"፣ A:"፣R"፣ K:"፣1"፣ U:"፣"፣ _:"፣"፣ i:"፣"፣ s:"፣"፣ :"፣"፣H"፣hݭHH "፣{i+k1AppleLink - PGauthier, Apple/Boston - PGauthier$are copyrighted by TML Systems, Inc.!Certain portions of this software(c)1987 TML Systems, Inc.This program is freeware by Paul Gauthier Nov 1989 v2.2.A program to customize the IIgs startup screen- Custom.GSOS -Ok ;8[i{iHP20J"፣HH{iH "፣hHH"፣"፣"፣ :"፣ "፣ :"፣"፣ (:"፣"፣ 2:"፣d"፣ <:"፣7"፣BP:"፣ "፣H "},hH"~*hHH "፣{i+k-Press the mouse button or any key to continue,the original System Disk. Run it on a copy.9Do not use this program to modify the START.GS.OS file on3the original before attempting to run this program.8This program modifies a system file. Be sure to back up - WARNING - ;8[iH"8hjHHH"\ hHHH"፣HH"፣  0"፣0"፣{i+k ;8[iH"h T T "9 HH"r.pI|  H H"፣HHHHH "፣h "!   H H HHH"\ h H H "].h H H "].h HH ". HHh h M". H} H"፣ H} H"፣0"፣0"፣, {iH",{iH"{i+kTrouble loading Sorry. Not enough memory ;8[i )8pI3 {iH",{i{iT{i T"kd{iH "፣ "._" HH".h h HHM".H H HHHHH" hK",:{iH",{iH"{i+kTrouble storing successfully stored.Sorry, but you can't overwrite the input file.Name to save new file as:*/SYSTEM2 ;8[iHH"፣  H H"፣HH "፣ H} H "፣ z {i+k ;8[i{i+k ;8[i{i+k ;8[i{iH:&"h{i{iTHH"፣0 0 "፣"*8 8 T"፣"፣"፣:"፣{iH"፣ H} H"፣{i+kWelcome to the IIGSEnter text string for 2nd icon: ;8[i H} H"፣{i+k ;8[i{iH<PDJ"፣HH{iH "፣hHH"፣{iHxFJ"፣HH{iH "H "፣HH8"፣{iHJFJ"፣HH{iH "H "፣{iH |J"፣HH{iH"H "፣{iH|J"፣HH{iH"H "፣{iHx%/J"፣HH{iH~"H "፣{iHx4>J"፣HH{iHs"H "፣{iH#1J"፣HH{iHp"H "፣{iH2@J"፣HH{iHm"H "፣թ_ש۩٩8pI0Y{iH"*h{i{iTע:"፣{iH"፣eۅեقթbש۩٩8pI0{iHץiHi HJ"፣="*{iHS"፣{iHHH:H:HJ"፣"*{iHT"፣eۅեقhH"፣hݥVHH{iH"፣H{iH"*hѭHH{iH"፣H{iH"*hӥ8pI 0 8pI % 8pI 0% 8pI % %u ٩8pI0 iٕق iӕ@ @ H H {iH"0 0 8 8 {iH"" HH "፣{i+k 1 1 New color:Color to change:Warning: can't undo!Change one color to anotherCancelDo it ;8[i dd ${iH "፣S{iH$"h{i{iT${iH".  {iH". % {iH"h{iH{iH{iH",{i{iT{i{iH"፣H${iHH"*h{iHq${iH",{iH" {i+k renaming fileError Enter new name:Pick file to rename: ;8[i dd %{iH "፣H%{iH",{iH"hj{iH"፣H%{iHH"*h{iH%{iH",{iH"{i+k deleting fileError Ok to delete Pick file to delete: ;8[i{iHqJ"፣HH{iH "፣hHH"፣"፣"፣ :"፣,"፣:"፣r,"፣:"፣2,"፣(:"፣+"፣<:"፣+"፣LF:"፣W+"፣P:"፣+"፣LZ:"፣*"፣d:"፣y*"፣Ln:"፣0*"፣x:"፣)"፣L:"፣)"፣:"፣G)"፣L:"፣)"፣:"፣("፣:"፣("፣H "},hH"~*hHH "፣{i+k.Press the mouse button or any key to continue.KStep 6. Rename your new file START.GS.OS (in directory SYSTEM) and reboot.B option to save a copy of the START.GS.OS file with the new icons.NStep 5. Use the Show Icons option to check your work. Use the Save GSOS FileHsame way, or use the Set 2nd Icon by Text option to enter text directly.PStep 4. Use the Select 2nd Icon option to specify the 2nd (smaller) icon in theHto use as the 1st (larger) icon. Press the mouse button to see the box.SStep 3. Use the Select 1st Icon option to put a box around the part of the pictureAnew icons. This file must be a non-compressed ($C1) screen file.GStep 2. With the Open Picture File option, read in a picture with yourIfrom the /SYSTEM directory. The icons stored in this file will be shown.LStep 1. With the Open START.GS.OS file option, read in the START.GS.OS fileC'Welcome to the IIgs') with your own pictures or text. Here's how:?the two standard icons (the picture of a computer and the text EThis program lets you customize your boot startup screen by replacing- How To Use Custom.GSOS - ;8[itrろ"2>"7"G0")"""" "$">"X"Z""""$"g"n)"%"-C.B/Aɑ@ɒ?ɓ>ɔ=KJIHYNZM[L\KɽJɾI! ,"፣{i+k ;8[i33333{iH",{iT3t3S3H3+33{iH",{iT3222222{iH",{iT22k2K2@2+2{iH",{iT21{iH",{iT11111{iH",{iTz1d1O1{iH",{iT "፣HHH-"፣hH "፣HHH-"፣hH "፣HHH-"፣hH "፣HHH-"፣hH "፣HHH-"፣hH "፣HHH-"፣hH "፣HHH-"፣hH "፣,"፣H"፣h*"፣{i+k==Warning!...\N702.==What To Do...\N701>> Help \N700==Change File Type...\N604.==Copy File...\N603==Delete File...\N602==Rename File...\N601>> ProDOS \N600==Change Colors...\N801.>> Colors \N800==Show Icons\N504D. ==-\N999D==Set 2nd Icon by Text...\N503==Select 2nd Icon\N502D==Select 1st Icon\N501D>> Work \N500==Clear\N254.==Paste\N253*Vv==Copy\N252*Cc==Cut\N251*Xx ==-\N901D==Undo\N250*Zz>> Edit \N900D==Quit\N404*Qq.==Open Picture File...\N403 ==-\N999D ==Save START.GSOS File...\N402D==Open START.GSOS File...\N401>> File \N400 ==-\N303D.==Source Code Offer...\N303==Warning!...\N302==About CustomGSOS...\N301 >>@\N300X ;8[iHH"፣HH"፣P{iH8 "hׅߥمۅ݅8{iH "hׅߥمۅ݅ H:5"hrHH"፣&@ @ "፣#0 0 "፣ {iH"፣{i+kOk to use this region? ;8[i0ͻ" 4 {i+  ;ik ;8[ivx z "Hbb"፣h",/tHrHnHlH"Q5 z a{i+k ;8[i"""V "L."5" {i+k $      ^ =  " 4 F X jw |V 5  o N-0 BTfxgF% E H f)hR1(H" Bbd7   di& ,<_K :q:w&"""."~"s"*p"~m""$##$I#$!$$C$q$$%$%O%%q%%b&,&r,&2,&+&+'W+"'+B'*b'y*'0*')')'G)()"((B((Y.3_.3e.3k.3q.3..3.t3.S3.H3.+3.3..3.2.2.2.2.2/2'/+/21/27/k2=/K2C/@2I/+2m/q/2w/1//1/1/1/1/1//z1/d1/O104:5Ӄ%7I[m !3EWi{ՆKik +K%Eełgl/? tz+'{&L$FRte%Ee%E\bhnt.4:@FLtz*c%B  /6=DKRYnuxHLPTX\ (:L^p $6HZl~؄ RWc'G[xNƄGj!2u"/}pK%>/Xy4UbbYa`g[Z|#-8LQTWZjux{EHScfjm4>HR\fpz( $'*036Pbt (:L^pʄjpLgkv!5:=W_bqt [y~),0;HUeu %5EUflp{/?O_o69=TXcfju}"!%059=QVYqt  %)47;FS`rQ[^lr 4N gkv5;?Jilp Fehl Badh`#'>,2TXc ,m0*D^ #&*5BO_o/?O_o/?OptB`"1BGVgl{ -8E!%037BE 0^kp&)} !-9Wv{ /ASew +=Oas̈́gmւ|3oNio)/)j-%Jo+ ,@ ~global """"""""""""""""""""""""""""""""33333333333333333333333333333333DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffffffffwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwArt.MonTV NDLR: H. Benon nous invite un plongeon dans les entrailles des moniteurs et plus spcialement du moniteur couleur de notre GS. La suite dans le prochain numro. INTRODUCTION Le but recherch, dans cet expos, et d'apporter, ceux qui en ont besoin, des explications sur le fonctionnement des tlviseurs et des moniteurs vido. Je me suis aperu que, dans beaucoup de livres ou de revues, il y avait beaucoup d'erreurs. Personnellement je lis beaucoup, et je crois tout ce qu'on me dit. Alors je plains ceux qui lisent des textes errons. C'est pourquoi je suis l aujourd'hui. Mon expos se voulait court, et peu peu, pour rpondre aux questions, qui pourraient m'tre poses, le texte s'est etoff de plus en plus. J'ai essay de donner des explications, sans faire appel des dveloppements mathmatiques, il y aura donc des notions difficiles admettre. Cependant si vous trouviez un passage confus et que vous vouliez quelques renseignements supplmentaires, vous pouvez m'crire, l'adresse est dans l'annuaire. RESTITUTION DU MOUVEMENT CONTINU La restitution du mouvement continu par des images demande au moins 16 images par seconde, c'est la vitesse de tournage du dbut du cinma. Mais cette vitesse, la projection, l'oeil peroit un papillotement de la lumire. Le papillotement lumineux disparait partir de 30 clairs par seconde. Pour cela, chaque image est projete deux fois sur l'cran, et 32 clairements par seconde le phnomne n'existe plus. Puis le cinma passe la vitesse de 24 images la seconde, grce des pellicules plus sensibles et pour pouvoir reproduire des mouvements plus rapides avec une nettet plus acceptable, ce qui conduit 48 projections sur l'cran. C'est devenu le standard du cinma. L'IMAGE ELECTRONIQUE L'image lectronique apparat, avec la tlvision et, le nombre d'images par seconde doit tre en rapport avec la frquence du courant lectrique. . Dans notre pays et dans toute l'Europe le secteur est 50 Hertz. Aux USA, au Canada, au Japon, notamment, le secteur est 60 Hertz. Par conservation du systme adopt pour le cinma, la tlvision passe 25 images/seconde avec 50 projections (la frquence du secteur tant 50 Hz). Qu'advient-il alors des films tourns 24 images/seconde et projets en tlvision 25 images/seconde, et bien seulement une augmentation de une image de plus par seconde, ce qui conduit une vitesse plus rapide qu'au tournage, mais si peu, une dure plus courte du film (2 minutes et 24 secondes par heure) et un son lgrement plus aigu. Ceci sera plus sensible lorsque ces films passeront dans un programme de tlvision, dans un pays 60 Hz. Ce qui explique aussi, pourquoi les mouvements, dans les films du dbut du sicle, sont si rapides, lorsqu'ils sont examins maintenant. Nous n'avons plus de projecteurs 16 images/seconde et ils sont projets une vitesse de 24 images/seconde dans les salles et de 25 images/seconde la tlvision. Etant difficile d'avoir aussi 25 images/seconde dans nos ordinateurs, les mouvements dans les jeux qu'ils dispensent auront des mouvements saccads. Le compromis est donc d'avoir un mouvement agrable, avec une consommation de mmoire acceptable. Nous y reviendrons. Actuellement, pour amliorer encore l'image et, grce aux nouvelles techniques. L'image peut tre restitue 100 Hz. Mais ceci est seulement une amlioration la rception. Le signal est toujours mis 50 Hz. Le rcepteur est muni de deux mmoires de trame. L'une emmagasine la trame qui arrive, pendant que l'autre restitue deux fois la trame prcdente, une frquence double. L'criture en mmoire se fait 50 HZ et la lecture 100 HZ. LE POINT D'IMAGE Etudions de plus prs la formation d'une image lectronique. Alors que le cinma projette, sur l'cran, la surface entire d'une image, l'image lectronique est le rsultat du dplacement d'un point lumineux sur l'cran, une vitesse telle que notre oeil ne voit pas son dplacement et qu'il intgre une image entire. Nous verrons plus loin que notre oeil intgre mme deux images pour en faire une seule. Ce spot se dplace de la gauche vers la droite et de haut en bas. Il dcrit donc des lignes horizontales successives les unes au dessous des autres. Et pendant ce temps la puissance lumineuse du spot varie en intensit pour rendre le point d'impact sur l'cran plus ou moins lumineux. Le signal de tlvision est analogique, c'est dire qu'il varie continuellement dans le temps. Dans notre moniteur, le faisceau ne varie pas d'une faon continue, il est maximum ou minimum, par point, et son impact rend ce point lumineux ou non. Nous sommes l en fonctionnement binaire. Remarquons aussi que pour faire l'cran blanc, le faisceau doit tre son intensit maximum alors que, pour crire un caractre, il doit tre teint. Dans le mode criture, noir sur fond blanc, le spot est toujours maximum, sauf pour les caractres. D'o une grande consommation d'nergie et surtout une trs forte usure du tube cathodique. C'est pourquoi il est conseill d'teindre le moniteur, lorsqu'on ne s'en sert pas. Le spot se dplace donc du bord gauche de l'cran vers le bord droit assez lentement et son intensit illumine plus ou moins l'cran. Lorsqu'il arrive au bord droit, il doit revenir plus rapidement pour balayer la ligne suivante mais il ne doit pas illuminer l'cran. Sur un ancien tlviseur, en noir et blanc, us ou mal rgl, on voit parfois des lignes blanches transversales, c'est justement le retour du spot. Pour viter cela il faut l'teindre pendant le temps de retour, c'est la dure de suppression ligne. On admettra de la mme faon que lorsque le spot arrive au bas de l'cran, il doit remonter en haut, et que pendant ce temps il doit tre aussi teint, ce temps dure plusieurs lignes. Il y a donc deux priodes de suppressions, ligne et trame. Utilisons dj ce nom de trame, nous verrons ultrieurement la diffrence entre une trame et une image. Ces suppressions, appeles blanking en anglais, sont les rfrences qui alignent nos images sur l'cran. LE BALAYAGE Les images de notre GS, ont 262 lignes par trame en 60 Hertz et 312 lignes par trame en 50 Hertz. Les images successives se superposent les unes sur les autres. L'image de la tlvision comporte 262,5 lignes en 60 Hertz et 312,5 lignes en 50 Hertz. La demi-ligne est ncessaire au balayage entrelac que nous allons dcouvrir maintenant. Mais pour en revenir au balayage entrela, au lieu de dire qu'il y a 50 images de 312,5 lignes, disons qu'il y a 25 images de 625 lignes. Quelques petits calculs sont alors ncessaires. La dfinition verticale de cette image est de 625 points verticalement puisqu'il y a 625 lignes. Le format de la tlvision est 4/3. Si nous voulons avoir la mme dfinition horizontalement il faudra 625 x 4/3 = 833 points par ligne. L'image comprend donc 833 x 625 = 520 625 points. La variation sinusoidale d'un palier de gris, provoque un point blanc la crte et un point noir au creux. Le point blanc ou le point noir reprsentent la moiti de la priode de la variation. Nos 520 625 points reprsentent donc une frquence de variation de 520 625 / 2 = 260 312,5 priodes. Ce qui correspond pour 50 images/seconde une frquence de 13 020 833 Hertz. Cette frquence reprsente la frquence maximale, transmettre, et dfinit la bande passante du systme. On l'value plutt en Mgahertz et, l'on dira 13,020 MHz. Cette valeur est norme, pour un metteur, et encombre l'espace de transmission qui est dj trs embouteill par tous les systmes de tlcommunications. On a donc trouv une astuce, pour diminuer cette bande, c'est le balayage entrelac. Il s'agit de ne transmettre que 25 images par seconde, mais sous la forme de 50 demi-images, qu'on appellera alors trames. Une image de 625 lignes est transforme en deux trames de 312,5 lignes, et la bande passante transmettre n'est plus alors, que de 6,5 MHz. La premire trame contient les lignes impaires de l'image et, la seconde les lignes paires. On les appelle trame impaire et trame paire. A la restitution, le spot balaye la premire ligne et aprs son retour, se trouve dplac, de faon placer la seconde ligne de la trame, qui est, en fait la troisime de l'image et ainsi de suite jusqu' la 312me ligne. Au bout de la demi-ligne suivante, le spot arrive en fin de trame, et remonte en haut de l'cran. Il se trouve aussi une distance d'une demi ligne du bord droit de l'cran, il la balaye et aprs le retour se trouve de ce fait dans l'espace situ entre les deux premires lignes balayes lors de la trame prcdente. C'taient la 1re et la 3me ligne de l'image. Mais qu'est-ce que le spot est en train de lire en ce moment, c'est la premire ligne de la trame paire, qui est en fait la deuxime ligne de l'image. Le processus se continue et toutes les lignes paires sont places entre les lignes impaires. Notre oeil est abus, encore une fois, et il voit bien une image complte constitue de deux demi-images successives, entrelaces. Mais notre ordinateur n'a pas de balayage entrela, il y a bien 60 images identiques successives et superposes, de seulement 262 lignes. De plus comme il n'y a pas de mouvement continu restituer on ne parle plus d'images, mais de rafrachissement de l'cran une frquence de 60 Hz, de mme qu'il y a le rafrachissement des mmoires. 50 OU 60 HERTZ ? On peut tre drout, par ce que je dis. Tantt je parle du 50 Hz du tlviseur et ailleurs, je parle du 60 Hz du moniteur. Oui il y a une ambiguit qui en gne plusieurs. Notre ordinateur peut tre adapt, par les options du tableau de bord, un fonctionnement 50 Hz ou 60 Hz. Il doit tre adapt au moniteur qu'il utilise. Dans le cas du moniteur Apple, celui-ci tant de conception amricaine, fait pour un secteur 60 Hz, il vaut mieux choisir la mme option. Si vous utilisiez un moniteur franais ou plutt europen, vous devriez choisir l'option 50 Hz. Mais surtout ne dites pas, qu' la sortie de la broche 12 du connecteur vido, il y a un signal NTSC ou PAL. Il y a seulement au choix, un signal monochrome, 262 lignes rafrachies 60 fois par seconde ou 312 lignes rafrachies 50 fois par seconde. LES SIGNAUX DE BASE Les intervalles de suppression ligne et trame, vont aligner les bords verticaux de l'image, mais ce ne sont pas eux qui vont dclencher le retour du spot. Il y a l'intrieur de ces intervalles de suppression des impulsions de synchronisation ligne et de synchronisation trame. Reprenons le chemin du spot qui est en train de lire une ligne quelconque. Il arrive au bout du signal utile, au bord droit de l'image, la suppression ligne l'teint, il continue avancer , arrive sur une impulsion de synchronisation qui lui commande de revenir au bord gauche, il revient, il est encore teint et commence lire la ligne suivante, jusqu' la fin de la suppression o il restitue le signal utile. Il en est de mme, pour les impulsions de synchronisation trame, dans les suppressions trame. Mais l, les impulsions sont diffrentes, pour la trame impaire et pour la trame paire, par la prsence ou non de la demi-ligne. Premire dfinition trs importante : on appelle signal image, ou signal vision le signal utile contenant le contour de l'image. On appelle signaux de base ou synchro composite, les quatre signaux de suppression ligne et trame et de synchronisation ligne et trame, mlangs en un seul signal. Et finalement on appelle signal vido ou signal vido composite, signal le signal compos de ces deux signaux lmentaires. Sur le port vido de notre ordinateur nous avons : broche 1 - masse du cable vido R 2 - primaire R 3 - synchro composite 4 - rien 5 - primaire V 6 - masse du cable vido V 7 - -5 volts 8 - +12 volts 9 - primaire B 10 - rien 11 - son amplitude 1 volt 12 - signal vido composite monochrome, 50 Hz ou 60 Hz 13 - masse du cable vido B 14 - rien 15 - rien Les broches 2,5 et 9 ont chacune une broche de masse correspondante en 1,6 et 13, afin que les primaires R,V et B soient achemines sur des cables coaxiaux spars. LES NORMES Il faut ici donner la dfinition de la norme en tlvision. Les pays qui utilisent 60 trames, donc 30 images de 525 lignes sont en norme M. Les pays qui utilisent 50 trames, soit 25 images de 625 lignes ne sont pas en norme M, mais dans une norme qui peut e^tre B,C,D,G,H,I,K,K',L ou N. Cela dpend d'autres conditions. Rappelons que l'ancienne norme A anglaise avait 25 images de 405 lignes et que la norme E pour la France et la norme F pour la Belgique avaient 25 images de 819 lignes. Le signal en broche 12 est disponible pour la norme M ou pour l'ensemble des autres normes. C'est le me^me signal composite vido qui est disponible la fiche RCA. Sur l'Apple IIe, cette sortie est en couleur PAL ou en noir et blanc, selon la position du switch (BW/COLOR) sur la carte mre. Ces explications ont t simplifies l'extrme. Il y a bien d'autres particularits qui distinguent les normes de tlvision, mais nous n'en avons pas besoin ici. Situons le niveau du noir. Le signal utile d'image variera positivement juqu'au niveau maximum que l'on qualifiera de niveau de blanc, en passant par tous les niveaux possibles de gris, en ce qui concerne le signal analogique de la tlvision. Les signaux de base, sont aussi aligns sur le mme niveau de noir mais leur amplitude est ngative, par rapport celui-ci. Dans le signal composite on a donc au niveau le plus bas le fond des signaux de synchronisation. Au voisinage de 30 % (cela dpend des normes) le niveau du noir de l'image comprenant les temps de suppression et 100 % le niveau du blanc maximum. C'est ce qui fait dire, dans les traductions franaises sur ce sujet (voir page 167 du manuel de la traduction du manuel de rfrence de l'Apple IIe) que les impulsions de synchro sont au niveau plus-noir-que-noir. On emploie en France le terme d'infra noir. Dans le langage technique on dit, plus simplement, le fond de synchro. LA DUREE DES SIGNAUX DE BASE En tlvision (pour les normes 625 lignes et 50 trames) une ligne dure 64 us (us est la microseconde, qu'on devrait crire 'mu s', avec le caractre de l'alphabet grec). Elle comprend la suppression ligne d'une dure de 12 us. Le top de synchronisation ligne a une dure de 4,7 us qui dbute 1,5 us aprs le dbut de la suppression. Une trame dure donc 20 ms (milliseconde) et comprend 312,5 lignes. La suppression trame dure 25 lignes et les top de synchronisation trame, 2,5 lignes et dbute 2,5 lignes aprs la suppression trame. Nous laissons de ct, dans ces explications, ce qu'on appelle les impulsions d'galisation. En norme M (525 lignes et 60 trames) une ligne dure 63,492 us. Elle comprend la suppression ligne d'une dure de 10,2 us. Le top de synchronisation ligne dure 4,19 us et dbute 1,27 us aprs le dbut de la suppression. Une trame dure 16,667 ms et comprend 262,5 lignes. La suppression trame dure 19 21 lignes et les tops de synchronisation trame durent 3 lignes et dbutent 3 lignes aprs le dbut de la suppression trame. Afin de voir l'importance des temps de suppression, on peut prciser que l'embrouillage de Canal + est bas, justement, sur la variation du temps de suppression ligne ou, si l'on prfre par la position du top de synchro ligne dans le temps de suppression. Les tops de synchro ligne sont toujours espacs de 64 us, les dures de suppression sont toujours de 12 us, mais le palier avant la synchro, est sur certaines lignes normal soit de 1,5 us et sur d'autres lignes plus long ou plus court. C'est ce qui fait que les lignes ne sont plus alignes verticalement, certaines sont dplaces vers la gauche et d'autres vers la droite. Ce systme peut tre dverouill par un code secret qui n'est fourni qu'aprs paiement du contrat. LE BALAYAGE DE NOTRE MONITEUR En ce qui concerne notre ordinateur seul le nombre de rafraichissements de l'cran par seconde est important, 50 ou 60. Le nombre de lignes utiles reste le mme et le temps entre deux rafraichissements est rempli plus ou moins par des lignes supplmentaires. Les bases de temps sont dclenches par des compteurs. Le compteur vertical compte jusqu' 262 pour 60 rafraichissements/seconde et jusqu' 312 pour 50. C'est la seule modification qu'on doit fixer au tableau de bord. J'ai utilis volontairement ce terme de rafraichissement de l'cran, dans la phrase prcdente, pour bien faire la diffrence. Dans l'un ou l'autre cas, seules 192 lignes sont utilises pour l'image (24 ranges de 8 lignes = 192 lignes en mode texte). De 192 262, ou de 192 312 on trouvera la mme dure de suppression, le mme top de synchronisation image et, le reste constituera les bords suprieur et infrieur de l'image. En ce qui concerne le compteur horizontal il reste le mme pour les deux options. Il compte jusqu 65, de 0 24 et sert gnrer les bords gauche et droit, la suppression horizontale et la synchro horizontale. Le comptage de 25 65, sert compter les 40 colonnes en mode texte. Ne nous embarrassons pas pour l'instant sur ces systmes de comptage qui sont trs complexes et que nous pourrions abords aprs avoir trait en entier le sujet sur l'image de tlvision et celle de l'ordinateur. Il y a encore beaucoup voir. L'IMAGE ELECTRONIQUE ANALOGIQUE Allons voir de plus prs de quoi est constitu le signal vido noir et blanc. Un tube analyseur lit et restitue ensuite, une image sous la forme de lignes horizontales. Contrairement la photographie, on ne voit pas l'image entire au mme moment, mais c'est le dplacement du spot sur l'cran, qui crit l'image point par point. Pour une image monochrome, le tube peut tre considr comme ayant une surface uniforme et continue. C'est le point d'impact, seulement qui illumine l'cran et qui donne une dimension ce point lumineux. Aussi petit soit'il, ce point lumineux a une dimension non nulle, et de ce fait va impliquer une limite la finesse de l'image, qu'on appellera dfinition. De plus, cette dfinition, dpendra encore de la bande passante des circuits lectroniques, qui vont transmettre ce signal. Mais parlons d'abord du signal. Supposons une transition blanc/noir ou noir/blanc. Le signal d'analyse est au niveau bas et pour passer au niveau haut donn par le blanc, il y a un temps, et ce temps ne peut pas tre nul. La transition ne sera pas reproduite nettement il y aura un flou. On appelle ce temps le temps d'tablissement, qui peut tre un temps de monte pour une transition noir/blanc ou un temps de descente dans le cas inverse. Le spot d'analyse est circulaire avec une dimension infime, mais c'est quand mme un cercle ayant un certain diamtre. Lorsque ce spot va analyser la transition en se dplaant, cette transition va tre restitue en un temps correspondant au passage complet du spot, et cette transition va encore tre allonge dans le temps. On appelle ce temps, le temps d'ouverture (du spot, bien entendu). Un signal carr, dcompos en srie de Fourrier, a un spectre indfini. La bande passante des appareils, limite techniquement et par ncessit, contribuera allonger le temps de transition. Prenons toutes ces notions comme des dfinitions, qui nous claireront un peu plus loin. Pour l'instant rappelons nous que la finesse de l'image, ou encore sa dfinition dpend de la finesse du spot d'analyse et de la bande passante du systme analogique en cause. Ici parlons un peu du gris moyen. En tlvision en noir et blanc, il fallait avoir un gris neutre comme fond d'image, se trouvant 50% du noir et 50% du blanc. Et pour rendre ce gris, il fallait trouver une couleur qui ne se trouve pas dans les couleurs habituelles, pour permettre un contraste permanent quel que soit ce qu'on lui placerait devant. Ce gris moyen tait donn par ce qu'on a dfini par le bleu tlvision. C'est le bleu qu'on utilisait pour peindre les vehicules de l'ORTF. L'IMAGE ELECTRONIQUE DIGITALE . Dans un systme numrique, le signal analogique est chantillonn en morceaux aussi petits que l'on veut. Le niveau de cet chantillon, est alors cod en binaire. Avec 4 bits, on aura 16 niveaux de gris par chantillon, avec 8 bits on pourra avoir 256 niveaux de gris. Deux caractristiques sont ncessaires alors, l'horloge d'chantillonage d'une part et le nombre d'octets utilisables pour le codage de ces chantillons. Essayons de calculer le nombre d'octets ncessaires, pour la numrisation d'une image de 625 lignes de 833 points comme nous l'avons vu prcedemment. Nous avons vu que dans ces conditions, il fallait une bande passante de 6,5 MHz avec le balayage entrela. Ce sera aussi la vitesse d'chantillonnage. Si nous voulons archiver une seule image de 625 lignes de 833 points, soit 625 x 833 = 520625 points, sur 256 nideaux diffrents, il faudra donc 520625 octets, plus de 520 Koctets et, pour une seule image qui dure 1/25me de seconde. LA SYNTHESE COLOREE Pour tudier la tlvision en couleur, il faut faire un peu de physique. On sait qu'un prisme dcompose la couleur blanche et, rciproquement, l'aide d'un minimum de trois couleurs diffrentes choisies dans le triangle de Maxwell, on peut reconstituer presque toutes les couleurs existantes. Ne cherchons pas le prouver et disons que la CIE, a choisi et propos trois primaires rouge, vert et bleu, que l'on appellera R,V et B, partir de maintenant. En anglais on dira R,B et G. On voit que l'ordre du V et du B en franais, est interverti par rapport celui du B et du G en anglais. Ceci est important savoir, car si vous avez un appareil o les trois sorties sont spares sur trois fiches cte cte, sur la face arrire, elles seront dans un ordre ou l'autre selon que l'appareil est franais ou amricain. Et lorsqu'on fait des connexions par habitude, sans regarder, on peut avoir des surprises trs bizarres. LA CONSTITUTION DE L'ECRAN COULEUR A la restitution de l'image sur le tlviseur ou le moniteur, la couleur apparente dpend du revtement de l'cran. Les premiers tubes monochromes de tlvision taient verts, comme la plupart des oscilloscopes. Puis il a t dfini un blanc pour tre plus prs de la photographie. Les crans monochromes des ordinateurs sont aussi vert ou ambre. Avec la tlvision en couleur, il faut restituer, sur l'cran les trois primaires R,V et B. L'cran est compos d'une mosaque infime de luminophores qui s'claireront en rouge, en vert ou en bleu. Ces luminophores sont disposs en triplets. Il y a dans ce tube cathodique alors, trois canons mettant un faisceau qui balaye uniquement les particules de la couleur qui le concerne. Le signal qui excite ce faisceau est aussi analogique et sa variation va, pour le canon rouge par exemple, depuis le rouge teint, c'est dire le noir, jusqu'au rouge maximum, qu'on qualifiera de satur. Il ne peut pas y avoir de rouge plus rouge que celui l. Il en est de mme pour le vert et pour le bleu. Mais la variation entre le minimum et le maximum est continu, cela fait une infinit de nuances. Les autres couleurs seront le rsultat du mlange de deux ou trois des primaires R,V et B. Il y a en tlvision, une possibilit infinie de couleurs diffrentes. Pour la restitution de la lumire blanche, les trois canons R,V et B sont excits par une mme valeur de faisceau et, cette variation en parallle restituera toutes les nuances de gris. Prcisons encore que le noir n'est pas une couleur, c'est l'absence de toute couleur, c'est--dire les faisceaux teints. De mme que le blanc, est la prsence d'au moins trois couleurs, permettant la synthse. L'cran couleur est constitu d'une mosaque de luminophores, runis cte cte, sous la forme de triplets. Ces triplets sont de petites surfaces verticales imbriques en quinconce, comme le montre la figure suivante, et ils sont disposs dans l'ordre bleu, vert,rouge. C'est l'ordre inverse de la distribution RGB, amricaine. *****************_ _ _*********************************** ******* _ _ _ ( )( )( ) _ _ _ **************b v r****** *******( )( )( )(_)(_)(_)( )( )( )********b v r*******b v r *******(_)(_)(_)( )( )( )(_)(_)(_)**************b v r****** *******( )( )( )(_)(_)(_)( )( )( )********b v r*******b v r *******(_)(_)(_)( )( )( )(_)(_)(_)**************b v r****** ****************(_)(_)(_)********************************** Mais le point cr par le faisceau est plus grand qu'un triplet, il englobe, sur le moniteur vido Apple du GS, en 40 colonnes, environ deux triplets horizontalement et deux triplets verticalement. Sur un moniteur ou un tlviseur qui aurait un cran plus grand, le point lumineux serait plus grand, mais comme les triplets gardent la mme dimension, ce point lumineux engloberait plus de triplets. Reprsentons la ligne claire. On voit qu'il y a successivement 2 triplets superposs, un triplet entier entour au dessus et au dessous d'un triplet a demi excit, puis deux triplets entiers. -------------------___----------- ceci reprsente le profil du point lumineux -----------------/****`--------- son temps d'tablissement n'est pas nul, il ----------------/******`-------- claire un cercle et est plus lumineux en ---------------/********`------- son centre que sur son bord. --------------/**********`----------------------------------- --------____ /*********** `____------------------------------ ---------_ _ _ --------- _ _ _--------------------------- --------( )( )( )(_)(_)(_)( )( )( )--------b v r-------b v r- --------(_)(_)(_)( )( )( )(_)(_)(_)--------------b v r------- --------( )( )( )(_)(_)(_)( )( )( )--------b v r-------b v r- --------(_)(_)(_)( )( )( )(_)(_)(_)-------------------------- Il est facile de voir cela sur l'cran du moniteur, en l'examinant la loupe et en changeant les couleurs avec les commandes du tableau de bord. Vous devez apercevoir cette structure. Le noir correspond l'emplacement des deux autres primaires teintes du triplet, mais aussi un espace neutre entre les luminophores. Les seize couleurs sont codes sur un demi octet. Je garde pour l'instant les dnominations du tableau de bord, car les traductions dans les divers ouvrages ne sont pas tout fait exactes. $0 0000 noir $8 1000 brown $1 0001 deep red $9 1001 orange $2 0010 dark blue $A 1010 light grey $3 0011 purple $B 1011 pink $4 0100 dark green $C 1100 light green $5 0101 dark grey $D 1101 yellow $6 0110 medium blue $E 1110 aquamarine $7 0111 light blue $F 1111 white Avec les trois couleurs primaires rouge, vert et bleu on fera des couleurs composes : rouge + bleu = violet (magenta) rouge + vert = jaune bleu + vert = turquoise (cyan) Une petite rcration, avec la mire de barres colores, mise entre les missions, sur les antennes de tlvision. Partagez un rectangle, reprsentant un cran en huit barres verticales. Maintenant tenez le raisonnement suivant: le faisceau vert est excit pendant la moiti de chaque ligne, et teint l'autre moiti. Le faisceau rouge agit de la mme faon mais dans chaque demi-ligne, c'est dire qu'il est excit pendant le 1er et le 3me quart de ligne et qu'il est teint pendant le 2me et le 4me. Et enfin le faisceau bleu partage encore chaque quart en 1/8me de ligne de la mme faon. Quelles sont les couleurs de chaque barre verticale ? Vous trouverez ces dessins sur le fichier GS.paint de cette disquette sous le titre MIRE.TV. Nous dirons que le jaune et le bleu sont complmentaires puisque jaune (rouge + vert) + bleu = blanc. Il en est de mme pour le rouge et le turquoise(vert + bleu) et aussi pour le vert et le violet (rouge + bleu). En faisant varier le niveau des couleurs primaires, qui jusqu' prsent valaient 1, on peut faire d'autres couleurs. Par exemple, en dimininuant le vert 1/2, on va avoir un jaune avec beaucoup plus de rouge que de vert,c'est le orange. En faisant le contraire on aura un jaune verdtre. ( suivre) wA,p  DDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDB™B»ªBBwBwD@BDDDDDDBDDDDDDDDBDDDEDEDEDEBDEBDFBDFBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDBBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDFBBDFBBDFBBDFBBDFBBDFBBDFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBEBEBEBFBFBFBFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBEXEMPLESv!$' '(MIRE.TV.))> ROUTINETML --------------------------------------- Premier exemplaire d'une revue franaise sur disquette consacre Hyperstudio. Son mode de distribution en shareware est original. C'est le paiement du numro actuel qui assure l'envoi du suivant. Chaque numro cote 60 F, la priodicit envisage est d'une parution tous les deux mois. A dcouvrir, ncessite de possder le logiciel Hyperstudio v 2.0. ART.HyperStudio Informations ------------ Une nouvelle version d'HyperStudio est imminente. Cette version 2.1 incluera un Run-Time. Cela permettra de crer des piles qui seront utilisables et visibles sans que l'utilisateur soit oblig de possder le logiciel Hyperstudio. Une licence de $100 sera demande aux dveloppeurs dsirant diffuser et mettre en vente des piles cres de cette faon. Les outils de dessin seront amliors et Hyperstudio sera capable d'importer ROUTINEv' ''DREAM.S1 0DREAM.DEMO[W$*DREAM.LOGO\,$UDREAMVWXYZԠƍÍÍǠ ̍Íōðððؠ̠ð̠̍ؠð 卪 ð Рҍűҫ卍ҍҍ占占ؠ̠űؠ Ԡ̬؍؍؍ؠŠԍ٠ Եؠ Դ̠űŰؠ ĠƠ 占ĠƠ ŠԱ̬؍Ġ̬؍ԱĠư ŠԲ Art.Astuces Transfrer des images du Mac vers le GS --------------------------------------- SHR CONVERT (2.1) de Jason Harper permet de convertir facilement des images de type MacPaint en un format utilisable par l'Apple II GS. Ce programme est disponible dans la bibliothque domaine public du GS Club. L'utilisation en est trs simple: - Formattez d'abord sur le GS, au format Prodos les disquettes dont vous aurez besoin. - Premire tape sur le Macintosh dot d'un lecteur FDHD: a) Lancez le programme appel "Apple File Exchange" b) Insrez votre disquette Prodos et utilisez l'Apple File Exchange pour transfrer les fichiers MacPaint qui vous intressent sur la disquette Prodos. - Deuxime tape sur le II GS: a) Lancez le programme SHR Convert b) En utilisant l'option adquate du menu File, changez le type du fichier convertir (FILETYPE) de $00 en $06 c) Suivez le mode d'emploi de SHR Convert. La conversion donne une palette en 16 niveaux de gris 640*200 ou une image noir et blanc en 320*200 suivant l'option choisie. La pile est-elle morte ? ------------------------ Les symptmes de la mort de la pile de la carte mre du GS, pile qui devait durer trs longtemps... sont faciles identifier. Le GS perd la mmoire. Au dmarrage, il se met en mode standard amricain d'autorit et il faut reconfigurer le control panel chaque fois. L'heure et la date deviennent compltement farfelues. On peut trs bien utiliser le GS ainsi. Cela ne gne en rien son fonctionnement. Il faut seulement mettre le tableau de bord jour chaque allumage. Mais si on veut changer la pile, il existe deux possibilits: 1) Acheter une pile spciale chez Apple et la monter soi-mme ou la faire monter. Cette pile est soude. il faut d'abord enlever celle qui est use. Pour cela sortir la carte mre du boitier, couper les pattes de la pile ras du corps de la pile.Dessoudez chaque patte en la tenant avec une pince pour dissiper la chaleur. Attention de ne pas surchauffer le circuit, les pistes se dcollent et c'est la catastrophe. C'est du 4 couches ...L'usage d'une pompe dessouder est recommand. Insrer la nouvelle pile dans le bon sens, attention la polarit,souder et remonter l'unit centrale. Si dmonter la carte vous rebute, aprs avoir seulement enlever l'alimentation, et en laissant la carte mre en place,vous pouvez couper les pattes ras du corps de la pile usage et souder la nouvelle pile sur ces pattes qui deviennent des picots souder faciles utiliser. Aprs, on coupe l'excdent de patte de la nouvelle pile ras des soudures. C'est ce que j'ai fait et le GS se porte trs bien. 2) Acheter une pile Nite Owl's qui se monte sans soudure. Elle cote un peu plus cher et pour le montage cela correspond la deuxime partie ci-dessus, sauf qu'on ne soude pas les pattes sur le reste de celles de l'ancienne pile. Les extmits de la Nite Owl's sont enroules en ressort et viennent se fixer mcaniquement sur les restes de patte de l'ancienne pile. La mise en place n'est pas aussi simple qu'il n'y parat. Sur un GS muni d'une pile Isralienne de marque Tadiran, la Nite Owl's ne pouvait entrer, le diamtre de la fixation tant trop petit. Il a fallu couper et souder. Par contre, aucun problme sur un autre GS quip d'une pile VARTA....Le fabricant est d'ailleurs explicite et dconseille le montage une personne incomptente. nopqrstuE6789:;<Art.Dernires Microcam -------- Samedi 12 Mai "La nuit de la micro" Au chteau des Loges partir de 16h. Information: MICROCAM 19 rue du Pr Perch 35040 RENNES CEDEX Prsentation CAO/DAO, images de synthses, PAO, Expomatique, Espace Apple 16h Ouverture 18h30 Concours Microcam 19h30 Apritif et toute la nuit poursuite des activits... Apple France ------------ Au moment o vous lisez ceci, les nouveaux produits doivent tre chez les concessionnaires: GS/OS 5.0, rfrence produit A0013F/A, prix 230,00 F H.T La diffrence avec GS/OS 4.0 est due au manuel deux fois plus gros. Le nouveau GS Rom 03 et 1 Mo de RAM sur la carte mre, rfrence produit BGS 8 pour la configuration couleur et A0012F/A pour l'unit centrale seule, prix inchangs. La dernire dition du guide de l'Apple II est quasiment finie. Elle devrait tre envoye, courant Mai. Tous ceux qui sont rfrencs par Apple le recevront directement. Les dernires nouvelles: *********************** Lundi 23 Avril, le Club HyperPomme Paris avait invit le Team Apple II sa runion hebdomadaire. Au programme, prsentation du II GS 1 Mo, du systme 5.0 Franais, de l'AppleShare et du nouveau "Guide de l'Apple II". La salle t transforme en amphithatre et l'on a sorti la limonade du frigo pour la circonstance. Nos Hrauts de l'Apple II, Marc Ducamp et Emile Schwarz, arrivent les bras chargs ( Il y a mme un Mac SE ! ). Installation, atmosphre bon enfant, on peut y aller. Premire annonce importante: le Nouveau GS a commenc tre livr depuis une semaine environ, en principe si vous achetez une machine partir d'aujourd'hui ce doit tre la nouvelle plaque mre 1 Mo qui l'quipe, vrifiez-le et rlez s'il n'en est pas ainsi ou essayez d'obtenir une forte remise !. Nous ne reviendrons pas sur ce nouvel engin dont nous avons publi les avantages et inconvnients depuis dj plusieurs mois, ne jettez pas votre ancienne bcane mais exigez la nouvelle si vous vous quipez. Le GS/OS 5.0 Fran !"#$%&'()*+,-./0123456789:;؈؈؈؈؈??<<?@ABCDEFGHIJKLMNOPQRSTU|0 h|0 r0|w|;)I|. } Ȁ } Ȁ 5) 5x|"|GA 99 9ҍ9( t|k0Щ2 T3ЩTK|DH2 "hH2 "hH2 "h H2 "h "~Ll"p`~LlLLi֢ ~Llf} f}"{ [p~Ll q"8{Ll [p l,Ll)ߏ [p l*\ࢭ [p|ɽ|0 m\"\|. [p|ɻ|Ɂ +m$\%\HH"hh | [p Jm F(\|H|H"|k:< +"4}}"P(ddD) "( "+\ sm|\9Ll|.0%0'~) Z rzȀ00" |\" \00" ɳ pa \ \6" ɶ6 o \\X" ɶX o&\'\"s Wn| \:Ll"fs": Mo| \;Ll""s|"s|HHHHH""") |Hڢ"ᨩZڭ } } }"1 zp=|᪭|i ᪘iii|`? zp|m|m" m`3 zp|}|} #n`9 zp||*(`4 zp |nm|mm "lm+` + q" ||||.}.}|:.}||" |T|0쭤|ɽ qf} }"<ϩ|.}3 p||"P p #n|H" |h+a8`` |+ >|$)i$ei r+` q.}|||:.}" |a||||" |]|0||ɶɷ| qa }"<m }"<ᐲ" |$.} o||`H" |ha8`` | p9|4o|3o"z&ڋ*"2ohJ| p"+`| q.}|" |P|||||" |>|0쭤|ɸ ɹ߮|ڍ| q.} o p|F`|H" |haJ8``|P p7HH|H|H"hh8`|ɸ"`"`HHHHH " ;[||||+`HHHHZڭ|H|H ||z`H}|}|}|}h p`ZHH "`hzHHHHHHZ|H "h*h|h|hNhP`H*H"`؏" | q" |x|||||" |M|Zɳ |Rڠ) }! }0 }a{8  ʈ0h0hH" |8` } } :᭤||`ڠ0ȳ.}0`|.}.} }.}"` |H|H;[ hh+`|ii r0eZڠHHH  ei0{ ( Z;[) Z rzȀ뢎 rhh+ `HHHHHZڢ$"hhhh`K0wTRwww  wp wwww᫫ 4)wA) ݢ w t [v {v v v t s(`Kx0w0"w tww00 t sw((k  `Kx0 u s t((k00`Kx0w tww t  ((kKx0w0w tw "fsw((kK0w!wMtHItH"#"(`ZK0w !v7 uMt/w0 )  w t w uΔw ,uwwwMt(k t u ))?) ` ) s`w5))wwΦw) )  t8`eD`w) s8`)H @ ) Www$D uww www-w w-w w-w w-wh)hh`OOK vww u`K u`It"`)H @ ) ,uw$ ,u ,u ,uh)` zwͶw`w4)\ t`)8`" w`C :w Mw- hw Mw :w`KFwww:Jww wmw`KOy %ww wi%`IW w %w w`# w`)#) w`U w`U w`U w`i`xxw*:system:start.gs.os ppwpwpwwwwpwwppwwwwpwwwwppwwwpwwwpwpwppwpwwwwpwwwwpwpwwwwwpwwwpwwwwpwwwwwwwpwwwpwwwwwwwwwwwwwwwwwwwwpwpwwpwwwppwwwwwpwwwpwwwwpwwpwwwppwwwwwwpwpwp??? ?0<?<::>""``2֜.֜6֜:֜B֜ל"֜$֜֜ ֜&` $H"H;[0/Hȩ:/ȷʎh0hh+` 8ߐ$:֭40 \נ8נ"֌$ A`"6L Liӭ4B00:׍"֩$ր$ڬ"ZZ"x$֮""0 "(tHHHHH.H "W&A$8)25 lj 8߀6 lߩHHHHH$H"HH "h*hhhNhP֐Lߢ\ ߰) ""z"h0H0x;*֍,֢0\́@ [2) '؍թբ " j"֬$֭.HHH""zHȢ :Z֤ȷֈ h եե" [է&A (؍թ" 3>ȷ):ե" pՅ  d#", J" O80 "3 ֮ր +"ɳ++` "hi "hi 0HH "h:`,400k)*!0 $H"H;[0*hhhh+č$%& ݰ[ ݰSLȍ$%& ݰ8э$%& ݰ$̍$%& ݰ0T0Hk)(h0`" 0"0`` ** 8 kH$֍H"֍H!"h6`" #Ս8֭ ݰT8``0)6ɳɵ \(8`(`᫫ּLսJHN "ް i Hk "ް( "ް@ "ް "`HHHHZڢ "z`05HHH HHH֢ "h h"Պi `᫫N6HHHP֭*H ";[NhJhL֘ N[mP:kH"` H"`LHJH"᪩JLkhhk HH"`hh`V@,֝X2֝X_`V6֮VʽX֍.֎V`8`V`X.8`کHHHH"\`Z")H0ᪿ 0 "̬؍Ġ̬؍ԲĠư ŠԳ̬؍Ġ̬؍ԳÍà̬ؠ ̠űŰؠ ؠ 占ؠ 捠̠űŲؠ ٍ؍؍؍ٍٍؠŠԴ ٠ŠԵ ؠ ㍠ƍԠ̠űŰ؍؍؍ؠŠԍưƠ ؠ űİ РĠƍ̠űİؠ ؍ؠø ŠЍÍà ҍРؠ̠ð̠̍ؠðРбؠ РĠƠ 占 占Р̠٠ð̠̍Р̠űİؠ ٠ ŠٍŠō؍ؠø ŠЍÍà 󍍠ؠ÷ РĠư 占 占Р̠٠ð̠̍Р̠űİ؍٠ŠٍŠō؍ŠЍРѠĠ ÍàбĠؠ РĠƍР̠٠ð̠̍Р̠űİ؍٠ŠٍŠō؍ؠøŠЍÍō٠ðٍ̠ڠð̠ؠð̠̍ððӍ̠ӠנҠӠӠ#DREAM.DEMO by CROLL G"BLOADDREAM.LOGO,T$C0,A$1000"V"-DREAM"]^_`abcdefghijklmnopqrstuvwxyz{|}~BBDB"##UffveC3"#""2B"#"#3C"B"44T"#eECEUVgxBBFBBvwvffgBfeeUUC4"D %fc#4DEjUBfUBB"3EBeU3D"#C"3""B"2T#!#22DDfVgwBFFxBwBf vefeUUCC"!D"UeS4EViUgwvfuvvBB !"#DETTCCE"3B"#2"!"2""$3""2"5TUhDFBwwBvgBfeeEC2""!WfCFWyvwB "#34CS22D"3B"#2""2""31""!""5fVgh B™BwvvgDfeTD"!!DfeFfxEBE!E!"B"332B"!"D"#2"!"#B"!"#B4VfxxEÙxw vgffeUT3"!#FvffyEB!B"""E"E"3B"B!"#D2"!2"2DD5WgxBDExwwvgfgfUU32!"4effBBB!!!"""B"22"C2"#32"4""#4"!!2""##EEVvxB™BxxwwfvgveUS2B!B$UfgBFB!""#"""#"2#C423#3"#22"5B!D"""3DUUVªDwwgvwfeUTCB !!"DVhBB"B""2##D"2#"##BDC5BDDB"4#"$B1B #5dB"3DEWgwBwvffUS!B !#DFhFB""##32C3"B##23#$EETTEEUD3"C""22!#!2DBD4EUfwBBÙBxxwvffeT"1"EExFB"""3BCDB343CCDEEUTD3#2"#!"4$CT4EVwxBDB EBwgfTB!D4DhFB#32"##"33#C3D4DUUTUDEFU#eUeeVUSB2"""#"#!$R"4EUVgBDB xgwffvUS!D"eUhDBCB3C4DCDTDEEU(fVfefVgfggffUD3""2""2B"!U"CEEfwBDBEDBwfUS!"5ExBDDSSTEUFeffwfvgBwvweTD3D"!#523SCFVfwE  DEwwgfeT1"4ExB EUTUTUVVUfVgffwfBv&wwvwwxwwUTCB"#2""!$DR"TEFVfxF BBBwvfuU2"4EyBVffVffvgvvwvwwwgxwBwvUU2B2"2"!!DE!"#FVUWgx»B BBvvfvU2B""3FBBBWfvwBgffwgvgwwvwxwxwxxBxfUU$3"3"!"D$S"36fWWwDB»BBxwwgffe2BB"3WBB wgfvgvgvgvxwxwwwxB xvUT3"#2!"B #TDUD3Ufvw˻BBBBwgfeBB"#3WBwgfwgvwvgvxxwx wfUSB23!""B5DEfFffwwB̼́DDxwgfeB!"#4WzBw vwxwxwwxxxvUT3B"!""B!#ET5UUVwxB˻DBDxwgwfS!"##$g˪BBFwxwwDxfU53B"#!!B ##f4EVWg ̻̻EDDwgfC!"$#5xEBFwxFB wUe42""!2 $"46eEUfgB̼˻EBwgfT!"3ExDBwwwwˆ$VdC3"""1!$$DxeVfxʻBDBxwxwwweT!""CUFBBwxvwˆB wuVSC#B"4"!!CCEhwBBEBwgw fT!"DVBwwFwuf3B"!"#BB!$ESGwBBwBw veS!"5fBB wwxxwwˆB gu32B"42!##5TEhBEDE wBwgwveT!"6gBBxxxwˆfd3#""#S"!"#B#5UfwDBBBEDwwvwwveT!"4yBBxxBBVcD$""$R!#"T"#EVx̬݁˻̻BDxvgwvgfvT!"5yB̼BxxDEBBvVBC ""D2!"B" $S#DVwDBB˻˼̻˺BEwvwgwggfT1"F ˻BBxxBuVCCB"#D2!!""2FSEfxEBDB˻˻BxwvwfgfvT!#V̻BxxEee54"#34!!""2"4VVxEE ̫E'wwvwgwgfU!!3iz˻Bwxwxˆed5C"33C!"C#"FvxDB™BwvggwgfU!#3zD˺BwxxwFB VSEB3$2B!#$2TUgyEBEBvwvffgfe!"JiBBBwxBDByVCD32C#2!!!!"BE4ewEBBwwvvffU2&uiDBggwwxE%eCD33B32"!"!#DDUẂ˻DBBwwvvffT2#vvhBBfxwFBfTC3B4"32!"!B !"3UegBBF B wvwvvfU2g8ɘvxDBUVfgwxBvgeT44C3"2"!!"2CUxF EwBw veC4"ghxBUUffwxB'wfueTE5B2#2!"!!"3UwDwvwwffB!(WfhwgxEB TUUVgxDvVefSEE3B"2!! !""$FzBFDBFBwwvwwfeBXfgvggxBB(DUUVfw̻vVfeCTU4"3"!!"DB"5gFEBD"xwgfeR7uhvfVVhB TETUVxBBwffv4ST4"#"!""B""EwFEBBBExwgffTz˄5uvfTUfB DTCTVwBB vtDTT""3!"!"""VźE̻ªFBDwwwvfx2GwegffdUfwBB DDCEVfxBBTEFC"3""!!"!"4gD ˻FBwgb#ggfgudtFfwB&DDCDEVh˻TDVS"22"!D"!""5xܻE$xwxww"4ffhvdGVVxB&CC4CDVh̼̻DSSB#"2""!""#FwۺwvwvwfVWgEBBwwy1"FeVev s%vfxBC43C4UgxDDTS2#""""!!"!"$ViDDۻwvveU4$5D$#DEuvBEBDxxf5Uvxwe4ivwBDB34UegwEEC""#!""#T1""#4VE̪wfeedC22##3""C#UfvxBBDwxwxB%t5UueDfxB"43324EEVgwwx˪dTUC""2B" 6xd""""#4VE̪feS23$3""2##TfWD wBẇ!V3EEvwwSEVwBBBB3"4U(VwxʺDDT2#"2""!'S"!""24hܺwe43C43#"##D EVxBBDwwu"$S"EFvwcDUvhwBDB34UVfwwvww̻44TB"2B" %t#""##Dx!̼˻˼˻wveTTDC3CDTUUhBB(fvgwfwwx̘vA42#EFvxeEVvffvxB34EUUeBfxwvx˫DEC""$D" zB2"#4UyB˻B#wgvfUeVUUeffhvfVfgwyu$A"4SVuUUgeUggwB34334UVeBfgBwxB ʪUDE2"3D" IS""34VB˻BgwvBwgwwvhxDB)wfUDC33#3EVyʙgb"5TWxeefdDUVfvB33##DUVeDfwgxB ˺TET2"3B"4Fc#33EWE̼BwvgvwwwwxBBueD#D"#6xhvB#5UgwxwBe3$4TeB#3##4UVVeUffgwfwB CES"#"3B" #DEzdCC3EgDBEBBBwwgwwxxwuE2B"!!"GuVwv1!"EUfwxfTU"##35B#23#DFUevvhEv3E3""#2"#"$UEYtC34FxBDvvfuefvfggwwxBB vUC2B"!"$z˕EDUU"#E5ggxfT42""23B""#"4EUUDCDDUffwe#U2""#B" #4UUXuT35WyB˻BvfEC$D$DEUffgwxxBBB%vUC33""!""8d##DE"$TEvwyvT"B""B23#34EUUC3CBDVfwwwvxgc4TF" #4UUWT3Eg݁BBwd3B#B" "##$UWggwBDxxwveUBE4425ɧ2""3D"$TfvwzvS2B!B#B"3EUUT33#4VfgwvfgfwVBTBF"4DBUTEFW˻BgT3""E!"4VfggwxwvBUfVeBTzT2B"2!"5TVwvvuC""!BB"23EBU D334UUfwfeUT#D2!B"""4UffeweUUxB˻uCC""FD"5UfgvxvvefeBUeUUXTTEC33!"ETVwgwfeD"#B"#"33EBUC344UUffefUTCEUC#3D""#EUBfyfUUyB v332"!E"#EVfwwBwveVUeeUvUUDDS3""UEfvgwgfTDC"!!B"#"#4U&CC344DUUTEDC5UT3#2""2#"$VffwwxeeVx ̼D322"B#4Ufg˺wuUTTEEBUgvffeUS4!"TFWvhvfUUfvT2!BB" #3EUfeTC33$4D335TD332"#"#"5ffgweVvUgxBT4""#B"#33#EVfx˺vUDD4DEyBf eUVTS!$CVhfgBUgS"B"$EBfTCC3#3DDB34DTC#32!!B"23gVfgeUFxvgwD˻eCC#"+!"!#232""$3C5Vg˺weT33"!""(vfVBfeUR46efuhuUVfuB!BB"#3UfwveT32#33DC3BDT23B""B"24eBf eUVwwBgfvfvfUDDB!##"94DEVw̺e32!""e4TVUUfeE25UUWeeUfy˹T!B2B"4EVgwUTCB3CD33C4TS332""""#"EDfUVx̻BwfuUDU3"C3"#""#EVfwB,̻T"!"!"Ze2"#EEUVUUC#UEevVwwܻu"B"$EVgveTCB3 C4C3C4DBC2""!!""#"EefVffUU˻ xvueUTDUBE4D3UgwܻB""W2!""#$DVUUB$DFUfWxxܻu"B"#EVfweTC3 D3D4DD3C2""!B"2#EVeBU VUxx̼E vffeVBU EeUfxxB˪B"BFcB""4UUT#$3UVeh̹"B"#5VfgfT33434TBEDCEB2D"#2#EVBU VVexx ̼˺vvBfUfVBfxB̻2"B#jU!!"2UET"$6UFuh˩u2"B"#4VffeDC#33EUfvueDTCB" ""2"$UVVUBV f{y˼ wwgvVefeBfB#˪"!!uC!!"#ET"!5DTgVxBܺeC#B"#4VffeTC43TgxeeT#B""$"%Vefefgfv˼̼BBBvfeUfB#˺2!!$d""!#43""4VVvgxB˪UT4B"#4UffeTDEFgyveS2D"2"%DfwvwʘB˼D vfUUTBUg˺C!##yv2""##"B""4U6ehyEUTTB"#4UffeUewUVS""B""%wfvfvwx˘B́xvgveUUETTEg̻dTThUC2"!"B"DTVfwDvffgB"#DUffVfg˺Uf32D"2!%xvvg˨̼wvfuBUTUUViBB ˻TEXtDTCD"B" #TTefwyBwfwxB" 34UUfVwyBxu32B"!"B!Ehxww̨˻ ̻˻vffVDUVw#̻TWuUUTT5B32"2!!"#DUehvyB xB"#3DUUg wd3"!""#2DXx̨ ˻vffeBUfgܻwd4EUVeDUDCC2""#EUUhfxBBD",3EUUg̺evS"""$"EF˗˻ ̻wguBexDܺdS34UUeUD3""4EEUwfxBBD",3DUUg̦xuB"!!!3"Ffx˺̼̻BwvwwB ̺S3"3BDUUVUUT3"#4eEfghBD".3DUUgwd""!"3"Gwx˻ˈE˺B?̻fC3#34CDDUVUT43"""#ETVwfxgBD"3DUUg˶eS"B"2"7xܺˉ̻˻̼B,̻eD3#4CD34TUED43"""#ETWfgwUgfBBvB")##DUEW̼xT3!"2"7ܻˉB˻B̼BFB,̺UT343DC3DDCDD32""##DETgeggUWfvvwxwwgBD"3DDTUxC2!!#"BBܼˉ˻BDD̼̺TT443DCCDD3CD3B" $3DEEVgvUUeBfggfhwvvBD"3DDTEggxdC"B "!#"BʙDDD˻̺BTC4DDEDCC3322""4#TUWvVwBUVeBfeeBB"#"344EUWgxwVv4#""!"2#S"zDʙBBEBB˻̼B̺eDUSEDEDEDD33#2"243CehUfwxU TEDED4UUTBE"4DEBU VgVeUT22"B"33$S"!zEʙBBEB ˼˻˼BD ̺eEUTUDETUEBD T#3"D3EeyVfgxU TDDECCUTTBD"3DUDTUEEUeU322"B"#2$C!!JE˚BBDF˻˼DB̻uEUTEU S#2cDEeVWgxBe UTC4DTETTDBE"3DEUDC32EDT322!"2$B!9D̻BBD̼ ˪UUVfUeFU TC$eEFXueVWxBv fTDTETEDD4BE"34UUD332T433""!""!B"#B"'FBDB˻BBܺBUVBfeeUfBUS5DUeXeefWxfeeUD3C4BE"#4EUD334U42##"""B"#B!!$EܻB˻B˻B˨eUBfvDfeUUSW4UeUefgxVeTCCDB""!B"#CETD33ED3"2D"!B"B"#2"""lDʫBE˻E ̺UUVffgfefeTV5VeUefgxB vfTC34BE"33DD3#243B"CB"#""2B":ʻF B*˺UTfUfgvgfvffgTu5fiVEfXxfT334BD"##CD32342""3B""!""E" !"$ʻDDD,̻UefefwggwfwgfEe6fyfV5fWxfT334B"" ##3C223D2"#3B""!""#"ZBB˼˻EB+̺UVgvvgvwxwwgeWdWfvTEegwwvCC#3BF" 223"#4C3""3D"!B"2""!!"#"$̻DBBBD*˪eVvvfwxwxeW5gfeTEUfwhvuC2#4B"""4EC32"3D"!B"#""!!"T!6xB˻̼̻BD*˪uffvgwxxvfhFwieSEUdeVedB##3B!!""4U3D2"2"!B"#B"!"B5vfz̼˻̻FB˼DBDB̻vefwgwwwvwwzfUT%5cSDUfVTD##33B" !"#5e5TC#D"!B"##""""B25TSCiB˻̻̼F̻˻yD+̺vUfwgwwwvwxveUR6FC"#44DDTD$"2#33B!""B"$EuVTCD"!!B"#2""#!!"33X˻̻DFBBx̻wUfgvgwxwwfeVRV6"344D3B"B3B!"""""#EuWUSB""!""2"#2"!#2!!!34GB˻E w̻eVfwwxB xvfgeVBV6!B"#B2""##23BD"$fuheS"B""2"41B" 32"#EGB˻˻ ww1̻̻wfUfwwxwvhgTfETR""#"22""3#24BB"!"D $Vhue""B""$EB"$5B"#!#EV˼DDwxB˺vUfgwwxghxfUe5T2B"2"##23CB""""D$XycB"!B"$V2""$EA!"5!"$UU˻wwBD$wUUfvgwvfUUFR""332B"3DDB""!""D#fuyB!!!!""#UC2"$VRB" !"$Ufz»Bw˻wvwUVVggxwfvFfV!""#343DD3B"DDEB""!!D "FUh3!!""#fSB"$WR"#"!"4Vf˼DEvgg˪u3X weEUfgBwvxwfeEe6""4EeVVUUT3224TEUB""!E'#EVX2!!"$vT2"5VR""#5gw̻B Fwvf˪wUVgyBxedDUVfwwxvwgVeVeVUUfBwxwgUS3CEBUB!!F*#EfguB!"!!"!44vS2#%VQ""2#!"Egx˻ wfvBBwB(vEDDUVfwyxfWfTVgfwxvTDEVVUUB!$#DfgS2!"""EES2"%VQ"2B""UgDBD wffxBBywvdDEEUffwxx wfhvfUVgxD TEUffUUB&#UVfC""!!#"UeT""%WQ"2C#!fBDFvfgyxxwfeDETTUVfgyBxxvfUWE UeefeUVB#TVU2D!""WUd""5fQ"2C2#hwvvgx"˪wvgfVDCDEUEVfxwVfwgVEhD ˺ffVfVUWB%3DUE"!"!""GeS""6fb"3D"#hBDB wwghD ˪ggfVfUUDCDDUEUghvVUwgUFyD ̺ffeBUWB&"CE3"!!2!6fwT"#5fr#ED"!#x˙EDBB wxxDvfeUEEDDEEUVgxywfVvfUWE˺vfeBUgB #C3""!B"!GwfT"3%uc""5T""#iDBwBfVTUTDUDTDEVgvgxefFffUX̼B̺vfeD4UhB"23"!D"!GwfT"2$vS""6T""#yBEB B weTCDDTDVhXhwEeGeeUXB ˺veeD3VhB*"2!"!#!FxeT"#3ve""6T""#yBD ET4B4D$4DUehvxWEeVeeUh̻˩ffeC#WB""!!B"B%!"3!&xeT223Wf"#ET2"#i˨  ̻d4334ED%C34UUgvhR6UffeUi˼̻vee3#WB32""D"B""2!"$geDB"#fw1#UT""#z˨ªB F eTCC4D3BDTC33VVffef3fUUfUU{D̺ffT"#gB D3""!!!"B"!!$""#xuD2"#FfB$5D"3#jªB ˻eBUTTBDTD33UUVWVd$eUVwfVB ˩wwfT"$gBU332"B!""B" #3"""We42#"GfS3%S"#4zBªB˻Bw fVUUDDTD3CEEBV T5eUVvgVD ʘvfS"5xB VD32""!E""42B"""WfD2#"7Ud5C""3y˻Ī BB!˺xvfUEETCDCEUVUUSFUeVuggD ̪xfS"FB fTB2!!!!""#EB"!"WuS"#"4fd!4R""#y˻DªBBvffeUTTED5eUUT3ffeVeXF ̻xT4WB fTB"!!!"!"!"D4""!!"GuS2#"4fe!#B##y˻F̼BxxhDfVUECTEeUUT$ffeWftjD̩wxUUgB gT2"""D""332""!""DFuD2""6vV1"""#iD̻DveVDUVTU4CUD6ffUhfekBB̺vvwyeVhBwTC"#D"##2""$22""!"$TFvEB"FFUB"""$iF wwggffDU EUUTUUTUEDBU SCVVeFwfV{BB̻ufwefhBwdTDD3"32"442"!"2#B""DUUvE2%E6UC"!"#iDDgffxwveUEUETTSSDBTETEEDUTUU2DffeVvfVDʩuUVhwfVhBwfUVBU DC3DT2"!##B!B"#DVTfEBT45eD"!##iFBweB2EffeecCET3EUUTBD4"##DED5UDVS3EvfTvfvZveUUhfUhBwwffwgfUS2""2#"#$FfSVUBD25EfD2"#ix7eB1##$ED3DUeUDUT3B2"##23FEEeS3VffEvfv|B˻UUDExeDhB5wwxwvffVS2"!#3"332##UgTC5UE3"5EVe2""XBvTC"!#DD3EUUTDET3C""&"#TUUeC3gVeWff˪weUDDFxvU4hBBB/vgS!""34C423"EWeTCEVS""5EVeD"""XEvUDC2"#"B4C#EUUS4UT22!"B'"$DEVe45vvfufh{̺veUTDEFwwfU5BwB.wS"#VTD24"5FfUTETUB""%UEvT""XFfeUveWxe2!!"4UEB4DC""D "#TEEUT4WgfgBf˪veUTEDEfwvfUBWB7gB"#WDS2"$CgeDDEC422"%eTvT2!"GwªvfggSB"#TD24D2"(!"4TEUUCEghvwgfv˩eC4DDEEeffeT3hB5gsB"EeS$C"#UUeeDUC2"4!"$uUfTC!"GwBB wwxxBgS"!"22!##"B!"#4EBUCWwwxuwgy̺uSC4DEUUeC%Bh C#EeC#31D5fBU"EU2"3!"gSDU"6vxFxDveT3"DD"'#DEeUTEgxwwfwhʘuS323EEfUfDUT2GBxu3Vf3$DEUeVUEES"!3!WgT%UB!!&fwiEwE ̺xweT"B#-$#"2""$DVUUTFwgffg˸UC33DDVUeVT53$hBxfVeDSUEUEUVVTUECB"3"HwU"DS"&yfwxDyE weUBE,TC33#4UeUeEXwxffefܺVDCC3DEVeeVUC35hBBfwfUUfUffeUDBT"54D32"'wd"#D2%yDvgwBBBBwBf eUC33UfUVeFvfUVh̩fTDTDCEUVfBUC35xBBxefT$VfwxvfTDDUCDWBwdB"!%u23C!%yD vvwBB;gUUD4DVeeVUivuUUV{ݼeDTUTDEUVfeUT33Eh̻B,feUTfxxwvU"$T2gvS"!#fB"3"$ xwVfxF)veD4TfUUWhyffUTg̼S4BUEEUVgfeTCDEgB e46wBT2$T3hBvd"!"xgc#2#hB wffgxBBD!vUTTVeTDgigfeUEW̻uDEUeDU VeUUETUgxBvdUgxwe3DS$ye"BXvt!#"#XveUfBBBFfUTDfUTEvzffVUUV˩dDUUVU UUTUUgxBBUVfeTEieD323YBu""!"Uv1""GxBwfeUfgDFB BwwfeeUTDTU4WhBf UCUWfTDUBUVUDEBUffB2""4VxxvU3#4gBeB!!DIxR!"%hweUefwExxwf&eeUTDUDCEgVfeU4UidDDEEUUEUETUUeVeBDTDFEBDB"FfvdEgeB3UXE uB"!"TuB2""GvfUUfwwxwxwffUVVfBUTD4fhvVeUC5UzuTBDEUUTEUUVeeUEUDTDUUB<33##FvwwgfUUEWfS""TY1!"4hvfUTeehwBwfvvfVUVUeBUDDED45feVUTCEEUUDDUEDDTBUeUUEDDEBUBfU3EgxwgxxVUTgB weS!T!bB""GB wwfeTTUggxxBDBvfVffvfFUEDED4EExUUTT#TWB UTDE4CDTDUTEDDEBUBuUfxwgxwweUWvfS!D"H!"3gwgfeTTEUggwBDBvefeUeFUDTDE3EFVUVUC3#TWBdDDTUEDCDDTBUBggB wgxBvfC"4!#QB"&xB fvfeUUDEVfxDB'vfeeUUDTUEDDEDDECCEVxUeCD33TgBuTBDEUTDCCBDEUUBBB2eT"3!6"#!"VvffeUDCDUgxxB ffUUTD4CBDTUCTEWeUc4434UyTBDTBUTEECCDUUB DfT2#1Xb#12vBwvefeUUT44Vgwx$wfeUDCB33233DCDETDEUyuEUD433DExBBTDDTU TDCCDDC4DDBB DE wU2"BV#3"%fwfvffeUUED3EVfw wgffdTT3C3#B3DEEDUXTEUD343DEwuDDDUBTCC3DBBF eC""c"4DC"FfeffeeUUTCC44fwxBweeUD4D3DECUFVDU343343ExxBuUUDD34DD4BB uS"D $b3EC"!2EUVVU TDC335fwE xfUUDC4B3 ES4UiWuTUC4B3 D4VxxB eTETUVVfeUTDDB D̼B ˻fT"!"!D 4UETC!"3UUVeU DDC33EVwx"veTUD3DFtDUXuwUUT4334CCEVxBeBUVffeUEDUBEB̻fU2"!D $fUSB!$UVFUD33DUgxDE&fUUTCUDUUXuUUT3#C4CCEgwwxBUffgeEUTBBED veUB"!B "##EUDC!"5UBD4Egx vvfUVfBUzxfgDUd33434E4UhxB UVffgffeUDBED˻veUC""!""D34TC2!DFU EETTDVgxBvffwBUiefcEUCC34E4TEVwxweVDfDUTBD˻˻eTC1!"!B "4SEUC3B""EUUTDDfwEvgeUVWvvf3UT4334EDTEVBwBVfVBfeBUETBBB˻̻eTD2!!!!"3TTUTDC$"35UTT4EgxDBvffVWffc5U3D344TDTUVfvww vVffeeUTUDUBE ˻̼FB fDD2B!"3EVUTTBD22DU fUUTUDDVgyDBB wfvfVfv4FS3C#DECTTUffvwvwwxBDfeUDTDUBD˼̼FBvTD3!!!!"$4VUTUUDDUVEUDfhB!wvhxvufdEV3C34DUDUDEfgfvwxwxveBUTBDUBD˼EBUCC!!!!"$4UUeUUTDEUUUEBUVVwBB vevUUT#344BEUEUfgfvgxweDUDDUBB˼eD32!"""4EUDDTTDUeUeEUvxBwwvfuVTB344BUFeUVBf vggwxxBeFUBB̼̼BDvDB"!!B"#DBUVeUTDUTFUVFUgxBBxxgfUVeC344EUUTVeEUDf vgxxveDUVBBD˼B̼BD UD2!!D"CEUUVUUEEUUVFUVfxBBF xewUC43DUfUUefgfwwBuVBUefBB»UC2!F23D4D3DC3CD4DDD3D34DDUfwwBBwgwwxxvwwyfB33DBUVfveUffeBfvBwB fggffgBB 816/Paint DF"3DUfw DOODOO'^^UU^^UUBD@BD@DDBD@BD@DDD?"3DUfw wA,p   ?wA,p     ?wp w @ I   ?wU __ _Z "3DUfw 6H)H6A)0 '"h )H) )hH) )hH) )h8ڻ бЩ H)h8H0)0hH) 00ᬡh8H) 00ᬡh8H) 00ᬡh8h)h6`TEDITv' 'WTEDIT.P?* hWTEDIT.R * LUTEDIT ,LLFINDER.DATA6TT p PROGRAMMESv3' 'CUSTOM.GS.OSZw9 7 POLYGONIAPjANGLAISG DD3DD333308D@DD3؈DD3#031D@DD3ۻD@3#031D@DD3DDDD3000D@DD3DDD@33݈30303033#303133#30313؈3#333313333""""""""""""#030"("("("("("("""("("("("("(""333333333333#00338383838383833383838383838333ӈ3333333333#030333313838383883833;838383838383333003;۸ۈ033۸3۸#033؈߈#03#("0303030312;(31;"2803303333313#3322"0330""0333#;2؈"03300#130"#1-0313#22؈#1#31۸0"#=3#+(݈"03("02822"0#10"#13##1903122";0310"0-031߻3#0(ݻ8#1#1߻ۻ#(222222"0#1ݻ3(0"0"0""0#1ۻ283#3#3#"0#1؈߻؈߻""""""""""""؈ۻ333333333333؈߻߻333333333333"#1"=#1ۻ߻"=#1ۻ؈؈ۻ-("#1۸؈#1ۻ8߻3۸#3ۻۻ0#3߻߻؈߻؈؈݈؈0#3ۻۈ۸۸؈؈ۻ߻ۈۈۈۈۈۈۈhۈظۈۈ۸؈۸߸ [z  PL (a`P]* %r`d PYOYOPYY]WWWeݼ7"U\DeDD Dw  Art.Custom.GS.OS Traduit de l'amricain par Y.Gobin, documentation originale dans le sous-dossier CUSTOM.GS.OS du dossier PROGRAMMES. (Pour vous aider dmarrer, nous avons inclus un fichier GSOS START dj modifi. Vous le trouverez dans le catalogue CUSTOM.GS.OS. Chargez-le pour avoir une ide de l'emploi de CUSTOM.GSOS. cet exemple est destin aux systmes 5.0 ou 5.02). CUSTOM.GSOS DOCUMENTATION Paul Gauthier 10 Novembre 1988 Revue en Septembre 1989 pour le Systme 5.0 Revue en Novembre 1989 pour le Systme 5.0.2 PRESENTATION ------------ CUSTOM.GSOS est un programme qui vous permet de personnaliser l'cran de dpart au boot de GSOS.(Les Disques Systmes 4.0, 5.0, et 5.0.2 continnent un fichier dans le catalogue SYSTEM dont le nom est START.GS.OS. Dans ce fichier, parmi d'autres, se trouvent deux petites images qui sont affiches au dmarrage. L'un d'entre-elles, est la reprsentation d'un ordinateur avec " Welcome to the IIgs". Ce programme vous permet de remplacer ces deux images avec des icones de votre choix. Peut-tre voudriez-vous avoir une image d'un bug ( bogue en franais acadmique) avec une ligne prcisant " Qui trouvera?" ou peut-tre une de vos images avec ce texte: " Et ta soeur! ". Ou tout autre chose, comme un message d'aide pour vos copains. Votre icne personnalise ------------------------- Comment faire ces icnes? Avec un programmes de dessin pour IIgs ou bien partir d'une disquette de dessins ou bien, encore, avec un scanner comme ThunderScan. En fait, toute source qui produit des images non-compresses est acceptable. Avec Paintworks Gold, ce format est appel Screen Format. Et tant que l'cran de dpart du IIgs sera en mode 640 (Ultra Hi Res- Ultra Haute Rsolution), l'image sera interprte comme dans ce mode. J'emploie le mot interprter parce que si l'image est en mode 320, l'image restera mais aura des couleurs assez spciales. COMMENT LANCER CUSTOM.GSOS -------------------------- L'objet de ce programme est de remplacer le fichier START.GS.OS dans le catalogue SYSTEM par une copie contenant votre propre image. Vous envoyez le fichier START.GS.OS, entrez votre propre image et vous dites au programme o trouver cette image et vous obtenez un nouveau fichier START.GS.OS. L'image la plus grande ( celle de l'ordinateur) est dtermine par la place d'une bote (dirige par la souris). L'icne ("Welcome ...") peut tre change en la dplaant ou en entrant un nouveau texte. Si vous ne voulez que changer le texte, ne vous proccupez-pas des images et slectionnez "Set 2nd Icon by Text" dans le menu. Entrez votre nouvelle formule ( pas plus de 19 caractres) et validez votre nouveau fichier. PAS A PAS --------- Etape 0. Soyez sr que vous avez la version du GSOS que vous voulez modifier. Pour modifier un fichier qui fonctionne sous 4.0 vous devez envoyer le 4.0. Pour modifier un fichier dans le 5.0 ou 5.02 vous pouvez employer l'un ou l'autre. Etape 1. Avec l'option Open START.GS.OS File, entrer le fichier START.GS.OS dans le catalogue SYSTEM. Etape 2. Dans l'option Open Picture File, lire une nouvelle image avec votre nouvelle icne. Ce fichier ne doit pas tre compress ($C1). Etape 3. Utiliser l'option Select 1st Icon pour mettre une bote autour du morceau de l'image qui servira de premire icne (la plus grande). Presser le bouton de la souris pour voir le rsultat. . Etape 4. Utiliser l'option Select 2nd Icon option pour spcifier la deuxime ( plus petite) de la mme faon ou l'option Set 2nd Icon by Text pour entrer un texte ( 19 caractre maxi). Etape 5. Utiliser l'option Show Icons pour vrifier votre travail et l'option Save GSOS File pour sauvegarder une copie du fichier START.GS.OS avec la nouvelle icne. Etape 6. Renommer votre nouveau fichier START.GS.OS (dans le catalogue SYSTEM) et recharger. Exemple: ------- Les fichiers START.GS.OS.4.0 et START.GS.OS.5.0 inclus dans ce logiciel donnent un exemple de ce que vous popuvez faire avec CUSTOM.GSOS. Pour les utiliser, donnez au fichier START.GS.OS dans votre catalogue SYSTEM un autre nom et renommez START.GS.OS.5.0 ou START.GS.OS.4.0 en START.GS.OS et relancez. Attention --------- Ce programme supporte un format particulier pour le fichier START.GS.OS, format qu'Apple pourrait changer dans les futurs disques systme. Si l'implantation ou la taille de l'icne changent ( comme cela apparat entre les systmes 4.0 et 5.0), l'utilisation de ce programme pourrait non seulement ne pas donner les rsultats escompts mais pourrait provoquer des problmes lors du chargement. C'est la raison pour laquelle il est primordial de conserver une copie du fichier START.GS.OS original. CUSTOM.GSOS fonctionne trs bien avec les systmes 4.0, 5.0 et 5.0.2. Notez que le format du fichier START.GS.OS file a chang entre les systmes 4.0 et 5.0. Cela signifie que vous ne pouvez pas utiliser le fichier START.GS.OS 4.0 avec le systme 5.0 et vice-versa. Custom GSOS recherche la version qui est utilise et cre le fichier dans le format appropri. Ce programme est en Freeware. Pour obtenir une copie du code source (TML Pascal) envoyez $15 : Paul Gauthier 67 Sleigh Rd. Westford, MA 01886 Commercial applications (c) Paul Gauthier Nov 1988 (c) 1987 TML Systems, Inc. Certaines parties de ce logiciel sont sous copyright de TML Systems, Inc. Merci pour vos commentaires. America Online: PGauthier Apple/Boston (BCS) PGauthier. =v CUSTOM.GSOS DOCUMENTATION Paul Gauthier 10 November 1988 Revised September 1989 for System 5.0 Revised November 1989 for System 5.0.2 Overview CUSTOM.GSOS is a program for the Apple IIgs that lets you customize the startup screen that appears when you boot GSOS. As supplied by Apple, System Disks 4.0,5.0, and 5.0.2 contain a file in the SYSTEM directory with the name START.GS.OS. In this file, among other things, are two small pictures or icons that are displayed when your IIgs is booted. One is a picture of a computer other contains the text string "Welcome to the IIgs". This program lets you replace those two pictures with icons of your own choosing. Perhaps you would prefer a picture of a bug with a line through it and the text "Who ya gonna call?". Or perhaps a picture of yourself with the text "You are HOT tonight!". Perhaps not. At the very least you can expect to impress your friends with your computer expertise with the help of CUSTOM.GSOS. Your personalized icons Where do you get these icons? From a IIgs paint program. From collections of clip art. From a scanner like ThunderScan. Any source of pictures that can produce output in standard, non-compressed, image format is acceptable. With Paintworks Gold this format is called Screen Format. And since the IIgs startup screen is in 640 pixel mode (Ultra High Res), the picture you use will be interpreted in 640 mode. I use the word interpreted because it's perfectly ok to use a picture with CUSTOM.GSOS that was painted in 320 mode. The colors will come out funny but the shape will remain the same. How To Run CUSTOM.GSOS The object of this exercize is to replace the START.GS.OS file in the SYSTEM directory with a copy containing your personalized icons. You will input the START.GS.OS file, input a picture containing your icons, tell the program where in the picture to find your icons, and then output a new START.GS.OS file. The larger icon (the picture of the computer) is set by positioning a movable box over the picture and releasing the mouse button. The smaller icon ("Welcome ...") can be set in either of two ways: by positioning a movable box over the picture, or by entering a text string directly. In fact, if you just want to change the text that greets you on the startup screen, you don't have to bother yourself with pictures or icons, just input the START.GS.OS file, select "Set 2nd Icon by Text" from the menu, enter your new text (up to 19 characters), and output the new file. Step by Step Step 0. Make sure you are running the version of GSOS whose START.GS.OS file you want to modify. To modify a file that came with System 4.0 you must be running under 4.0. To modify a file that came with System 5.0 or 5.0.2 you must be running either 5.0 or 5.0.2 (the formats for 5.0 and 5.0.2 are the same.) Step 1. With the Open START.GS.OS File option, read in the START.GS.OS file in directory SYSTEM. Step 2. With the Open Picture File option, read in a picture with your new icons. This file must be a non-compressed ($C1) screen file. Step 3. Use the Select 1st Icon option to put a box around the part of the picture to use as the 1st (larger) icon. Press the mouse button to see the box. Step 4. Use the Select 2nd Icon option to specify the 2nd (small) icon in the same way, or use the Set 2nd Icon by Text option to enter the text directly (19 characters max). Step 5. Use the Show Icons option to check your work. Use the Save GSOS File option to save a copy of the START.GS.OS file with the new icons. Step 6. Rename your new file START.GS.OS (in directory SYSTEM) and reboot. Example The files START.GS.OS.4.0 and START.GS.OS.5.0 contained in this package gives an example of what you can do with CUSTOM.GSOS. To use it, rename the file START.GS.OS in your SYSTEM directory to something else. Then rename the appropriate file for your system, either START.GS.OS.5.0 (for System Disk 5.0 or 5.0.2) or START.GS.OS.4.0 (for System Disk 4.0) to START.GS.OS and reboot. Warning This program assumes a particular format for the START.GS.OS file that Apple may change in future releases of the IIgs System Disk. If the location of the icons or their sizes change (as happened with the switch from System disk 4.0 to 5.0) then using this program will not only not have the desired effect but will probably cause difficulties with the boot process. That is why it is important to always keep a copy of the original START.GS.OS file around. CUSTOM.GSOS works fine with System Disk 4.0, 5.0 and 5.0.2. Note that the format for the START.GS.OS file has changed from System Disk 4.0 to 5.0. That means you cannot use a 4.0 START.GS.OS file with 5.0 and vice versa. The Custom GSOS program senses which version of the operating system it is running under and creates the appropriate format file. If you use both 4.0 and 5.0 you should make two separate versions of a new START.GS.OS file by running Custom GSOS under both 4.0 and 5.0. This program is freeware. To get a copy of the source code (TML Pascal) for this program, send $15 to: Paul Gauthier 67 Sleigh Rd. Westford, MA 01886 Commercial applications (c) Paul Gauthier Nov 1988 (c) 1987 TML Systems, Inc. Certain portions of this software are copyrighted by TML Systems, Inc. Comments are welcomed America Online: PGauthier Apple/Boston (BCS) PGauthier. {******************************************** ; File: TEdit.p ; ; A TML Source Code Library II Demo Program ; ; ; Program By: Vince M. Cooper ; ; Modify by JCD, 1990 ; No rights reserved ********************************************} program TEdit; uses Types, { GS Toolbox Units } GSOS, { OS } TMLUtils, { Special } Locator, { Tool 1 } Memory, { Tool 2 } MiscTool, { Tool 3 } QuickDraw, { Tool 4 } Events, { Tool 6 } Desk, { Tool 5 } IntMa>b>t  |dH@@TEdit.rth, { Tool 11 } TextTool, { Tool 12 } Controls, { Tool 16 } Windows, { Tool 14 } Menus, { Tool 15 } LineEdit, { Tool 20 } Dialogs, { Tool 21 } QDAux, { Tool 18 } Print, { Tool 19 } Scrap, { Tool 22 } StdFile, { Tool 23 } Fonts, { Tool 27 } Lists, { Tool 28 } Resources, { Tool ?? } TextEdit; { Tool 34 } const { Resource IDs } kStartStopResID = 1; kMenuBarResID = 1; kFormatResType = 1; kFormatResID = 1; { Menu / Menu item IDs } kAppleMenuID = 1; kAboutItem = 301; kFileMenuID = 2; kCloseItem = 255; kNewItem = 256; kOpenItem = 257; kSaveItem = 258; kSaveAs = 259; kSetPage = 260; kPrintItem = 261; kQuitItem = 262; kEditMenuID = 3; kUndoItem = 250; kCutItem = 251; kCopyItem = 252; kPasteItem = 253; kClearItem = 254; kFontMenuID = 4; kFontItem = 401; { Alert string ID } kAboutStrResID = 1; kNoOpenStrResID = 2; kSaveChgsStrResID = 3; { Window IDs } kWindowResID = 1001; kTextEditCtl = 5; type DocFormatResH = ^DocFormatResP; DocFormatResP = ^DocFormatResRec; DocFormatResRec = record fFont : Integer; fFontSize : Integer; fTabWidth : Integer; fSelectionStart : LongInt; { These fields are only used to store on disk } fSelectionEnd : LongInt; end; TextBlockH = ^TextBlockP; TextBlockP = ^TextBlockRec; TextBlockRec = record fNext : TextBlockH; fPrev : TextBlockH; fTextLength : LongInt; fFlags : Integer; fReserved : Integer; fTheText : packed array [0..0] of Char; end; TERecordPriv = record fTextFlags : LongInt; fTextLength : LongInt; fTextCachedHandle : TextBlockH; fTextCachedOffset : LongInt; end; TEPrivRulerH = ^TEPrivRulerP; TEPrivRulerP = ^TEPrivRuler; TEPrivRuler = record leftMargin : Integer; leftIndent : Integer; rightMargin : Integer; just : Integer; extraLS : Integer; flags : Integer; userData : Integer; tabType : Integer; tabTerminator : Integer; end; WinRefConH = ^WinRefConP; WinRefConP = ^WinRefConRec; WinRefConRec = record fIsChanged : Boolean; fIsSaved : Boolean; fHasResFork : Boolean; fDataForkFileID : Integer; fResForkFileID : Integer; fTECtl : CtlRecHndl; { Document specific fields } fFormat : DocFormatResRec; fDocNameRef : String255Hndl; fDocPathRef : ResultBuf255Hndl; end; var gMyMemoryID : Integer; gStartStopRef : Ref; gTextH : Integer; gMainEvent : EventRecord; gDone : Boolean; gErrorNum : Integer; gPrintRecH : PrRecHndl; gReplyRec : SFReplyRec2; gDocsOpenCnt : Integer; nameC1OutputStr : ResultBuf255Hndl; pathC1OutputStr : ResultBuf255Hndl; gLastWindow : WindowPtr; gDefaultFormat : DocFormatResRec; gresult : Boolean; gFontID : FontID; gFamSpecs : Integer; procedure DoAbout; forward; procedure DoNew; forward; procedure DoOpen; forward; function OpenIt(theRefConH: WinRefConH): Boolean; forward; procedure ReadIt(theWindow: WindowPtr); forward; function DoSave(theWindow: WindowPtr): Boolean; forward; function DoSaveAs(theWindow: WindowPtr): Boolean; forward; procedure WriteDocWindow(theWindow: WindowPtr); forward; procedure DoPageSetup; forward; procedure DoPrint; forward; function DoClose(theWindow: WindowPtr): Boolean; forward; procedure CloseFile(theRefConH: WinRefConH); forward; procedure CloseDocWindow(theWindow: WindowPtr); forward; procedure DoQuit; forward; procedure DoFontItem; forward; procedure DrawContentProc; forward; procedure HandleMenu; forward; function AskUser: Boolean; forward; procedure InitializeGlobals; forward; procedure MainEventLoop; forward; procedure SetUpMenus; forward; procedure DoErrorWind(gErrorNum: Integer); forward; function OkAnyway: Boolean; forward; function GetDocWindow(nameRef: String255Hndl; pathRef: ResultBuf255Hndl): WindowPtr; forward; {* ----------------------------------------------------------------------------- *} {* ----------------------------------------------------------------------------- *} procedure DoAbout; var ignore : Integer; begin ignore := AlertWindow(4, { alertFlags = refIsResource } nil, { no substitution strings } Ref(kAboutStrResID)); { alert string resID } end; { of DoAbout } {*------------------------------------------------------------------*} procedure DoErrorWind(gErrorNum: Integer); var ignore : Integer; begin ignore := ErrorWindow(1, nil, gErrorNum); end; {*------------------------------------------------------------------*} function OkAnyway: Boolean; var ignore : Integer; begin OkAnyway := false; ignore := AlertWindow(4, nil, Ref(kNoOpenStrResID)); if ignore = 0 then OkAnyway := true; end; { of OkAnyway } {*------------------------------------------------------------------*} function SaveChanges: Boolean; var ignore : Integer; begin SaveChanges := false; ignore := AlertWindow(4, nil, Ref(kSaveChgsStrResID)); if ignore = 0 then SaveChanges := true; end; { of SaveChanges? } {*------------------------------------------------------------------*} procedure DoFontItem; var newFont : FontID; {local font ID record} tmpTEStyle : TEStyle; hTECtl : CtlRecHndl; theWindow : WindowPtr; theRefConH : WinRefConH; begin newFont := ChooseFont(gFontID, gFamSpecs); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); Exit(DoFontItem); end; if (newFont.famNum <> 0) and (newFont.fontsize <> 0) then begin gFontID := newFont; theWindow := FrontWindow; hTECtl := GetCtlHandleFromID(theWindow, kTextEditCtl); tmpTEStyle.teFont.famNum := gFontID.famNum; tmpTEStyle.teFont.fontsize := gFontID.fontsize; TEStyleChange(teReplaceFont+teReplaceSize,tmpTEStyle,TEHandle(hTECtl)); theRefConH := WinRefConH(GetWRefCon(theWindow)); with theRefConH^^ do begin with fFormat do begin fFont := gFontID.famNum; fFontSize := gFontID.fontsize; end; {with fFormat do} end; {with theRefConH^^ do} end; {if LFontID <> 0} end; {of DoFontItem} {*------------------------------------------------------------------*} function GetDocWindow(nameRef: String255Hndl; pathRef: ResultBuf255Hndl): WindowPtr; var newWindow : WindowPtr; theRefConH : WinRefConH; hTECtl : CtlRecHndl; tmpTEStyle : TEStyle; privRulerH : TEPrivRulerH; begin GetDocWindow := nil; {assume failure from the get go} theRefConH := WinRefConH(NewHandle {setup a RefCon for the window} (SizeOf(WinRefConRec), gMyMemoryID, attrNoCross + attrLocked, Ptr(0))); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); Exit(GetDocWindow); end; with theRefConH^^ do begin fIsChanged := false; fIsSaved := true; fDocNameRef := nameRef; fDocPathRef := pathRef; fHasResFork := false; fDataForkFileID := - 1; fResForkFileID := - 1; fFormat := gDefaultFormat; end; { Create the document window for our text file } newWindow := NewWindow2(nil, { title } 0, { refCon } @DrawContentProc, { Content draw proc } nil, { Definition proc } refIsResource, { Ref descriptor } Ref(kWindowResID), { Ref } rWindParam1); { Resource Type } if newWindow = nil then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); DisposeHandle(Handle(theRefConH)); Exit(GetDocWindow); end; GetDocWindow := newWindow; SetWTitle(theRefConH^^.fDocNameRef^^, newWindow); SetWRefCon(LongInt(theRefConH), newWindow); end; {of GetDocWindow} {*------------------------------------------------------------------*} function OpenIt(theRefConH: WinRefConH): Boolean; var parmsOpen : OpenRecGS; parmsInfo : FileInfoRecGS; begin OpenIt := false; {assume failure} HLock(Handle(theRefConH)); with theRefConH^^ do begin fHasResFork := false; {assume no resource fork} (* fResForkFileID := OpenResourceFile(0, nil, @fDocPathRef^^.bufString); *) if _ToolErr <> noError then begin fHasResFork := false; fResForkFileID := - 1; if not OkAnyway then begin HUnlock(Handle(theRefConH)); Exit(OpenIt); end; end; parmsOpen.pcount := 2; parmsOpen.pathname := @fDocPathRef^^.bufString; OpenGS(parmsOpen); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); Exit(OpenIt); end; fDataForkFileID := parmsOpen.refnum; end; HUnlock(Handle(theRefConH)); OpenIt := true; end; {of OpenIt} {*------------------------------------------------------------------*} procedure DoOpen; var theWindow : WindowPtr; isOk : Boolean; theRefConH : WinRefConH; nameC1OutputStr : ResultBuf255Hndl; pathC1OutputStr : ResultBuf255Hndl; pFileNameHndl : String255Hndl; begin {DoOpen} if AskUser then begin gDocsOpenCnt := gDocsOpenCnt + 1; nameC1OutputStr := ResultBuf255Hndl(gReplyRec.nameRef.refIsNewHandle); pathC1OutputStr := ResultBuf255Hndl(gReplyRec.pathRef.refIsNewHandle); pFileNameHndl := String255Hndl(NewHandle( nameC1OutputStr^^.bufString.length + 1, gMyMemoryID,attrNoCross + attrLocked, Ptr(0))); GS2Pstring(nameC1OutputStr^^.bufString, pFileNameHndl^^); DisposeHandle(Handle(nameC1OutputStr)); theWindow := GetDocWindow(pFileNameHndl, pathC1OutputStr); if theWindow <> nil then begin theRefConH := WinRefConH(GetWRefCon(theWindow)); isOk := OpenIt(theRefConH); if not isOk then begin CloseDocWindow(theWindow); Exit(DoOpen); end; WaitCursor; ReadIt(theWindow); CloseFile(theRefConH); InitCursor; end; end; {if Ask User} end; {Do Open} {*------------------------------------------------------------------*} procedure ReadIt(theWindow: WindowPtr); var theRefConH : WinRefConH; parmsRead : IORecGS; parmsEOF : EOFRecGS; TextHandle : Handle; hTECtl : CtlRecHndl; tmpTEStyle : TEStyle; privRulerH : TEPrivRulerH; FormatH : DocFormatResH; begin {ReadIt} theRefConH := WinRefConH(GetWRefCon(theWindow)); HLock(Handle(theRefConH)); with theRefConH^^ do begin parmsEOF.pcount := 2; parmsEOF.refnum := fDataForkFileID; GetEOFGS(parmsEOF); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); HUnlock(Handle(theRefConH)); Exit(ReadIt); end; TextHandle := NewHandle(parmsEOF.eof, gMyMemoryID, 0, nil); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); HUnlock(Handle(theRefConH)); Exit(ReadIt); end; HLock(TextHandle); parmsRead.pcount := 4; parmsRead.refnum := fDataForkFileID; parmsRead.databuffer := TextHandle^; parmsRead.requestCount := parmsEOF.eof; ReadGS(parmsRead); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); HUnlock(Handle(theRefConH)); Exit(ReadIt); end; end; {with theRefConH do} HUnlock(Handle(theRefConH)); HUnlock(TextHandle); { Get TE control handle and add text to control } hTECtl := GetCtlHandleFromID(theWindow, kTextEditCtl); TESetText(teTextIsHandle + teDataIsTextBlock, { Input text is raw handle } TETextRef(TextHandle), { The text } parmsEOF.eof, { Text length } 0, { Style descriptor } TEStyleRef(nil), { No style } TEHandle(hTECtl)); { The TE control } with theRefConH^^ do begin if fResForkFileID <> - 1 then begin FormatH := DocFormatResH(LoadResource(kFormatResType, kFormatResID)); fFormat := FormatH^^; with fFormat do begin tmpTEStyle.teFont.famNum := fFont; tmpTEStyle.teFont.fontsize := fFontSize; TEStyleChange(teReplaceFont + teReplaceSize, tmpTEStyle, TEHandle(hTECtl)); end {with fFormat} end {if} else begin tmpTEStyle.teFont.famNum := gDefaultFormat.fFont; tmpTEStyle.teFont.fontsize := gDefaultFormat.fFontSize; TEStyleChange(teReplaceFont + teReplaceSize, tmpTEStyle, TEHandle(hTECtl)); end; {else} end; {with theRefConH do} TEGetRuler(refIsNewHandle, Ref(@privRulerH), TEHandle(hTECtl)); with privRulerH^^ do begin tabType := 0; rightmargin := CharWidth('0')* 78; end; TESetRuler(refIsHandle, Ref(privRulerH), TEHandle(hTECtl)); DisposeHandle(Handle(privRulerH)); theRefConH^^.fTECtl := hTECtl; DisposeHandle(TextHandle); end; {of ReadIt} {*------------------------------------------------------------------*} function AskUser: Boolean; {Get the info for the file to open} var TypeList : SFTypeList2; prompt : Str255; begin AskUser := false; prompt := 'Open File:'; gReplyRec.nameDesc := refIsNewHandle; gReplyRec.pathDesc := refIsNewHandle; TypeList.numEntries := 2; TypeList.fileTypeEntries[1].flags := $8000; TypeList.fileTypeEntries[1].fileType := $0004; TypeList.fileTypeEntries[1].auxType := $00000000; TypeList.fileTypeEntries[2].flags := $8000; TypeList.fileTypeEntries[2].fileType := $00B0; TypeList.fileTypeEntries[2].auxType := $00000000; SFGetFile2(120, 40, refIsPointer, Ref(@prompt), nil, @TypeList, gReplyRec); if gReplyRec.good then AskUser := true; end; {of AskUser} {*------------------------------------------------------------------*} procedure DoNew; var pathC1OutputStr : ResultBuf255Hndl; nameC1OutputStr : ResultBuf255Hndl; pFileNameHndl : String255Hndl; fileType : Integer; nameRec : NameRecGS; createRec : CreateRecGS; prompt : Str255; origname : GSString255; theWindow : WindowPtr; theRefConH : WinRefConH; hTECtl : CtlRecHndl; tmpTEStyle : TEStyle; privRulerH : TEPrivRulerH; begin { Ask user to name file } prompt := 'Create file:'; gDocsOpenCnt := gDocsOpenCnt + 1; P2GSstring(concat('Untitled', Int2String(gDocsOpenCnt)),origname); pFileNameHndl := String255Hndl(NewHandle( origname.length + 1, gMyMemoryID,attrNoCross +attrLocked, Ptr(0))); GS2Pstring(origname, pFileNameHndl^^); theWindow := GetDocWindow(pFileNameHndl, nil); if theWindow <> nil then begin {Get TE control handle } hTECtl := GetCtlHandleFromID(theWindow, kTextEditCtl); theRefConH := WinRefConH(GetWRefCon(theWindow)); HLock(Handle(theRefConH)); with theRefConH^^ do begin fTECtl := hTECtl; fIsSaved := false; end; tmpTEStyle.teFont.famNum := gDefaultFormat.fFont; tmpTEStyle.teFont.fontsize := gDefaultFormat.fFontSize; TEStyleChange(teReplaceFont+teReplaceSize,tmpTEStyle, TEHandle(hTECtl)); TEGetRuler(refIsNewHandle, Ref(@privRulerH),TEHandle(hTECtl)); with privRulerH^^ do begin tabType := 0; rightmargin := CharWidth('0')* 78 end; TESetRuler(refIsHandle, Ref(privRulerH), TEHandle(hTECtl)); DisposeHandle(Handle(privRulerH)); SetWTitle(theRefConH^^.fDocNameRef^^, theWindow); SetWRefCon(LongInt(theRefConH), theWindow); HUnlock(Handle(theRefConH)); end; {if theWindow <> nil} end; { of DoNew } {*------------------------------------------------------------------*} function DoSave(theWindow: WindowPtr): Boolean; var theRefConH : WinRefConH; isOk : Boolean; begin DoSave := false; {assume failure} theRefConH := WinRefConH(GetWRefCon(theWindow)); if not theRefConH^^.fIsSaved then begin DoSave := DoSaveAs(theWindow); Exit(DoSave); end; isOk := OpenIt(theRefConH); WriteDocWindow(theWindow); theRefConH^^.fIsChanged := false; CloseFile(theRefConH); DoSave := true; InitCursor; end; {of DoSave} {*------------------------------------------------------------------*} function DoSaveAs(theWindow: WindowPtr): Boolean; var c1OutputStr : ResultBuf255Hndl; pFileNameHndl : String255Hndl; nameRec : NameRecGS; prompt : Str255; origname : GSString255; theRefConH : WinRefConH; begin DoSaveAs := false; {assume failure} prompt := 'Save file:'; theRefConH := WinRefConH(GetWRefCon(theWindow)); P2GSstring(theRefConH^^.fDocNameRef^^, origname); gReplyRec.nameDesc := refIsNewHandle; gReplyRec.pathDesc := refIsNewHandle; SFPutFile2(120, 40, refIsPointer, Ref(@prompt), refIsPointer, Ref(@origname), gReplyRec); if gReplyRec.good then begin WaitCursor; c1OutputStr := ResultBuf255Hndl(gReplyRec.pathRef.refIsNewHandle); nameRec.pcount := 1; nameRec.pathname := @c1OutputStr^^.bufString; DestroyGS(nameRec); CreateResourceFile($00000000, {aux type} $0004, {filetype = text} $00C3, {full access} @c1OutputStr^^.bufString); {file name} if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); DisposeHandle(Handle(gReplyRec.pathRef.refIsNewHandle)); Exit(DoSaveAs); end else begin {if not toolerror} nameC1OutputStr := ResultBuf255Hndl(gReplyRec.nameRef.refIsNewHandle); pFileNameHndl := String255Hndl(NewHandle( nameC1OutputStr^^.bufString.length + 1, gMyMemoryID,attrNoCross + attrLocked, Ptr(0))); GS2Pstring(nameC1OutputStr^^.bufString, pFileNameHndl^^); HLock(Handle(theRefConH)); with theRefConH^^ do begin DisposeHandle(Handle(fDocNameRef)); DisposeHandle(Handle(fDocPathRef)); fDocNameRef := pFileNameHndl; fDocPathRef := ResultBuf255Hndl(gReplyRec.pathRef.refIsNewHandle); SetWTitle(pFileNameHndl^^, theWindow); fIsSaved := true; end; HUnlock(Handle(theRefConH)); gDocsOpenCnt := gDocsOpenCnt + 1; DoSaveAs := DoSave(theWindow); end; {else if not toolerr} DisposeHandle(Handle(gReplyRec.nameRef.refIsNewHandle)); end; {if gReplyRec.good} end; {of DoSaveAs} {*------------------------------------------------------------------*} procedure WriteDocWindow(theWindow: WindowPtr); var theRefConH : WinRefConH; ioRec : IORecGS; parmsClose : RefNumRecGS; setPositionRec : setPositionRecGS; tePriv : TERecordPriv; teTextBlkH : TextBlockH; prevTextBlkH : TextBlockH; hTECtl : CtlRecHndl; FormatH : DocFormatResH; selectionStart : LongInt; selectionEnd : LongInt; begin theRefConH := WinRefConH(GetWRefCon(theWindow)); HLock(Handle(theRefConH)); with theRefConH^^ do begin if fResForkFileID <> - 1 then begin { Write the resource fork } FormatH := DocFormatResH(LoadResource(kFormatResType,kFormatResID)); if FormatH = nil then begin FormatH := DocFormatResH(NewHandle(SizeOf(DocFormatResRec), gMyMemoryID, 0, Ptr(0))); AddResource(Handle(FormatH), 0, kFormatResType,kFormatResID); end; TEGetSelection(selectionStart, selectionEnd, TEHandle(hTECtl)); with FormatH^^ do begin fFont := fFormat.fFont; fFontSize := fFormat.fFontSize; fTabWidth := fFormat.fTabWidth; fSelectionStart := selectionStart; fSelectionEnd := selectionEnd; end; MarkResourceChange(true, kFormatResType, kFormatResID); WriteResource(kFormatResType, kFormatResID); end; {if fResForkFileID <> -1} setPositionRec.pcount := 3; setPositionRec.refnum := fDataForkFileID; setPositionRec.base := startplus; setPositionRec.displacement := 0; SetEOFGS(setPositionRec); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); Exit(WriteDocWindow); end; hTECtl := GetCtlHandleFromID(theWindow, kTextEditCtl); tePriv := TERecordPriv(TEHandle(hTECtl)^^.reserved); teTextBlkH := tePriv.fTextCachedHandle; prevTextBlkH := teTextBlkH^^.fPrev; while prevTextBlkH <> nil do begin teTextBlkH := prevTextBlkH; prevTextBlkH := teTextBlkH^^.fPrev; end; while teTextBlkH <> nil do begin ioRec.pcount := 4; ioRec.refnum := fDataForkFileID; ioRec.databuffer := @teTextBlkH^^.fTheText; ioRec.requestCount := teTextBlkH^^.fTextLength; WriteGS(ioRec); if _ToolErr <> noError then begin gErrorNum := _ToolErr; DoErrorWind(gErrorNum); Exit(WriteDocWindow); end; { Advance to next text block } teTextBlkH := teTextBlkH^^.fNext; end; {while TETextBlkH <> nil} end; {with theRefConH} HUnlock(Handle(theRefConH)); end; {WriteDocWindow} {*------------------------------------------------------------------*} procedure CloseFile(theRefConH: WinRefConH); var parmsClose : RefNumRecGS; begin HLock(Handle(theRefConH)); with theRefConH^^ do begin parmsClose.pcount := 1; parmsClose.refnum := fDataForkFileID; CloseGS(parmsClose); fDataForkFileID := - 1; if fHasResFork then begin CloseResourceFile(fResForkFileID); fResForkFileID := - 1; end; end; HUnlock(Handle(theRefConH)); end; {*------------------------------------------------------------------*} function DoClose(theWindow: WindowPtr): Boolean; var theRefConH : WinRefConH; hTECtl : CtlRecHndl; dirty : Byte; begin DoClose := false; {assume failure} theRefConH := WinRefConH(GetWRefCon(theWindow)); if theWindow = nil then Exit(DoClose); if GetWKind(theWindow) = 0 then begin hTECtl := GetCtlHandleFromID(theWindow, kTextEditCtl); dirty := TEHandle(hTECtl)^^.ctlFlag; if BAND(dirty, $0040) <> 0 then theRefConH^^.fIsSaved := false; if not theRefConH^^.fIsSaved then begin if SaveChanges then begin if not DoSave(theWindow) then begin DoClose := false; Exit(DoClose); end else begin DoClose := false; Exit(DoClose); end; CloseFile(theRefConH); end; {if SaveChanges} end; {if not fIsSaved} CloseDocWindow(theWindow); DoClose := true; end {of if GetWKind} else CloseNDAByWinPtr(theWindow); end; { of DoClose } {*------------------------------------------------------------------*} procedure CloseDocWindow(theWindow: WindowPtr); var theRefConH : WinRefConH; begin theRefConH := WinRefConH(GetWRefCon(theWindow)); DisposeHandle(Handle(theRefConH^^.fDocNameRef)); DisposeHandle(Handle(theRefConH^^.fDocPathRef)); DisposeHandle(Handle(theRefConH)); CloseWindow(theWindow); gDocsOpenCnt := gDocsOpenCnt - 1; end; {of CloseDocWindow} {*------------------------------------------------------------------*} procedure DoPageSetup; var Dummey : Boolean; begin Dummey := PrStlDialog(gPrintRecH); end; {*------------------------------------------------------------------*} procedure DoPrint; var theWindow : WindowPtr; hTECtl : TEHandle; thePrintPort : GrafPortPtr; statusRec : PrStatusRec; pageRect : Rect; startLine : LongInt; done : Integer; begin { Fetch this document's information } theWindow := FrontWindow; hTECtl := TEHandle(GetCtlHandleFromID(theWindow, kTextEditCtl)); { Create a printer port } if PrJobDialog(gPrintRecH) then begin WaitCursor; thePrintPort := PrOpenDoc(gPrintRecH, nil); pageRect := gPrintRecH^^.prInfo.rPage; startLine := 0; repeat PrOpenPage(thePrintPort, nil); startLine := TEPaintText(thePrintPort,startLine,pageRect,0,hTECtl); PrClosePage(thePrintPort); until startLine = - 1; PrCloseDoc(thePrintPort); PrPicFile(gPrintRecH, nil, nil); InitCursor; end; {if PrJobDialog} end; {Do Print} {*------------------------------------------------------------------*} procedure DoQuit; begin gDone := true; end; { of DoQuit } {*------------------------------------------------------------------*} procedure HandleMenu; var theMenu : Integer; theItem : Integer; theWindow : WindowPtr; result : Boolean; begin theMenu := HiWrd(gMainEvent.wmTaskData); theItem := LoWrd(gMainEvent.wmTaskData); case theItem of kAboutItem: DoAbout; kNewItem: DoNew; kOpenItem: DoOpen; kSaveItem: result := DoSave(FrontWindow); kSaveAs: result := DoSaveAs(FrontWindow); kCloseItem: result := DoClose(FrontWindow); kSetPage: DoPageSetup; kPrintItem: DoPrint; kQuitItem: DoQuit; kUndoItem: ; kCutItem: ; kCopyItem: ; kPasteItem: ; kClearItem: ; kFontItem: DoFontItem; end; HiliteMenu(false, theMenu); end; { of HandleMenu } {*------------------------------------------------------------------*} procedure DrawContentProc; begin DrawControls(GetPort); end; { of DrawContentProc } procedure InitializeGlobals; begin gPrintRecH := PrRecHndl(NewHandle(140, gMyMemoryID, attrBank,Ptr(0))); PrDefault(gPrintRecH); gDocsOpenCnt := 0; gLastWindow := nil; gFontID := FMGetSysFID; with gDefaultFormat do begin fFont := gFontID.famNum; fFontSize := gFontID.fontsize; fTabWidth := 3; fSelectionStart := 0; fSelectionEnd := 0; end; end; { of InitializeGlobals } {*------------------------------------------------------------------*} procedure MainEventLoop; var code : Integer; {*-------------------------------------*} {see if the front window is ours and fix the items accordingly.} procedure CheckFrontW; var theWindow : WindowPtr; {*-------------------------------------*} procedure DisableItems; begin DisableMItem(kSaveItem); DisableMItem(kSaveAs); DisableMItem(kCloseItem); DisableMItem(kSetPage); DisableMItem(kPrintItem); DisableMItem(kFontItem); end; {DisableItems} {*-------------------------------------*} procedure EnableItems; begin EnableMItem(kNewItem); EnableMItem(kSaveItem); EnableMItem(kSaveAs); EnableMItem(kCloseItem); EnableMItem(kSetPage); EnableMItem(kPrintItem); EnableMItem(kFontItem); end; {*--------------------------------------*} procedure DisableAll; begin SetMenuFlag($0080, kEditMenuID); SetMenuFlag($0080, kFontMenuID); DrawMenuBar; DisableItems; end; {*---------------------------------------*} procedure SetupForApp; {do this if the window is ours} begin if gDocsOpenCnt <> 0 then begin EnableItems; SetMenuFlag($FF7F, kEditMenuID); SetMenuFlag($FF7F, kFontMenuID); DrawMenuBar; EnableMItem(kNewItem); end {if DocsOpen} else begin DisableAll; EnableMItem(kNewItem); EnableMItem(kOpenItem); end; end; {Setup for Application window} {*-----------------------------------------*} procedure SetupForDA; {do this if the front window is a Desk Accessory} begin DisableItems; SetMenuFlag($FF7F, kEditMenuID); SetMenuFlag($0080, kFontMenuID); DrawMenuBar; EnableMItem(kCloseItem); DisableMItem(kNewItem); end; {*------------------------------------------*} begin {CheckFrontW} theWindow := FrontWindow; if theWindow = gLastWindow then Exit(CheckFrontW); if theWindow = nil then begin DisableAll; EnableMItem(kNewItem); end else begin if GetWKind(theWindow) = 0 then begin SetupForApp; DisableMItem(kUndoItem); end {if GetWKind = 0} else begin SetupForDA; DisableMItem(kUndoItem); end; {if GetWKind <> 0} end; {if the Window <> nil} gLastWindow := theWindow; end; {of CheckFrontW} {*------------------------------------------*} begin {MainEvent loop} gMainEvent.wmTaskMask := $001FFFFF; { Allow TaskMaster to do everything. } gDone := false; repeat CheckFrontW; code := TaskMaster($FFFF, gMainEvent); case code of wInGoAway: gresult := DoClose(FrontWindow); wInSpecial, wInMenuBar: HandleMenu; end; until gDone; end; { of MainEventLoop } {*------------------------------------------------------------------*} procedure SetUpMenus; var height : Integer; begin SetSysBar(NewMenubar2(refIsResource, Ref(kMenuBarResID), nil)); SetMenuBar(nil); FixAppleMenu(kAppleMenuID); { Add DAs to apple menu } height := FixMenuBar; { Set sizes of menus } DrawMenuBar; { ...and draw the menu bar! } end; { of SetUpMenus } {*------------------------------------------------------------------*} begin gMyMemoryID := MMStartUp; gStartStopRef := StartupTools(gMyMemoryID,refIsResource,Ref(kStartStopResID)); if _ToolErr = noError then begin InitializeGlobals; SetUpMenus; InitCursor; MainEventLoop; end; ShutDownTools(refIsHandle, gStartStopRef); end.   -/0 File NnNewOoOpenSsSaveSave AsClose//- Page Setup...PpPrint00-QqQuit1 Edit Undo-P 7I MiniEditP|@-.-?-About TEdit...... Select Font "x0/ Tedit Fait partir d'un exemple de TML Copyright 1989 by TML Systems, Inc. All Rights Reserved/^#0hts Reserved/^#0x/ JThis file has no Resource Fork. The Font Information Will NOT be Saved when you close the file. /^#0/#1x/ JSave Changes Before Closing? /^#2/#3MiX,-./=l0}1 8k  6 & 'D C@ U h |   L  d ? [|  -8 . // 0o< 15,P11XxCutCcCopyVvPasteClear Fonts FfltF7 X W!)@i   Qcv)Mi-./=0}1  k  6 &  ' C U h |      ? [  - . // 0o 15 PP%ry!7 #D/ & ,@ main & """")  ;8[iHY"h{i+k ;8[iHb"h{i+;ik ;8[idHY"h{i+k ;8[idHY"h{i+k ;8[iHHHHH"hH")%HH"hφHH0"hӆխ-/0 File NnNewOoOpenSsSaveSave AsClose//- Page Setup...PpPrint00-QqQuit1 Edit Undo-P  !"#$%&'()*+,-.׭ ` {iHӢ""HHϢ)"hˆ͠˪˅e) {i+k ;8[iddHH$H "hӆկH"ӪӅȥ ȥHiH"HHHa"h׆٥ H"Ӣ"UׅمӪӅ몠몧HHע "ע("{i+  ;ik ;8[ird "2H"hI""w" i{iH "H"""{i+;ik ;8[iH"h  ٭ ۭխHH٪مHH "hцӠ٪مHiHѪхHH"٢"HH"h^HH)"h݆H"hI "$ """"{i+k ;8[iHH)"h߆ߢ "ߪ߅Š{iH " H"ߢ""fHHɭH "hï H"ߢ"" "͠ϠцӥɅե˅{iH " H"ߢ""ߢ""""HH0"h ԿԽ" "ߪ߅zHH"hHiHHH"e ` {iHԿԽ""( ` {iHԿԽ""{iHԿԽ"#"H0"hN"hԯԭԿԽ"$"ԯԭ"ߪ߅ ȥ"{i+;ik ;8[id{iH{ { "ddéũddx({iH{iH"{i+k Open File: ;8[i{iH_ _ "V V {iHH"h{iH{iH"{iH{iH"HHHH "hۆ{iH۪ۅHH"HH"hHHHH0"hHHHH)"hHH " Ȋ ` {iHHH""{iHHH"#"H0"hN"hHHHH"$"HH"HHHH "HHHH("HH""{i+kUntitled Create file: ;8[idHH)"h݆ߠݪ݅IH"h<H"h"ݪ݅""{i+;ik ;8[id{iH "HH)"hHH{iH"x({iH{iH" "ݭߩӠݪ݅iՆ{iH "ݪ݅iH "'H"HH"`K HHHH "hنۭHiH٪مHH"HH "HH""H H"ٗȥۗ ȭ٪مHH "HH""H"h H H"{i+;ik Save file: ;8[iHH)"h߆ߢ "ߪ߅HH"h?HHH "hԡԟ "{iH{iHԥԣ""ȥ ȥ""ddd{iH "H"6HH0"h{iHHi(H"猪&猪͠ϠiцӠ 猪Ն{iH "H")盛lߢ""{i+;ik ;8[i "ߠ{iH "H """{i+;ik ;8[idHH)"h݆ߥH+"hHH0"hن۠٪م)ץ)@ݪ݅ݪ݅I8H"h*H"hId.d&"""{i+;ik ;8[iHH)"h߆ߪ߅HH"ߪ߅"H H"ߢ" ":{i+;ik ;8[iHHH "h{i+k ;8[iHH"hHH0"h߆HHH "h "HHHH"hۆݭ{iHHiH"dd"HHԵԳ{iHߢ""hۢ"ۢ"HH""{i+k ;8[i{i+k ;8[iゑ"""HHH"hH"h݂HHH"hH"h݂HHH"hH"h݂""""x>=<O}|{-ɑ ,"{i+k ;8[iHH"hH"{i+k ;8[iHHH "hHH "HH"h)  {i+k ;8[i1"1"1"1"1"1"{i+;ik ;8[i0"0"0"0"0"0"0"{i+;ik ;8[i""*"H"{i+;ik ;8[iDH"""*"0"$H"0"0"{i+;ik ;8[iH"""*"0"1"{i+;ik ;8[iHH"h߆ߦp "0"EHߢ+"h "1" "1"ߍ{i+;ik ;8[i "H"h#HHH"hH"h" {i+k ;8[iHHC"hH"9""H"h*"{i+k ;8[iH"hHHH"h""""HH"{i+k ?vlvvvrp"t-v6vBvF8I8MLprvvpsvvpsK_vhvtvx8{8L``v)v-8084LCvvvvvv^vavmvq8t8xLvRRHJNPvHWvd2vvvv v5v8vDvH8K8OL^vj~vvv88Lvvvvv88 Lv+v9vOvwvvv `b2vMvovvl vvv{ {   F LT >W >a vd > _  _   R R V  V  R      vC S 2 v v v ` b? v_ v v l  v v v9 vL v v     v% ( . ? v  F L > > v > v N P#vOvRv^vb8e8iLmPqN|vHTJVTVvTV vMvcvvN}PvvRRl JHvv0v^vxvvv#v6v[v^vjvn8q8uLvhvkvwv{8~8Lvv v/vEvyvvv(l IQhvvvvvvRR-<1:8\vxv<:v<:v:< v-vAv`vc<g:~vv6 vl v  v$].5F<R vv v,@vE:H<K<O:Zv]R`\c^ovtpwrzp}`sbdfhjlvvvvvv1v>vKvXvevrvvvvvR v,v6vCvO]vjvvvvvvv\^2@vRvbpvzv\^6vv]n'6^vlv|vvvvvvv9v vCDACSEGDEFPROCDSEG~globalJ LONGGLOBALSNDA STACKSIZEU TOOLERRORCHK_PASMAIN  _PASBLKMOVE STATICUNIVTOOL ,@ ~global CDACSEGDEFPROCDSEG~globalJ LONGGLOBALSNDA STACKSIZEU TOOLERRORCHK_PASMAIN  _PASBLKMOVE STATICUNIVTOOLUSERTOOLGSOSFORWARDEXTERNALINLINE.p.o.p.o.p.o%B0PpXʈ"TDbH KZh+(z@k`8x۪[{;Bieugwm}oc)%5'7-=/?# $4,<:IEUGWM]O_CL\  ,@ runtime H;i{HH ;[ H H"hHHH "hhH "HHHH "hhe: kHH ;[HH"HH" HH"d&)H "h "ԯH"8k"HH"h"kHH"k0;8 ;[H"h#H({iH "h%)))XHH "h: ) )d   +;i08k ;[@ZZH"h""""":""+hk "k ;[   :T+  ;i k ;[ ( ) e:e::D+  ;i k ;[   :0 )   h)+H   ;i(k HH;[H"h H "    hh+;ik ;[HH""+;ik ;[0  +  ;i k ;[0  +  ;i k ;[0   +  ;ik ;[  Ȁ +  ;ik ;[  Ȁ +  ;ik ;8 [  d) e )e     ;e i ;[907301 )80'e     +  ;ikHH ;[ d0b) W  gF @ e )e)8 0  ):  +;ik HH;[ F0D @0>)8 04  8 8  e :e   hh+  ;ik H;[d 8 2 )    8 ) h+  ;ik {cH;[hh+hk {cH;[ JJJ -)0 0 0 0 0 0 0  hh+hhk {cH;[  :JJJ 1)0 0 0 0 0 0 0  hh+;ik{cH ;[ +;ik{cH ;[ I7+;ik{cH ;[ 7+;ik ;[   (+;i (k ;[I7   (+;i (k ;[ I7  (+;i (k ;[ jjjjjjjj +;ik ;[JJJ+)0 0 0 0 0 0 0 7    (+;i(k H;[IIʩ FeI+k H;[ I Iʀ f  8 F F I+kcck8k H;[IIIIʀFf ee&IIhhhh+k H;[ I I IIʀ&&ff !  8  FfFfͥ  IIzzzzzz+kIIkIIk##kkCCkIIk8 # zz(k *kJjkjjjk***k;8 ;[  {iH "{iH{i H " +;ik;8 ;[  {iH "{iH{i H " +;ikHHH ;[ HHHHH &"  Ȁ8: ))e:  +  ;ikHHH ;[H HHH HH '"  Ȁ 8: ))e:  +  ;i k;8% ;[$ &{i$H{i+H{iH  "{i$H{iH1H/H "+'+&*;i)k ;[HHH)H ("h +;ik ;[HHHH)H )"h h +;ik;8& ;[.H,H{iH{iH{iH "{iH2H0H  "+(,'+;i*k ;[ )  +  ;ik ;[   +  ;ikHHH ;[ )f A [8Ai a {8ai 80))  J ) J) +  ;i k ;[HHHH "hhhh+k ;[HHH"hhh+k ;[HHH3"hhh+k ;[HHHH"hhhh+k ;[HHHH+"hhhh+k ;[HHHH $"hhhh+  ;ik ;[H  HH"+ ;i k ;[HHHH  "hhhh+  ;ik ;[HHHH  "hhhh+  ;ik ;[HHH "hhh+k ;[HHH "hhh+k ;[HHH "hhh+k ;[HHH "hhh+kHH;iHHHHHڢ "hhk    h:h<Z"<H:HkHHHH "hk ;[  "ኇ+ ;i k   ;[Z z Z"+hhhk . &     ;[Z z Z"+hhk ;[ ڢ "+  ;ik ;[  "+  ;ik   ڢ "+  ;ik ;[ " +hhk;iHHHڢ "ኃhhk ;[d  +hhk ;[ȗȥ @ȩ+hkH "hk ;[ "  +hhkHH "hhkH "hk;iH "hk "  k H H H H "(p0   ;ik v&2JQgG+0@~gzl|sv|z#~0 3 djruv&'AaGbvvv<vjvvvvZvvvv vCDACSEGDEFPROCDSEG~globalJ LONGGLOBALSNDA STACKSIZEU TOOLERRORCHK_PASMAIN  _PASBL 012345 7I MiniEditP|@-.-?-About TEdit...... Select Font "x0/ TEdit Fait partir d'un exemple de TML II par JCD, logiciel en Freeware le 12 Fvrier 1990/^#0/^#0hts Reserved/^#0x/ JThis file has no Resource Fork. The Font Information Will NOT be Saved when you close the file. /^#0/#1x/ JSave Changes Before Closing? /^#2/#3MiX,-./=l0}1 8k  6 & 'D C@ U h |   L  d ? [|  -8 . // 0o< 15,P11XxCutCcCopyVvPasteClear Fonts Ff4rtF7 X W!)@i   Qcv)Mi-./=0}1  k  6 &  ' C U h |      ? [  - . // 0o 15 PP%my!7E,TEDIT.RDE.20NOATEDIT.RDE.20NOAHTEDIT.PDE.20NOA89:;<=?@ABCDEYZ[\]^_`abcdefghijklmnopqrstuvwxyzInitiation l'algorithmique (2me partie). Amis GS.Clubistes, c'est encore moi. Soyons francs. Lorsque j'ai crit la premire partie de ce cours, je n'envisageais pas vraiment d'en faire une suite. Une des raisons pour lesquelles je reprends la plume, ou devrais-je dire le clavier, est que les vacances arrivent, que mes profs font relche et moi aussi par la mme occasion. Non, en fait, la vraie raison est que j'avais des scrupules lcher mes ventuels lecteurs sans avoir abord les notions les plus intressantes de l'algorithmique. Je vais essayer aujourd'hui de combler en partie cette lacune. Donc, nous avons vu la dernire fois des notions diverses telles que les permutations (a -> b -> c -> a) et les structures alternatives de type Si..Alors..Sinon..FinSi. On va pousser la plaisanterie un peu plus loin en abordant les notions de boucle, de chane et de boolen (prononcez boulin). Tout un programme, c'est le cas de le dire, d'autant que je vais m'efforcer de vous proposer des cas pratiques d'utilisation de toutes ces notions. Avant de passer la suite de ce cours, il me semble opportun de rappeler comment se conoit un algo. Lorsqu'on lit le sujet d'un problme de programmation, on doit commencer par se demander quels problmes sont poss et quels outils on devra utiliser pour les rsoudre. La meilleure solution, en fait, consiste poser sur le papier les diffrents cas de figure possibles, concevoir une premire bauche d'algorithme et vrifier " la main" qu'il fonctionne dans tous les cas de figure (rappelez-vous le problme de la permutation circulaire). Evidemment a c'est la thorie et en fait tout dpend de la complexit du problme pos (et rien ne vaut une petite sance de bidouille de temps autre pour se remettre en forme). Le choix du langage pourra se faire plus tard, en fonction des besoins. A propos de langage, le Pascal a comme avantage d'tre bien adapt l'apprentissage de l'algorithmique et de la programmation structure. C'est normal, il a t conu par Nicklaus Wirth, un professeur d'algorithmique. Un algo bien fait ne doit donc pas poser de problme d'adaptation. En Basic, c'est un peu moins vrai, quelques amnagements seront le plus souvent ncessaires. A titre d'information, le dictionnaire de l'informatique aux ditions Larousse donne deux dfinitions de l'algorithmique : 1 - Science des algorithmes utiliss en informatique ; 2 - Connaissance des mthodes utilises pour construire des algorithmes et des programmes. Vous remarquerez au fil des exemples que je n'emploie jamais dans mes algos d'instruction de branchement de type GOTO. En algorithmique on n'en a pas besoin. Les programmes "spaghetti" ou "jeu de piste" a vous dit quelque chose ? Si c'est le cas de vos programmes Basic ou autres, je ne saurais trop vous conseiller de lire ce cours en entier et d'tudier attentivement tous les exemples. S'il n'a pas la prtention de faire de vous des programmeurs chevronns, il vous permettra, du moins je l'espre,ARTICLESvm' '+ART.ASTUCES $ $ >,ART.FILETYPEF"!3!3>)ART.MONTV:oq!!>)CATALOGUEo " " >-ART.DERNIERES.  >/ART.CUSTOM.GSOS 2 2 >-ART.POLYGONIA[$  >/ART.HYPERSTUDIO\>)ART.ALGO270\+ + >,ART.SOLUTION{.(  >ART.ANNONCES33>,ART.TML.II.2   > d'amliorer la logique de vos propres programmes, de progresser dans votre dcouverte de la programmation et de manipuler des concepts qui peuvent paratre obscurs au premier abord. Les exercices proposs dans ce cours sont fournis avec des exemples de solution (j'ai bien dit des exemples, prenez-les pour ce qu'ils sont et n'hsitez pas les amliorer). Une dernire mise au point : je donnerai dsormais rarement l'quivalent Pascal des algos prsents ici. Moi a me fera moins de travail, et vous a vous fera un peu d'entranement, en vous laissant de plus le choix du langage utilis. Mais commenons par le commencement. Qu'est-ce qu'une boucle et quoi a sert ? Les boucles sont des structures rptitives qui permettent de rpter un ensemble d'actions un nombre de fois dtermin soit par l'utilisateur, soit par le programmeur, soit par un calcul effectu par le programme. Cela permet au programmeur de s'pargner bien du travail. Etudions la syntaxe algorithmique d'une boucle dans un exemple. N.B. : "TQ" et "FTQ" signifient respectivement "Tant Que" et "Fin de Tant Que". "FSi" signifie "Fin de Si". Lire se traduit par READLN en Pascal (ou INPUT en Basic) et Afficher se traduit par WRITELN en Pascal (ou PRINT en Basic). "Si..Alors..Sinon..FSi" se traduit par "IF..THEN..ELSE..;" en Pascal. En Basic, la syntaxe peut varier selon les versions et certains vieux Basic n'ont pas le "ELSE" ce qui oblige feinter avec un "GOTO". La flche "<--" se dit "reoit" et se traduit par := en Pascal et par = en Basic. De toute faon, reportez-vous au manuel de votre langage pour les problmes de syntaxe. N'hsitez pas, en algorithmique et en Pascal, prendre des noms de variables explicites pour amliorer la lisibilit de vos programmes. Problme 1 : programme de devinette d'un nombre (un grand classique !). Il devra indiquer si le nombre donn par l'utilisateur est trop grand ou trop petit et afficher le nombre de coups en fin de partie. Lexique gagne = 45 (constante, nombre deviner) n : variable de type nombre entier (sert compter le nombre de coups) nombre_lu : variable de type entier (demande au joueur par programme) Dbut Lire nombre_lu n <-- 1 TQ nombre_lu <> gagne Si nombre_lu > gagne Alors Afficher 'Trop grand !' Sinon Afficher 'Trop petit !' FSi n <-- n + 1 Lire nombre_lu FTQ Afficher 'Vous avez trouv en ',n,' coup(s).' Fin. Le programme de devinette est classique mais aussi trs didactique. Faites son jeu d'essai pour vous aider comprendre son droulement avec un tableau du type : nbre_lu ! gagne ! n ! Message affich ******* ! ***** ! * ! ******* ******* La boucle se rpte donc Tant Que (While en anglais) la condition n'est pas remplie, c'est dire tant que "nbre_lu" est diffrent de "gagne". Vous remarquerez que si par chance le joueur trouve le contenu de "gagne" du premier coup, alors le programme n'entre pas dans la boucle et passe directement l'avant dernire ligne pour afficher le nombre de coups. D'o l'importance d'initialiser n 1 au dpart. n est une variable qui sert de compteur. Il est judicieux de la dclarer en entier (INTEGER en Pascal). Vous remarquerez par la suite qu'on pouvait trouver une solution plus jolie, mais je prfre dmarrer doucement. Avant de poursuivre, il convient de prsenter les diffrentes faons de grer les boucles en Pascal. L'algorithme suivant : increment <-- 1 TQ increment < 13 Afficher increment increment <-- incremeGHIJKLMNOPQRSTUVWXArt.FileType Les codes des fichiers sont parfois obscurs. Cet extrait d'une note technique Apple devrait permettre chacun de s'y retrouver. File Aux. Type Type File Type Description Auxiliary Type Description Date _____________________________________________________________________________ $00* Unknown $01* Bad blocks $02+ Apple /// Pascal code $03+ Apple /// Pascal text $04* ASCII text Random-access record-length $05+ Apple /// Pascal data $06* Binary Load address in bank 0 $07+ Apple /// Font $08* Apple II or /// Graphics 05/89 $08+ $4000 Packed Hi-Res Image Image Format 11/88 $08+ $4001 Packed Double Hi-Res Image Image Format 11/88 $09+ Apple /// BASIC program $0A+ Apple /// BASIC data $0B+ Apple /// Word Processor $0C+ Apple /// SOS System $0F* Folder $10+ Apple /// RPS data $11+ Apple /// RPS index $12+ Apple /// AppleFile discard $13+ Apple /// AppleFile model $14+ Apple /// AppleFile report format $15+ Apple /// screen library $16+ PFS document $16+ $0001 PFS:File document Program Specific $16+ $0002 PFS:Write document Program Specific $16+ $0003 PFS:Graph document Program Specific $16+ $0004 PFS:Plan document Program Specific $16+ $0016 PFS internal data Program Specific $19* AppleWorks Data Base Upper-/lowercase in name 09/89 $1A* AppleWorks Word Processor Upper-/lowercase in name 09/89 $1B* AppleWorks Spreadsheet Upper-/lowercase in name 09/89 $20+ Desktop Manager document $29+ Apple /// SOS Dictionary $2A+ Apple II Source Code Application Specific $2B+ Apple II Object Code Application Specific $2C+ Apple II Interpreted Code Application Specific $2D+ Apple II Language Data Application Specific $42* File Type Names Search order 07/89 $50* Apple IIGS Word Processor $50+ $8001 DeluxeWrite document Application Specific $50+ $8010 AppleWorks GS Word Processor Application Specific $51* Apple IIGS Spreadsheet $51+ $8010 AppleWorks GS Spreadsheet Application Specific $52* Apple IIGS Data Base $52+ $8010 AppleWorks GS Data Base Application Specific $52+ $8011 AppleWorks GS DB Template Application Specific $53* Drawing $53+ $8010 AppleWorks GS Graphics Application Specific $54* Desktop Publishing $54+ $8010 AppleWorks GS Page Layout Application Specific $54+ $DD3E Medley document Application Specific 05/89 $55* Hypermedia Application Specific $55+ $8001 Tutor-Tech document Application Specific $55+ $8002 HyperStudio document Application Specific $56* Educational Data Application Specific $56+ $8001 Tutor-Tech Scores Application Specific $57* Stationery $58* Help File $59* Communications File Application Specific $59+ $8010 AppleWorks GS Communications Application Specific $5A* Configuration file Application Specific $5A+ $8001 Master Tracks Jr. preferences $5A+ $8010 AppleWorks GS configuration Application Specific $5B* Animation file Application Specific $5B+ $8001 Cartooners movie Application Specific $5B+ $8002 Cartooners actors Application Specific $6B+ PC Transporter BIOS $6D+ PC Transporter driver $6E+ PC Transporter pre-boot $6F+ PC Transporter volume $A0* WordPerfect document WordPerfect 01/89 $AB+ Apple IIGS BASIC program $AC+ Apple IIGS BASIC TDF $AD+ Apple IIGS BASIC data $B0* Apple IIGS source code APW Language type $B0+ $0001 APW Text file $B0+ $0003 APW 65816 Assembly source code $B0+ $0005 ORCA/Pascal source code $B0+ $0006 APW command file $B0+ $0008 ORCA/C source code $B0+ $0009 APW Linker command file $B0+ $000A APW C source code $B0+ $000C ORCA/Desktop command file $B0+ $0015 APW Rez source file $B0+ $001E TML Pascal source code $B1* Apple IIGS object code $B2* Apple IIGS Library file $B3* GS/OS application 09/89 $B4* GS/OS Run-Time Library $B5* GS/OS Shell application 09/89 $B6* Permanent initialization file Not loaded if bit 15 set $B7* Temporary initialization file Not loaded if bit 15 set $B8* New desk accessory Not loaded if bit 15 set $B9* Classic desk accessory Not loaded if bit 15 set $BA* Tool $BB* Apple IIGS Device Driver File Not loaded if bit 15 set 11/89 $BC* Load file (generic) $BD* GS/OS File System Translator Not loaded if bit 15 set $BF+ GS/OS document $C0* Packed Super Hi-Res picture Application Specific $C0+ $0000 Paintworks Packed picture Application Specific 11/88 $C0+ $0001 Packed Super Hi-Res Image Application Specific 11/88 $C0+ $0002 Apple Preferred Format picture Application Specific 11/88 $C0+ $0003 Packed QuickDraw II PICT file Application Specific 11/88 $C1* Super Hi-Res picture Application Specific 11/88 $C1+ $0000 Super Hi-Res Screen image Application Specific 11/88 $C1+ $0001 QuickDraw PICT file Application Specific 11/88 $C2+ Paintworks animation $C3+ Paintworks palette $C5* Object-oriented graphics Application Specific $C5+ $8000 Draw Plus document Application Specific $C5+ $C000 DYOH: Architecture document Application Specific $C5+ $C001 DYOH predrawn objects Application Specific $C5+ $C002 DYOH custom objects Application Specific $C5+ $C003 DYOH clipboard Application Specific $C5+ $C006 DYOH: Landscape Document Application Specific $C7* Control Panel document Not loaded if bit 15 set*R*01/90 $C8* Font $C8 $0000 Font (Standard QuickDraw II Font)Reserved 01/89 $C9* Finder data $CA* Icons 07/89 $D5* Music sequence Application Specific ***01/90 $D5+ $0000 Music Construction Set song Application Specific $D5+ $8002 Diversi-Tune sequence Application Specific $D5 $8003 Master Tracks Jr. sequence Application Specific $D6* Instrument Application Specific ***01/90 $D6+ $0000 Music Construction Set inst. Application Specific $D6+ $8002 Diversi-Tune instrument Application Specific $D7* MIDI data ***01/90 $D7+ $0000 MIDI standard data Application Specific $D8* Sampled sound Application Specific ***01/90 $D8+ $0000 Audio IFF document Application Specific 03/89 $D8+ $0002 ASIF instrument Application Specific 03/89 $D8 $8003 Sampled Sound resource Application Specific $D8+ $8001 HyperStudio sound Application Specific $DB* DB Master document Application Specific $DB+ $0001 DB Master document Application Specific $E0* Archival library Application Specific $E0+ $0000 ALU library Carolina System Software $E0 $0001 AppleSingle File Application Specific 03/89 $E0 $0002 AppleDouble Header File Application Specific 03/89 $E0 $0003 AppleDouble Data File Application Specific 03/89 $E0 $8000 Binary II File Application Specific 07/89 $E0+ $8001 AppleLink ACU document Application Specific $E0+ $8002 ShrinkIt (NuFX) document Application Specific 07/89 $E2* AppleTalk data $EF+ Pascal area $F0+ BASIC command $F1* User #1 $F2* User #2 $F3* User #3 $F4* User #4 $F5* User #5 $F6* User #6 $F7* User #7 $F8* User #8 $F9* GS/OS System file $FA+ Integer BASIC program $FB+ Integer BASIC variables $FC* AppleSoft BASIC program $FD* AppleSoft BASIC variables $FE+ Relocatable code $FF* ProDOS 8 application nt + 1 FTQ Pourra s'crire : ----------------- - 1re solution : increment := 1 ; WHILE increment < 13 DO BEGIN WRITELN(increment) ; increment := increment + 1 ; END ; - 2me solution : increment := 1 ; REPEAT WRITELN(increment) ; increment := increment + 1 ; UNTIL increment >= 13 (Rpte ... Jusqu' ...) - 3me solution : FOR increment := 1 TO 12 DO BEGIN WRITELN(increment) ; END ; N.B. : Cette dernire solution n'est possible ici que parce que l'incrmentation se fait de 1 en 1. Il faut remarquer qu' la sortie de la boucle, la variable "increment" aura la valeur 12, tandis que dans les 2 premiers cas elle sera 13. Vous pouvez le vrifier en ajoutant un WRITELN(increment) aprs la boucle. Il n'existe pas en Pascal d'instruction STEP comme en Basic, ce qui oblige recourir l'une des deux premires solutions lorsque le pas est diffrent de 1. Vous remarquerez aussi que si vous utilisez REPEAT UNTIL plutt que WHILE DO il sera ncessaire d'inverser la condition de sortie de la boucle. Faites des essais pour bien comprendre la subtilit de la chose. A noter qu'en GS.Basic, il existe la structure WHILE UNTIL quivalente au REPEAT UNTIL du Pascal. Notez aussi que le pas peut tout aussi bien tre ngatif. En Pascal, on pourra aussi utiliser la structure FOR..DOWNTO..DO.. si le pas est de -1. Petite astuce : increment := increment + 1 ; peut s'crire : INC(increment) ; INC est une fonction qui incrmente l'argument entre parenthses de 1. Il existe la fonction DEC qui, elle, dcrmente de 1. Nous reparlerons des fonctions dans le prochain cours et nous apprendrons mme en crer. Attention ! Faites ce que je dis mais ne faites pas ce que je fais... ou plutt ne me faites pas dire ce que je n'ai pas dit... enfin bref, ce que je voulais dire, c'est que WHILE DO n'est pas quivalent REPEAT UNTIL, car avec REPEAT UNTIL, si la condition de sortie de la boucle est vraie ds le dpart, celle-ci est quand m^eme parcourue une fois, ce qui n'est pas le cas avec WHILE DO. Prfrez donc l'utilisation de WHILE DO, ou de FOR TO DO, vous viterez les mauvaises surprises. A que mme que si vous me croyez pas que vous avez qu' essayer. Et que mme que si je dis je dis c'est que je dis que je dis. Non mais ! N.B. : l'initialisation des variables en dbut de programme ou avant une boucle n'est pas obligatoire. Tout dpend en fait du contexte et des besoins du moment. Problme 2 : programme demandant l'utilisateur s'il aime le choux-farci jusqu' ce que ce dernier rponde oui. Voil l'occasion de vous prsenter les boolens. Lexique bonne_reponse = "O" (constante, rponse que le programme attend) reponse_lue : variable de type caractre (CHAR en Pascal) encore : variable de type boolen (BOOLEAN en Pascal) Dbut encore <-- vrai (en Pascal on crirait: encore := TRUE) TQ encore Afficher 'Aimez-vous le choux-farci ?' Lire reponse_lue encore <-- reponse_lue <> bonne_reponse FTQ Afficher 'Vous y avez mis le temps mais vous avouez enfin.' Fin. Un boolen est une variable qui peut prendre 2 tats : VRAI ou FAUX (TRUE or FALSE). Ce type de variable existe en Pascal mais pas en Basic, ce qui est dommage car il rend de grands services. Au dmarrage "encore" reoit VRAI. Le programme entre donc dans la boucle. Si l'utilisateur entre une rponse diffrente de "O", alors "reponse" recevra encore la valeur VRAI. Le programme excute nouveau la boucle et repose nouveau la mme question (compltement idiote, je l'admets). Si cette fois l'utilisateur entre la bonne rponse (en l'occurrence "O"), alors la comparaison entre "reponse_lue" et "bonne_reponse" retourne la valeur FAUX dans la variable "encore". La boucle ne s'excutant que Tant Que "encore" = VRAI, le programme sort de la boucle pour excuter la fin du programme. Je sais, l'emploi des boolens peut paratre obscur et la bonne connaissance de l'algbre boolenne n'est pas superflue. Il faudrait encore beaucoup d'exemples de ce type pour vous familiariser avec les boolens. N'hsitez pas vous en crire, les faire "tourner" par jeu d'essai interpos, les crire en Pascal. Il est d'autant plus malais pour moi de vous expliquer a par tube cathodique interpos, mais je ne pouvais dcemment pas luder la question. Il est ncessaire de bien comprendre qu'un boolen est tout bonnement un test qui s'effectue sous forme d'un calcul "logique" et qu'on pourrait trs bien le remplacer par un IF..THEN.. classique. Mais le boolen a le mrite de clarifier les programmes, d'tre peu gourmand en mmoire et en temps machine. Il est parfois incontournable sur certains problmes. Essayez pour vous "faire la main" de remplacer le test du premier exemple par un boolen et de rcrire le second exemple sans boolen. Il y aurait encore beaucoup dire. Je tcherai d'y revenir dans les prochains exemples. Problme 3 : Saisir les notes d'un lve les unes la suite des autres, faire ensuite le cumul des notes et calculer la moyenne. Lexique cumul : variable de type rel note_lue : variable de type rel nbre_notes : variable de type entier (encore un "compteur") Dbut cumul <-- 0 nbre_notes <-- 0 Lire note_lue TQ note_lue <> -1 cumul <-- cumul + note_lue nbre_notes <-- nbre_notes + 1 Lire note_lue FTQ Si nbre_notes = 0 Alors Afficher 'Pas de notes, fin de traitement' Sinon Afficher 'Moyenne de l''lve : ', cumul / nbre_notes FSi Fin. J'en vois d'ici qui doivent se gratter la tte en se demandant si je n'ai pas perdu la mienne. Pas de panique, les explications arrivent. Le programme initialise "cumul" 0 (a c'est comprhensible) et "nbre_notes" 0 galement (mais pourquoi diable ? Patience, nous y reviendrons). Le programme demande ensuite l'utilisateur d'entrer la premire note. Lorsqu'il dsire arrter la saisie, il lui suffit d'entrer "-1" qui est ici la condition de sortie de la boucle de saisie. Le programme passe alors l'dition de la moyenne de l'lve. Pour bien comprendre, faisons quelques jeux d'essai (les nombres dans les tableaux ci-dessous sont en fait le contenu des variable au fur et mesure du droulement du programme) : nbre_notes ! cumul ! note_lue ! Moyenne -------------!-------------!-------------!---------- -----0-------!------0------!------15-----!---------- -----1-------!-----15------!------25-----!---------- -----2-------!-----40------!-----(-1)----!----20---- J'espre que vous comprenez mieux prsent l'intrt d'initialiser "nbre_notes" 0 au dmarrage. Voyons un second jeu d'essai : nbre_notes ! cumul ! note_lue ! Moyenne -------------!-------------!-------------!-------------- -----0-------!------0------!----(-1 )----! Pas de notes, fin.. En effet si l'utilisateur, pour une raison quelconque, veut sortir du programme sans avoir entr de note, il entrane la division de "cumul" (qui est 0) par "nbre_notes" (qui est aussi 0). Chacun sait que la division par 0 est impossible, l'ordinateur sait faire des choses idiotes mais pas celle-l. Donc, pour viter un plantage lors de l'affichage de la moyenne, j'ai ajout un test qui traite le cas o on n'entre pas dans la boucle. Il y en a certainement qui vont me rpliquer qu'on aurait pu faire plus joli. Par exemple en demandant l'utilisateur aprs chaque note s'il veut en ajouter une autre avant le calcul de la moyenne. C'est trs joli en effet, mais allez dire a au malheureux utilisateur qui doit entrer les notes de plusieurs dizaines d'lves pour le traitement d'un examen par exemple. S'il a d appuyer 1200 fois sur la touche "O" (pour Oui) pour entrer 1200 notes, mieux vaut pour vous ne pas le croiser en fin de journe. J'ai donc pris comme condition de sortie "-1" mais c'est tout fait arbitraire et j'aurais pu choisir autre chose (9999 par exemple) puisque les notes s'chelonnent d'habitude entre 0 et 20. Problme 4 : programme qui demande l'utilisateur d'entrer une srie de nombres et indique en fin de programme le nombre le plus grand de la srie. A mon avis, si vous avez bien compris ce qui prcde, cet exercice ne devrait pas vous poser de problme. Essayez quand mme de le rsoudre avant de passer la lecture de ce qui suit (faites aussi le jeu d'essai). Lexique nombre_lu : variable de type nombre rel (REAL en PASCAL) plus_grand : variable de type rel (stockage du plus grand nombre) Dbut plus_grand <-- 0 Afficher 'Entrez votre nombre ' Lire nombre_lu TQ nombre_lu <> -1 (-1 est la condition d'arr^et) Si nombre_lu > plus_grand Alors plus_grand <-- nombre_lu FSi Afficher 'Entrez votre nombre' Lire nombre_lu FTQ Afficher 'Le plus grand nombre est : ', plus_grand Fin. Le programme, aprs avoir initialis "plus_grand" 0, demande l'utilisateur d'entrer un nombre. Si "nombre_lu" est diffrent de -1, le programme entre dans la boucle. Il compare alors le contenu de la variable "nombre_lu" avec celui de la variable "plus_grand". Si "nombre_lu" est suprieur "plus_grand" alors le contenu de "plus_grand" est modifi pour recevoir celui de "nombre_lu". Mais si "nombre_lu" est infrieur ou gal "plus_grand" la mise jour de "plus_grand" est inutile. Le programme ignore alors ce qui se trouve aprs le "Alors" du test et passe directement la saisie d'un nouveau nombre. Il reteste le contenu de "nombre_lu" au niveau du TQ et si "nombre_lu" est gal -1, alors le programme sort de la boucle. Maintenant que vous savez tout a, modifiez l'algo numro 3 pour qu'il soit capable de vous donner, en plus de la moyenne de l'lve, sa note la plus haute, et pourquoi pas aussi sa note la plus basse. Je vous laisse vous dbrouiller. Avec ce que vous savez, a ne devrait pas vous poser de problme. Problme 5 : Programme qui lit une phrase termine obligatoirement par un point. Il devra indiquer le nombre de mots (sachant que les mots sont spars par au moins un espace et qu'il n'y a pas d'espace entre le dernier mot et le point), le nombre de majuscules et de caractres autres. Accrochez-vous car a se corse. Ce programme va utiliser 3 boucles dont 2 imbriques dans une troisime, ainsi que des tests, des variables servant aux cumuls et, le plus important, une variable de type CHAINE (STRING en Pascal) qui va nous permettre de nous familiariser avec les tableaux, une chane de caractres pouvant tre considre comme un tableau de caractres et fonctionnant peu prs de la m^eme faon. Je suis conscient de la difficult de l'exercice et vais essayer de bien expliquer l'algo. Mais vous verrez, ce n'est pas si terrible que a. Avertissement : je n'ai pas ma disposition les caractres de type crochet ouvert et crochet ferm qui servent en algorithmie et en Pascal la dclaration des tableaux et des chanes. Je vais donc contourner cet inconvnient en utilisant les parenthses la place des crochets. J'espre que a ne prtera pas confusion. De plus pour arer l'algo et le rendre plus lisible, je placerai les commentaires entre toiles. Lexique i : variable de type entier (va servir de compteur) mots : variable de type entier (va servir au cumul du nombre de mots) majus : variable de type entier (pour cumul du nombre de majuscules) autre : idem (cumul du nombre de caractres autres : *az10-3"'.) phrase : variable de type chaine Dbut Afficher 'Entrez votre chane (pas plus de 80 caractres SVP)' Lire phrase mots <-- 0 (initialisation des variables de cumul) majus <-- 0 autre <-- 0 i <-- 1 * compteur 1 pour lecture premier caractre de "phrase" * ********** BOUCLE 1 ********** TQ phrase(i) <> '.' ********* BOUCLE 2 ********* TQ phrase(i) <> '.' ET phrase(i) <> ' ' Si phrase(i) >= 'A' ET phrase(i) <= 'Z' Alors majus <-- majus + 1 Sinon autre <-- autre + 1 FSi i <-- i + 1 FTQ ****** Fin de boucle 2 ****** ******** BOUCLE 3 ******** TQ phrase(i) = ' ' i <-- i + 1 FTQ ****** Fin de boucle 3 ****** mots <-- mots + 1 FTQ ****** Fin de boucle 1 ****** Afficher 'Nombre de mots : ', mots Afficher 'Nombre de majuscules : ', majus Afficher 'Nombre de caractres autres : ', autre Fin. Explications : je crois que vous les avez bien mrites. Le programme commence par demander l'utilisateur d'entrer une chane termine obligatoirement par un point, ce dernier servant au programme pour "trouver" la fin de la chane. Puis il met 0 les variables servant au cumul du nombre de mots, de majuscules, et de caractres autres. Pour bien comprendre la suite du programme, prenons un exemple : Supposons que l'utilisateur entre la chane suivante : A bientot. La variable i qui sert se "dplacer" dans la chane est mise 1 pour la lecture du premier caractre de la cha^ine. Le programme teste s'il peut entrer dans la Boucle 1 en comparant le premier caractre avec l'indicateur de fin de chane qui est un point. Puisque le premier caractre est diffrent d'un point, le programme entre donc dans la Boucle 1. Il teste ensuite s'il peut entrer dans la Boucle 2, boucle qui a pour but de calculer le nombre de majuscules et de caractres autres. Pour entrer dans cette boucle, il doit tre diffrent d'un point, et aussi d'un espace, car n'oublions pas que nous devons aussi compter le nombre de mots, les mots tant spars par au moins un espace. Notre premier caractre rpond favorablement aux conditions requises, donc on entre dans la boucle 2. Dans cette boucle, on teste si le premier caractre de la chane est suprieur ou gal 'A' et infrieur ou gal 'Z'. Il est important de comprendre ici que le programme teste en fait les valeurs ASCII des caractres 'A' et 'Z' et les compare la valeur ASCII du premier caractre de la chane. Dans le cas prsent, le premier caractre de la chane est gal au caractre 'A' donc le programme ajoute 1 la variable de cumul "majus" et ignore le Sinon pour passer la suite de la Boucle 2. La variable 'i' est incrmente de 1 et on retourne au TQ de la boucle 2. Cette fois, le second caractre de la chane est un espace donc le programme quitte la Boucle 2 et passe la Boucle 3. Cette troisime boucle a pour but d'liminer tous les espaces superflus entre les mots. Dans le cas prsent il n'y a qu'un espace donc la Boucle 3 ne tourne qu'une fois avant de s'arrter. Le programme passe alors au cumul du nombre de mots puis on retourne au TQ de la premire boucle et rebelotte. Je vous laisse tudier le programme plus en dtail. Lorsque vous l'aurez bien compris, tchez de le modifier pour qu'il affiche galement le nombre de minuscules et de chiffres. Si vous manquez d'ides, voici un exemple d'application de ce que nous avons vu : programme comptant le nombre de mots d'une chane en utilisant un boolen appel "mot" pour tester si on se trouve dans un mot ou non. Ou encore : programme qui donne la longueur du mot le plus long d'une phrase termine par un point. Chaque mot est spar par un ou plusieurs espaces. Il va tre temps pour moi d'arrter. Ce n'est d'ailleurs pas un mal, a vous laissera le temps de digrer ce que nous venons de voir. Il est certain que certaines notions vues dans ce cours vont vous poser des problmes au dbut, alors je n'ai qu'un conseil vous donner : pratiquez. Le dernier problme est d'un niveau un peu plus "costaud" que les prcdents mais il faut bien en passer par l. Un autre exercice dont je vous proposerai une solution la prochaine fois : programme lisant 2 nombre entrs par l'utilisateur et lui permettant de choisir l'une des 4 oprations suivantes + - / * pour calculer ces 2 nombres. Je voudrais conclure en ajoutant, pour ceux qui ont dbut comme moi en faisant des petits dessins qu'on appelle organigrammes, que la rdaction d 'un algorithme, que ce soit sous forme de texte ou de dessin procde de la mme dmarche. L'algorithmique telle que je vous la prsente ici demande peut tre un peu plus de rigueur mais elle offre l'avantage d'tre plus facilement traduisible en un langage informatique. Elle vite galement de se retrouver avec des organigrammes compliqus, voire illisibles, surtout dans le cas de problmes complexes. Il n'est pas exclu, et je vous fais par avance mes excuses, que malgr mes relectures des coquilles se soient glisses dans mon cours, voire dans mes algos (j'espre sincrement que non). Si vous avez des critiques, constructives de prfrence, formuler, ou si vous dsirez que certains points rests obscurs soient approfondis, n'hsitez pas m'en faire part, j'en tiendrai compte. N'oubliez pas de joindre une enveloppe pr-adresse et timbre si vous dsirez une rponse personnelle. Mon adresse est dans l'annuaire du GS.CLUB. Sur ce, bientt et bon courage. Grgory Jarrige. |}~SALUT A TOUS tous les nophytes,les apprentis sorcier,les matres vaudoux, les boutonneux,les appleworkers,les grosses ttes,les chauves,les Barbus... A TOUS. Effectivement car j'ai une bonne nouvelle: j'ai le plaisir de tester pour vous 2 ou 3 nouveauts de temps autre,donc il ne sera jamais trop tard pour que vous les achetiez... Ce mois ci c'est TUNNEL OF ARMAGEDDON superbe jeu de california dreams. Tunnel est crit sous prodos 16, rapide charger.Tout d'abord vous avez droit une prsentation sans prtention mais efficace.Vous serez frapp par la musique (je l'ai branche sur ma chane) pas trop nervante mme agrable. Elle est digne de ce jeu d'action. Le jeu se droule bord de votre astronef d'o vous pouvez admirer votre tableau de bord dessin en nuance grise .Mais justement l se situe le point faible de Tunnel :les couleurs des diffrents tableaux sont tristes pleurer ,monotones et ne varient gure entre un dgrad de bleu,rouge,vert ou gris. Le but du jeu est de se faufiler travers un immense tunnel o vous devrez viter les murs, statiques ou en mouvement ,mais aussi les aliens.Vous tes muni d'un canon ,et divers options(cartouches spciales,protection, hyperthrust etc) sont dissemines tout au long des 20 tunnels.Les diffrents niveaux sont d'une difficult croissante et vous pouvez sauvegarder une partie la condition d'avoir accompli un niveau de plus. Personnellement je n'ai jamais vu un dfilement si fluide sur un micro, c'est poustouflant ! (NDLR: ce jeu utilise la fonction FillMode de l'Apple IIGS, fonction dcrite dans Polygonia, dans ce numro de GS Infos) Enfin sachez qu'il y a 20 tunnels diviss en 5 sections et il y a 4 zones par section ,tant donn qu'il faut 1 min par zone ,vous pouvez y passer l'anne ! Un petit truc pour ceux qui veulent accder n'importe quel niveau: dans le catalogue renommer STAGE.01D en n'importe quoi et le stage qui vous intresse en STAGE01.D et voil . Installable sur disque dur: oui, le jeu se recopie sans difficult, il utilise un systme de protection externe au disque. Vous devez entrer le rsultat d'une combinaison de couleurs, rsultat obtenu partir d'un disque color fourni avec le jeu. Note : 15.5 Prix : 300 fttc Distributeur : Brjoux.ae Maintenant passons aux solutions. je tiens prciser que vous pouvez toujours gagner ma reconaissance ternelle en m'envoyant vos solutions. Une autre bonne nouvelle : je peux vous renseigner si vous bloquez dans Dungeon Master.Il n'est pas interdit non plus de m'crire, si vous bloquez dans un quelconque jeu. Seulement: JOIGNEZ UNE ENVELOPPE TIMBREE POUR LE RETOUR.MERCI. Ecrivez : DREYFUS CYRIL CENTRE MURAT 143 bd MURAT 75116 PARIS LES QUESTIONS : De Henri :il bloque dans Lode Runner Championship a partir du niveau 31 . (adressez moi la rponse, si vous pouvez l'aider.) De Claire :Elle bloque dans king quest IV pour monter sur la licorne Elle bloque dans shadowgate au hall d'entre. LES REPONSES : Pour Claire dans King quest IV : SHOOT UNICORN WITH BOW BRIDLE UNICORN MOUNT UNICORN Pour Claire dans Shadowgate : VOIR LA SOLUTION COMPLETE PLUS BAS. Je tiens remercier Jean au look d'enfer pour sa solution de Shadowgate. Solution de Shadowgate : operate tte au-dessus de la porte-prendre clef-N-changer de torche (torche ancienne operate torche neuve et faire le change,explication pour les durs la comprenette)-clef operate porte du fond-N-prendre la torche avec les deux anneaux-open livre-prendre la clef-S-clef operate porte droite-E-prendre l'pe et la fronde-poser les clefs et la torche teinte-S-N-N-E-N-prendre trois pierres-cliquer sur le ct gauche de la cascade il y a un passage cache-operate pierre sur la droite-open sac-prendre les trois diams-S-S-S-O-mettre le diam blanc dans le trou prs de la porte-prendre la sphre et le diam-changer torche-N- prendre le bouclier-prendre la massue-S-S-E-sphere operate lac-prendre la clef-torche operate lac-rcuprer la sphere-S-S-operate la pierre la plus claire sur le mur du fond en bas gauche-pntrer par l'orifice- prendre la flche-operate torche de gauche-O-allumer la torche aux anneaux- prendre le pont de pierre-torche aux anneaux operate spectre-operate manteau-passer porte du fond-speak corde-dire "epor"-open porte dissimule au fond-N-poser diam bleu dans trou-prendre parchemin et diam-O-prendre une torche-monter la corde(E)-massue operate glace du milieu-clef operate porte-open porte-poser clef et massue-S-open premier cercueil droite-torche operate momie-prendre le spectre-S-O-N-prendre la lance- S-S-N-N-poser torche teinte-prendre une torche neuve-N-sphere operate flamme-changer torche-N-N-lance operate troll-N-pierre operate fronde- fronde operate gant-operate manivelle du puit-open seau-thyself operate gant-N-prendre premire porte gauche-open bureau-thyself operate lunettes-prendre clef et parchemin-mettre diam rouge dans trou-N-open parchemins du bureau-celui qui a marqu terra terrakk operate globe terrestre-prendre clef-S-prendre livre sur bureau-S-aller la deuxieme porte gauche et la franchir-operate pierre l'anneau-prendre fiole marque d'une croix-*descendre escalier(E)-prendre flute-operate flute-prendre bague -poser flute-allumer torche de secours et se dbarrasser des vielles-S-S-clef operate la porte du fond-poser clef-N-clef operate porte de droite-E-cliquer sur les marches-nigmes du lion visage humain: -"ville sans maison,fleuve sans poisson..."=carte -"que l'on chauffe,frappe,plonge dans l'eau..."=fer cheval -"au feu j'attends,ami de la cuisine..."=soufflet -...etc -ramener l'objet en faisant bien attention ne pas manquer de lumire- 'objet'operate lion-E-operate carte au mur-prendre baton et l'toile filante-monter l'chelle-flche operate femme-prendre l'pine-S-S-S-torche operate tapis-clef operate porte d'en-bas au N-changer de torche-entrer-O- mettre bton dans trou-prendre la baguette magique-O-open sac-tout prendre- S-S-S-E-poser spectre dans la main gauche du roi-operate blason droite- mettre bague dans trou-poser :pine,livre et grosse pice-S-S-clef operate porte nord en haut-y entrer-open flacon avec croix-operate cor-flacon operate chien-poser flacon-prendre cor-monter-etoile operate dragon-prendre joyau-S-S-N(bas)-prendre torche-S-S-S-S-S-S-E (bas)-S-SStout poser sauf une torche et la baguette-baguette operate serpent-prendre le baton(staff)-S-thyself operate lunette,manteau,gant-tout reprendre sans oublier cailloux sinon en rechercher un-N-changer de torche-N-E-N-N-ouvrir parchemin ulterior humana-operate parchemin ulterior humana-N-pierre operate fronde-fronde operate geant-N-N-N(bas)-prendre torche-E-poser fronde,baguette-epine operate baton(staff)-allumer torche en rserve poser la vieille-prendre piece et livre-N-N-E-open livre-livre operate statue-poser livre-N-operate la manette la plus droite, puis celle du milieu,enfin la plus droite(323)-prendre l'orb-orb operate bton-S-S-S-changer de torche-N-operate parchemin instantum illuminaris- N-operate manette du puits-grande pice grave d'un puits operate puits-E- maillet operate gong-piece d'or operate spectre-go spectre-poser joyau sur le trou le plus gauche-operate cor-O-baton operate dragon... C'EST FINI. Et maintenant the big solution : POLICE QUEST .Avec ma reconnaissance ternelle pour Denis.B . Pour commencer voici quelques 'hints': -Cafein castle est en A3 -pour se garer: arrtez la voiture prs du trottoir et tapez -stop patrol car -ne jamais brler un feu rouge -toujours rpter les actions 2 fois lorsque vous inspectez et questionnez Solution: aller au locker room-diriger vous vers votre locker(il est indiqu dans le manuel d'utilisation !!)-open locker do look at the locker-take the gun- take the ammunition-take the briefcase-close the locker door- aller au briefing room-vous diriger vers votre pigeon hole(toujours indique dans le manuel)-look in the pigeonhole-vous diriger vers le journal-take newspaper from the table-close newspaper-aller vers votre table- couter le briefing-sortir-look-take the patrol car keys-take a radio extender-sortir par le fond-aller tout a fait a gauche-look at the parking lot-inspecter la voiture la plus prs de l'cran en tournant autour et en tapant devant chaque roue et pare-choc :check-open the door-enter-get night stick-close the door-start the car-patrouiller la ville en allant plutt vers la droite :vous vous trouverez bientt en face d'un accident- vous garez-suivre la procdure en n'oubliant pas d'appeler le big boss en tapant : radio-aller Cafeine castle (A3)-rpondre au tlphone- revenir vers le commissariat arrive alors une voiture qui brle un feu- la suivre pour la forcer s'arrter-look-radio-order driving licence- rdiger la contravention lui donner avec son permis aprss qu'elle l'ait signe -repartir et patrouiller un peu-aller Cafeine castle y dloger les motards en veillant bien d'avoir pris votre night stick-reprendre la patrouille-vous verrez un conducteur qui zigzague ,l'arrter suivre la procdure du manuel (n'oubliez pas radio)-l'emmener en prison donner au gardien la raison-suivre les instructions de laura-parler aux copains- saluer le bigboss-s'habiller au vestiaire-aller au blue room avec votre voiture-revenir au bureau suivre la procdure du dbut en vrifiant bien votre bote aux lettres-une fois sur la route coincer la cadillac- suivre la procdure du manuel-bien tout inspecter-rendez vous en prison en precisant 'drug'-suivre toutes les procdures demandes- chez laura prendre tous les papiers ncessaire pour coincer hoffman- aller la cour de justice-donner les papiers au juge en argumentant le tatouage 'tahoo'-prendre le papier et aller le porter la prison- boire un verre d'eau et manger un biscuit- LA SUITE DANS DEUX MOIS AVEC LA SOLUTION COMPLETE DE :-BLACK CAULDRON -UNINVITED Trucs & astuces : Pour Xenocide dans le dossier /xenocide/cov.files : renommer cave.data 1 en level 1 et n'importe quel autre niveaux cave.data 1 , pour revenir au jeu normal faire l'opration inverse. Dans les jeux d'aventures : -faire des plans -tout fouiller , tout inspecter,Art.Annonces Vends carte d'extension mmoire complte pour Apple 1024K (dont 3 kits de 256K sur supports) pour Apple IIGS. Excellent tat. Prix 1000,00F ARNAUD Jean-Paul - 337, ave du partage des Eaux - 84800 ISLE SUR SORGUE  des fichiers Paint d'Appleworks GS. Nouveauts domaine public (Voir Catalogue) ------------------------------------------ GS CLUB 123: Next Home 1, la premire revue franaise sous forme de pile. Questions diverses ------------------ Comment programmer une XCMD, qui pourrait nous envoyer un exemple comment? ais se trouve dans l'emballage avec son manuel de 280 pages, et le package tant attendu devrait tre chez votre concessionnaire prfr en ce moment. 1000 exemplaires ont t imprims, faites l'effort de l'acheter pour bien montrer l'intrt que nous portons notre machine. - Particularit spciale de la version Franaise du 5.0, toutes les touches accentues sont reconnues directement pour peu que l'on ait choisi l'option " Traduction Franais" du CDEV Alphabet dans le tableau de bord graphique (du menu Pomme ). - Les voyelles surmontes d'un ^ ou s'obtiennent en tapant d'abord l'accent, qui n'apparait pas l'cran, puis la voyelle choisie. Pour crire un accent tout seul, il faut le taper deux fois. - La pression simultanne des touches " Option-' ", " Option-` " ou " Option-n " suivie de certaines voyelles permet l'obtention du caractre avec accent aigu, grave ou tilde. Cette particularit oblige dsactiver les fonctions de translation de carac- tres de notre bon vieux "Clavier Bien Tempr" qui entrent en conflit avec le CDEV, mais je conserve cet accessoire bien pratique par ailleur pour ses fonctions de recopie d'cran. Prsentation ensuite de l'AppleShare serveur de fichiers qui permet partir d'un Mac ddi, de relier, via le rseau AppleTalk, une trentaine de GS qui utiliseront le disque dur du Mac comme leur propre disque avec, bien sr, tout un protocole de mots de passe pour hirarchiser les accs. Utile en environnement scolaire ou cours d'infortout essayer -en dernier recours m'crire... matique, la solution n'est pas la porte de toutes les bourses. Partie la plus spectaculaire de la soire, la prsentation de la nouvelle carte SCSI ( la chose la plus sexy aux yeux de J-Y-B ). Une dmonstration poustouflante: sous nos yeux bahis se droule une trentaine de secondes du film "La Guerre Des Etoiles" la vitesse normale de 25 images/s le tout transfr directement du disque dur en accs permanent. Je reviendrai plus loin sur cette carte, puisque notre ami Brsard en a mis une ma disposTMLv' ',ART.TML.5.EX00]ART.II.2.EX.P 48]ART.II.2.EX.RQ4PROGRAM Carnet; USES QDIntf, GSIntf, MiscTools, FontMgr, ConsoleIO; TYPE Champs_Mem = Record titre : Integer; nom : Str255; adresse : Str255; code : Str255; ville : Str255; tel : Str255; divers : Str255 end; Champs_Disk = Record titre : Integer; nom : String[55]; adresse : String[55]; code : String[5]; ville : String[55]; tel : String[20]; divers : String[55] end; TableauMem = array [1..20] of Champs_Mem; TableauDisk = array [1..20] of Champs_Disk; CONST ScreenMode = $80; MaxX = 640; Pomme = 300; APropos = 301; Fichier = 400; Nouveau = 401; Ouvrir = 402; Fermer = 403; Sauver = 404; SauverSous = 405; Imprimer = 406; Quitter = 407; Edition = 500; Annuler = 501; Couper = 502; Copier = 503; Coller = 504; Effacer = 505; M_item = 2; Mme_item = 3; Melle_item = 4; Ste_item = 5; Nom_item = 6; Adr_item = 7; Code_item = 8; Ville_item = 9; Tel_item = 10; Div_item = 11; Liste_item = 12; Suiv_item = 13; Prec_item = 14; Titre_item = 15; Rens_item = 16; NomStr_item = 17; AdrStr_item = 18; CodeStr_item = 19; VilleStr_item = 20; TelStr_item = 21; DivStr_item = 22; VAR MyMemoryID : Integer; ToolsZeroPage : Handle; OnQuitte : Boolean; PommeStr : Str255; FichierStr : Str255; EditionStr : Str255; Choix : ReplyRecord; FicheActuelle : Integer; Fiche : DialogPtr; Carnet : TableauMem; NomCarnet : String[15]; CarnetOuvert : Boolean; Erreur : Integer; Procedure StartUpGSTools; { Cette procedure permet de demarrer ainsi que de charger les outils du GS } Var ToolRec : ToolTable; { Table des outils a charger } svToolErrorNum : Integer; { En cas d'erreur... } btn : Integer; { Le bouton si erreur } r : Rect; Begin TLStartUp; { Demarrage du Tool Locator } MyMemoryID := MMStartUp; { idem pour Memory Manager } MTStartUp; { idem pour Miscellaneous Tools } { Maintenant, on reserve 9 pages en memoire pour les outils } ToolsZeroPage := NewHandle (9*256, MyMemoryID, FixedBank+PageAligned+FixedBlk+Locked, ptr(0)); { Demarrage de QuickDraw II } QDStartUp (LoWord(ToolsZeroPage^),ScreenMode,160,MyMemoryID); { Demarrage de l'Event Manager } EMStartUp (LoWord(ToolsZeroPage^)+$300,20,0,MaxX,0,200,MyMemoryID); { Message pour faire patienter pendant le chargement des outils } MoveTo (10,10); SetBackColor (0); SetForeColor (15); With r do begin top := 75; left := 220; bottom := 125; right := 420 end; SetSolidPenPat (15); PaintRect (r); With r do begin top := 77; left := 224; bottom := 123; right := 416 end; SetSolidPenPat (0); FrameRect (r); SetForeColor (1); SetBackColor (15); MoveTo (300,90); DrawString ('CARNET'); SetForeColor (0); MoveTo (310,110); DrawString ('par'); MoveTo (282,120); DrawString ('Marc LERMAN'); Repeat until button(0); ShowCursor; ToolRec.NumTools := 12; { Nbre d'outils a charger } ToolRec.Tools[1].TSNum := 4; { QuickDraw II } ToolRec.Tools[1].MinVersion := 1; ToolRec.Tools[2].TSNum := 5; { Desk Manager } ToolRec.Tools[2].MinVersion := 1; ToolRec.Tools[3].TSNum := 6; { Event Manager } ToolRec.Tools[3].MinVersion := 1; ToolRec.Tools[4].TSNum := 14; { Window Manager } ToolRec.Tools[4].MinVersion := 0; ToolRec.Tools[5].TSNum := 15; { Menu Manager } ToolRec.Tools[5].MinVersion := 1; ToolRec.Tools[6].TSNum := 16; { Control Manager } ToolRec.Tools[6].MinVersion := 1; ToolRec.Tools[7].TSNum := 18; { QuickDraw Aux } ToolRec.Tools[7].MinVersion := 0; ToolRec.Tools[8].TSNum := 21; { Dialog Manager } ToolRec.Tools[8].MinVersion := 0; ToolRec.Tools[9].TSNum := 20; { Line Edit } ToolRec.Tools[9].MinVersion := 0; ToolRec.Tools[10].TSNum := 22; { Scrap Manager } ToolRec.Tools[10].MinVersion := 0; ToolRec.Tools[11].TSNum := 23; { Standard File } ToolRec.Tools[11].MinVersion := 0; ToolRec.Tools[12].TSNum := 27; { Font Manager } ToolRec.Tools[12].MinVersion := 0; Repeat LoadTools (ToolRec); { Charge les outils } svToolErrorNum := ToolErrorNum; { Erreur ? } If svToolErrorNum <> 0 then begin btn := TLMountVolume (100,100,'',Concat( 'Ins',chr(142), 'rez la disquette du boot'), 'Ok','Annuler'); If btn <> 1 then SysFailMgr (svToolErrorNum, 'Impossible de charger les outils'); end; Until svToolErrorNum = 0; WindStartup (MyMemoryID); { Demarrage Window Manager } RefreshDesktop (nil); { Demarrage Control Manager } CtlStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$400); { Demarrage Menu Manager } MenuStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$500); ScrapStartUp; { Demarrage Scrap Manager } { Demarrage Line Edit } LEStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$600); DialogStartUp (MyMemoryID); { Demarrage Dialog Manager } { Demarrage Standard File } SFStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$700); DeskStartUp; { Demarrage Desk Manager } QDAuxStartUp; { Demarrage QuickDraw Aux } FMStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$800) End; Procedure ShutDownGSTools; { Cette procedure permet de clore les outils avant de quitter l'application } Begin GrafOff; { Fermeture de l'ecran graphique } FMShutDown; { Fermeture du Font Manager } QDAuxShutDown; { idem pour QuickDraw Aux } DeskShutDown; { idem pour Desk Manager } SFShutDown; { idem pour Standard File } DialogShutDown; { idem pour Dialog Manager } LEShutDown; { idem pour Line Edit } ScrapShutDown; { idem pour Scrap Manager } MenuShutDown; { idem pour Menu Manager } WindShutDown; { idem pour Window Manager } CtlShutDown; { idem pour Control Manager } EMShutDown; { idem pour Event Manager } QDShutDown; { idem pour QuickDraw II } MTShutDown; { idem pour Miscellaneous Tools } MMShutDown (MyMemoryID); { idem pour Memory Manager } TLShutDown { idem pour Tool Locator } End; Procedure SetUpMenus; Var Height : Integer; Begin PommeStr := Concat ('>>@\N300X\0', '==A propos de Carnet...\N301\0', '==-\N302D\0..'); FichierStr := Concat ('>> Fichier \N400\0', '==Nouveau carnet\N401*Nn\0', '==-\N999D\0', '==Ouvrir carnet\N402*Oo\0', '==Fermer carnet\N403D\0', '==Sauver carnet\N404D*Ss\0', '==Sauver sous...\N405D\0', '==-\N998D\0', '==Imprimer...\N406D*Pp\0', '==-\N997D\0', '==Quitter\N407*Qq\0.'); EditionStr := Concat ('>> Edition \N500\0', '==Annuler\N501D*Zz\0', '==-\N996D\0', '==Couper\N502D*Xx\0', '==Copier\N503D*Cc\0', '==Coller\N504D*Vv\0', '==Effacer\N505D\0.'); SetMTitleStart (10); InsertMenu (NewMenu(@EditionStr[1]),0); InsertMenu (NewMenu(@FichierStr[1]),0); InsertMenu (NewMenu(@PommeStr[1]),0); FixAppleMenu (Pomme); Height := FixMenuBar; DrawMenuBar End;  PROGRAM Essai; USES Types,Locator,Memory,MiscTool,QuickDraw,Events,Desk,IntMath,TextTool, Controls,Windows,Menus,LineEdit,Dialogs,QDAux,Print,Scrap,StdFile,Fonts, Lists,GSOS,Resources,TextEdit; CONST DebutFinResID = 1; BarreMenuResID = 1; PommeID = 1; APropos = 300; FichierID = 2; Nouveau = 400; Ouvrir = 401; Fermer = 402; Sauver = 403; Imprimer = 404; Quitter = 405; EditionID = 3; Annuler = 500; Couper = >f>t  d Art.II.2.ex.r501; Copier = 502; Coller = 503; Effacer = 504; AProposDeChResID = 1; VAR IDMemoire : Integer; DebutFinRef : Ref; Evenement : EventRecord; OnQuitte : Boolean; Procedure DessineBarre; Var Hauteur : Integer; Begin SetSysBar(NewMenuBar2(RefIsResource,Ref(BarreMenuResID),nil)); SetMenuBar(nil); FixAppleMenu(PommeID); { comme d'habitude } Hauteur := FixMenuBar; DrawMenuBar End; { de DessineBarre } Procedure AProposDe; Var inutile : Integer; Begin inutile := AlertWindow (4, (* refIsResource *) nil, (* pas de chane de substitution : on garde celle dfinie dans la resource *) Ref(AProposDeChResID)) End; (* de AProposDe *) Procedure ProcessMenu; Var menuNum : Integer; itemNum : Integer; Begin menuNum := HiWrd(Evenement.wmTaskData); (* nouvelle syntaxe *) itemNum := LoWrd(Evenement.wmTaskData); (* idem *) Case itemNum of APropos : AProposDe; Quitter : OnQuitte := true; (* permet de sortir de l'application *) end; HiliteMenu(false,menuNum) (* titre en noir sur blanc *) End; (* de ProcessMenu *) Procedure BouclePrincipale; Var code : Integer; Begin Evenement.wmTaskMask := $001FFFFF; OnQuitte := false; Repeat code := TaskMaster($FFFF,Evenement); If (code = wInSpecial) or (code = wInMenuBar) then ProcessMenu Until OnQUitte End; (* de BouclePrincipale *) BEGIN IDMemoire := MMStartUp; DebutFinRef := StartUpTools(IDMemoire,RefIsResource,Ref(DebutFinResID)); If _ToolErr = noError then begin (* pas d'erreur au chargement *) DessineBarre; InitCursor; BouclePrincipale end; ShutDownTools(RefIsHandle,DebutFinRef) END.^Nouveau fichierOoOuvrir fichier...Fermer fichierSsSauver fichierPp Imprimer...QqQuitter Edition ZzAnnulerXxCouperCcCopierVvCollerEffacer Fichier  ",-@,,A propos de...---NnNnf^t2#  YY4\ H ,Dp-a0@ x`v  c&H &" ,6 -S       R h }  Txx0/ E S S A I Voir le source et les resources dans l'article de Marc LERMAN dans GSInfos numro 9. Vive le GS-Club et ses adhrents !/^#0__________________________________________________________________________ P R O G R A M M E R L A T O O L B O X E N T M L P A S C A L I I __________________________________________________________________________ ______________________________________________________ CHAPITRE 1 : E C R I R E U N E A P P L I C A T I O N ______________________________________________________ (suite) 3 - A PROPOS DE : "A PROPOS DE..." On voit, dans tous les programmes, et avec une certaine exprience, que les fentres du type "A propos de..." accessibles par le menu Fichier de toute application ne proposent qu'un message banal (le nom de l'auteur, le numro de la version...) et un seul bouton "Ok" (c'est d'ailleurs la mme chose pour les messages d'erreur). Moralit, on ne va tout de mme pas se fatiguer (la devise du TML Pascal II) appeler Dialog Manager, dclarer un bouton, afficher le texte et attendre bien sagement que l'utilisateur ait cliqu sur ce bouton. On va donc dclarer une nouvelle resource de type "Alert String", et on va s'en servir grce la fonction AlertWindow (de l'unit Windows). C'est parti ! 3.1 - LES FENETRES D'ALERTE * Choisissez Open dans le menu fichier, cliquez sur le bouton radio "Resource file". Chargez le fichier exemple de la dernire fois (il s'appelait Art.II.1.ex.r). La fentre des resources s'affiche alors; vous vous souvenez : on avait des resources de type "Pascal String", "Menu Bar", "Menu" et "Tool StartUp". * Droulez le menu pop-up "New Resource Type" et choisissez l'option "Alert String"; ce moment apparait une fentre "Alert String resource" avec entre parenthses le numro de la resource de ce type (1). Le grand rectangle correspond une zone de texte ditable. Cliquez dedans. * Une chane de type "Alert" doit obligatoirement commencer par un caractre de sparation (le slash "/"). Ensuite, il vous est possible de taper le texte qui doit s'afficher dans la fentre "A propos de...". * A la fin du texte, terminez par un slash "/". Maintenant, il faut indiquer les boutons utiliss; on n'a le droit qu' des boutons standards. Voici la liste des boutons par leur numro : - 0 : Ok - 1 : Cancel - 2 : Yes - 3 : No - 4 : Try Again - 5 : Quit - 6 : Continue On ne va utiliser qu'un bouton "Ok" (donc, le 0). Il suffit, aprs le slash indiquant la fin du texte afficher, d'inscrire un accent circonflexe ("^"), suivi d'un dise ("#"), lui-mme suivi du numro du bouton choisi. * Ensuite, on peut choisir la taille de la fentre; laissons la taille par dfaut. On n'utilisera pas d'icne dans notre exemple, ni de formatage spcial (accessible par le bouton ">Insert LETextBox2 Code>"). * Cliquez sur "Ok" pour accepter. Fermer la fentre des resources pour sauver le tout. Il ne reste qu' crire LA ligne de programme qui utilisera la resource que l'on vient d'crire. Voici le format de la fonction AlertWindow : FUNCTION AlertWindow (alertFlags : Integer; subStr : Ptr; alertStrPtr : Ptr) : Integer; Tout d'abord, dclarons une constante globale contenant le numro de la resource (1) : __________________________________________________________________________ Const AProposDeChResID = 1; __________________________________________________________________________ Appelons notre nouvelle procdure "AProposDe" : __________________________________________________________________________ Procedure AProposDe; __________________________________________________________________________ On n'a besoin que d'une seule variable qui contiendra le rsultat de la fonction AlertWindow : inutile (de type Entier) : __________________________________________________________________________ Var inutile : Integer; __________________________________________________________________________ Ecrivons maintenant la partie utile de notre procdure : __________________________________________________________________________ Begin inutile := AlertWindow (4, (* refIsResource *) nil, (* pas de chane de substitution : on garde celle dfinie dans la resource *) Ref(AProposDeChResID)) End; (* de AProposDe *) __________________________________________________________________________ Voil, tout va se faire tout seul ! 3.2 - UTILISATION DES MENUS Notre petit programme est quasiment termin; il reste l'essentiel crire : ce qui va le faire fonctionner. On va utiliser deux variables globales : - Evenement : de type EventRecord (pour Event Manager, cf GSInfos 8) - OnQuitte : de type boolen (vraie si on a choisi "Quitter" dans Fichier) Ecrivons la boucle principale de notre programme : __________________________________________________________________________ Procedure BouclePrincipale; __________________________________________________________________________ On utilise une variable locale "code" qui contient la valeur retourne par TaskMaster : __________________________________________________________________________ Var code : Integer; __________________________________________________________________________ Il va falloir autoriser TaskMaster tout considrer; le code des versions prcdentes du systme ($1FFF) est toujours compatible, mais ne couvre pas toutes les possibilits; le nouveau code ($001FFFFF) est plus appropri : __________________________________________________________________________ Begin Evenement.wmTaskMask := $001FFFFF; OnQuitte := false; Repeat code := TaskMaster($FFFF,Evenement); If (code = wInSpecial) or (code = wInMenuBar) then ProcessMenu Until OnQUitte End; (* de BouclePrincipale *) __________________________________________________________________________ Ecrivons alors la procdure ProcessMenu, qui va se charger d'aiguiller le programme sur l'action entreprendre en fonction du choix de l'utilisateur : __________________________________________________________________________ Procedure ProcessMenu; __________________________________________________________________________ Deux variables locales sont ncessaires : une pour le numro du menu choisi, une autre pour le numro de l'item choisi : __________________________________________________________________________ Var menuNum : Integer; itemNum : Integer; __________________________________________________________________________ Comme avec TML Pascal 1.50, on rcupre les parties haute et basse de Evenement. wmTaskData : __________________________________________________________________________ Begin menuNum := HiWrd(Evenement.wmTaskData); (* nouvelle syntaxe *) itemNum := LoWrd(Evenement.wmTaskData); (* idem *) Case itemNum of APropos : AProposDe; Quitter : OnQuitte := true; (* permet de sortir de l'application *) end; HiliteMenu(false,menuNum) (* titre en noir sur blanc *) End; (* de ProcessMenu *) __________________________________________________________________________ Enfin, il reste crire le programme principal : __________________________________________________________________________ BEGIN DemarreOutils; If _ToolErr = noError then begin (* pas d'erreur au chargement *) DessineBarre; BouclePrincipale end; FermeOutils END. __________________________________________________________________________ Voil votre premire application en TML Pascal II termine; n'hsitez pas la compiler. Cette application se trouve rcapitule en annexe dans le fichier "Art.II.2.ex.p" et les resources lui correspondant dans le fichier "Art.II.2.ex.r". La prochaine fois, nous essaierons d'crire une application beaucoup plus complte, ce qui nous permettra d'exploiter de nouvelles notions. A bientt ! ______________________ M. Marc LERMAN 16, rue Lucien Sampaix 75010 - Paris ______________________>)ART.TML.5 *<  >,ART.LES.PLUSC   >&BRODERv>>'ART.ASMy :>-ART.EDITORIAL88>(NEW.SCSI 3 3 >*DISQUE.DUR,`,>+RENAISSANCE>'QUICKIE U2 2 >QUICKIE S  >NOUVELLESAPF  >__________________________________________________________________________ P R O G R A M M E R L A T O O L B O X E N T M L P A S C A L __________________________________________________________________________ _______________________________________________ CHAPITRE 2 : U N E X E M P L E : C A R N E T _______________________________________________ Nous allons partir de maintenant exploiter les connaissances que nous avons acquises jusqu'ici : dmarrage des outils, leur fermeture, mise en oeuvre des menus droulants et de Dialog Manager. Les connaissances supplmentaires avoir sont celles concernant le Pascal standard; les nouveauts seront dveloppes au moment o elles seront abordes dans notre programme. 1 - LE CAHIER DES CHARGES On se propose de raliser un carnet d'adresses; je suppose que tout le monde en a au moins ralis un dans sa vie (hlas, je ne fais pratiquement que a); pourquoi cet exemple et pas un autre ? Un carnet d'adresses permet d'entrevoir beaucoup de notions de programmation : les fichiers, les Record... Bien sr, nous n'allons pas nous limiter un simple carnet d'adresses du mme style qu'en BASIC AppleSoft; non, nous allons essayer de raliser un carnet digne des meilleurs, avec fentres, menus droulants, etc... Le clavier sera uniquement ncessaire pour entrer les donnes. But : un carnet de 20 fiches maximum, avec fentre de saisie/modification. Toutes les fiches sauves dans un unique fichier toujours prsent en mmoire dans son intgralit; possibilit d'imprimer des tiquettes. Interface utilisateur standard (respect des normes Apple). Programmation en TML Pascal. 2 - DEFINITION DES VARIABLES ET CONSTANTES (Structures utilises) Le fichier extrieur l'application, contenant les donnes du carnet, est un fichier typ; il contiendra les 20 fiches, runies dans un tableau. Chaque fiche a plusieurs champs, correspondant au nom, adresse, etc... On saisira la valeur de ces champs au moyen de LineEdit dans la fentre de saisie; le problme est que LineEdit n'accepte que des chanes de 255 caractres. Or, avec 255 caractres par champ, 7 champs par fiche, 20 fiches par carnet, cela nous fait un fichier assez consquent. On va donc utiliser une dfinition de fiche "en mmoire" avec 255 caractres par champ, et une de fiche "sur disque", avec un nombre de caractres par champ appropri : __________________________________________________________________________ TYPE Champs_Mem = Record titre : Integer; nom : Str255; adresse : Str255; code : Str255; ville : Str255; tel : Str255; divers: Str255 end; Champs_Disk = Record titre : Integer; nom : String[55]; adresse : String[55]; code : String[5]; ville : String[55]; tel : String[20]; divers: String[55] end; TableauMem = array [1..20] of Champs_Mem; TableauDisk= array [1..20] of Champs_Disk; __________________________________________________________________________ Notre application n'utilisant pas de graphisme, on va choisir comme dfinition de l'cran 640*200 : __________________________________________________________________________ CONST ScreenMode = $80; MaxX = 640; __________________________________________________________________________ Quels menus allons-nous utiliser ? - un menu Pomme, avec une option "A propos de..." et des accessoires - un menu Fichier (Nouveau, Ouvrir, Fermer, Sauver, Sauver Sous, Imprimer, Quitter) - un menu Edition standard (Annuler, Couper, Copier, Coller, Effacer) Donnons donc des numros d'identification chacun de ces menus : __________________________________________________________________________ Pomme = 300; APropos = 301; Fichier = 400; Nouveau = 401; Ouvrir = 402; Fermer = 403; Sauver = 404; SauverSous = 405; Imprimer = 406; Quitter = 407; Edition = 500; Annuler = 501; Couper = 502; Copier = 503; Coller = 504; Effacer = 505; __________________________________________________________________________ On va aussi utiliser plusieurs Items dans notre fentre de saisie (fentre de dialogue) : des boutons, des boutons radio et des lignes de texte; donnons- leur un numro d'ordre "personnel" : __________________________________________________________________________ M_item = 2; (* btn radio : Monsieur *) Mme_item = 3; (* btn radio : Madame *) Melle_item = 4; (* btn radio : Mademoiselle *) Ste_item = 5; (* btn radio : Socit *) Nom_item = 6; (* texte statique : Nom *) Adr_item = 7; (* texte statique : Adresse *) Code_item = 8; (* texte statique : Code postal *) Ville_item = 9; (* texte statique : Ville *) Tel_item = 10; (* texte statique : Tlphone *) Div_item = 11; (* texte statique : Divers *) Liste_item = 12; (* btn : Liste *) Suiv_item = 13; (* btn : Suite *) Prec_item = 14; (* btn : Retour *) Titre_item = 15; (* texte statique : Titre *) Rens_item = 16; (* texte statique : Renseignements *) NomStr_item = 17; (* texte ditable *) AdrStr_item = 18; (* idem *) CodeStr_item = 19; (* idem *) VilleStr_item = 20; (* idem *) TelStr_item = 21; (* idem *) DivStr_item = 22; (* idem *) __________________________________________________________________________ Dfinissons les variables : __________________________________________________________________________ VAR (* Comme d'habitude *) MyMemoryID : Integer; ToolsZeroPage : Handle; OnQuitte : Boolean; (* vrai si on choisit "Quitter" *) (* Les chanes des menus *) PommeStr : Str255; FichierStr : Str255; EditionStr : Str255; Choix : ReplyRecord; (* Reponse de Standard File *) FicheActuelle : Integer; (* indique le n de la fiche actuelle *) Fiche : DialogPtr; (* fentre de dialogue *) Carnet : TableauMem; NomCarnet : String[15]; CarnetOuvert : Boolean; Erreur : Integer; (* pour la gestion des erreurs *) __________________________________________________________________________ 3 - CHARGEMENT DES OUTILS On fait comme d'habitude, sauf que l'on va en plus charger Font Manager : __________________________________________________________________________ Procedure StartUpGSTools; { Cette procedure permet de demarrer ainsi que de charger les outils du GS } Var ToolRec : ToolTable; { Table des outils a charger } svToolErrorNum : Integer; { En cas d'erreur... } btn : Integer; { Le bouton si erreur } r : Rect; Begin TLStartUp; { Demarrage du Tool Locator } MyMemoryID := MMStartUp; { idem pour Memory Manager } MTStartUp; { idem pour Miscellaneous Tools } { Maintenant, on reserve 9 pages en memoire pour les outils } ToolsZeroPage := NewHandle (9*256,MyMemoryID, FixedBank+PageAligned+FixedBlk+Locked, ptr(0)); { Demarrage de QuickDraw II } QDStartUp (LoWord(ToolsZeroPage^),ScreenMode,160,MyMemoryID); { Demarrage de l'Event Manager } EMStartUp (LoWord(ToolsZeroPage^)+$300,20,0,MaxX,0,200,MyMemoryID); { Message pour faire patienter pendant le chargement des outils } MoveTo (10,10); SetBackColor (0); SetForeColor (15); With r do begin top := 75; left := 220; bottom := 125; right := 420 end; SetSolidPenPat (15); PaintRect (r); With r do begin top := 77; left := 224; bottom := 123; right := 416 end; SetSolidPenPat (0); FrameRect (r); SetForeColor (1); SetBackColor (15); MoveTo (300,90); DrawString ('CARNET'); SetForeColor (0); MoveTo (310,110); DrawString ('par'); MoveTo (282,120); DrawString ('Marc LERMAN'); Repeat until button(0); (* Au clic, on peut continuer *) ShowCursor; ToolRec.NumTools := 12; { Nbre d'outils a charger } ToolRec.Tools[1].TSNum := 4; { QuickDraw II } ToolRec.Tools[1].MinVersion := 1; ToolRec.Tools[2].TSNum := 5; { Desk Manager } ToolRec.Tools[2].MinVersion := 1; ToolRec.Tools[3].TSNum := 6; { Event Manager } ToolRec.Tools[3].MinVersion := 1; ToolRec.Tools[4].TSNum := 14; { Window Manager } ToolRec.Tools[4].MinVersion := 0; ToolRec.Tools[5].TSNum := 15; { Menu Manager } ToolRec.Tools[5].MinVersion := 1; ToolRec.Tools[6].TSNum := 16; { Control Manager } ToolRec.Tools[6].MinVersion := 1; ToolRec.Tools[7].TSNum := 18; { QuickDraw Aux } ToolRec.Tools[7].MinVersion := 0; ToolRec.Tools[8].TSNum := 21; { Dialog Manager } ToolRec.Tools[8].MinVersion := 0; ToolRec.Tools[9].TSNum := 20; { Line Edit } ToolRec.Tools[9].MinVersion := 0; ToolRec.Tools[10].TSNum := 22; { Scrap Manager } ToolRec.Tools[10].MinVersion := 0; ToolRec.Tools[11].TSNum := 23; { Standard File } ToolRec.Tools[11].MinVersion := 0; ToolRec.Tools[12].TSNum := 27; { Font Manager } ToolRec.Tools[12].MinVersion := 0; Repeat LoadTools (ToolRec); { Charge les outils } svToolErrorNum := ToolErrorNum; { Erreur ? } If svToolErrorNum <> 0 then begin btn := TLMountVolume (100,100,'',Concat( 'Ins',chr(142), 'rez la disquette du boot'), 'Ok','Annuler'); If btn <> 1 then SysFailMgr (svToolErrorNum, 'Impossible de charger les outils'); end; Until svToolErrorNum = 0; WindStartup (MyMemoryID); { Demarrage Window Manager } RefreshDesktop (nil); { Demarrage Control Manager } CtlStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$400); { Demarrage Menu Manager } MenuStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$500); ScrapStartUp; { Demarrage Scrap Manager } { Demarrage Line Edit } LEStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$600); DialogStartUp (MyMemoryID); { Demarrage Dialog Manager } { Demarrage Standard File } SFStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$700); DeskStartUp; { Demarrage Desk Manager } QDAuxStartUp; { Demarrage QuickDraw Aux } FMStartUp (MyMemoryID,LoWord(ToolsZeroPage^)+$800) End; __________________________________________________________________________ 4 - FERMETURE DES OUTILS C'est toujours pareil : __________________________________________________________________________ Procedure ShutDownGSTools; { Cette procedure permet de clore les outils avant de quitter l'application } Begin GrafOff; { Fermeture de l'ecran graphique } FMShutDown; { Fermeture du Font Manager } QDAuxShutDown; { idem pour QuickDraw Aux } DeskShutDown; { idem pour Desk Manager } SFShutDown; { idem pour Standard File } DialogShutDown; { idem pour Dialog Manager } LEShutDown; { idem pour Line Edit } ScrapShutDown; { idem pour Scrap Manager } MenuShutDown; { idem pour Menu Manager } WindShutDown; { idem pour Window Manager } CtlShutDown; { idem pour Control Manager } EMShutDown; { idem pour Event Manager } QDShutDown; { idem pour QuickDraw II } MTShutDown; { idem pour Miscellaneous Tools } MMShutDown (MyMemoryID); { idem pour Memory Manager } TLShutDown { idem pour Tool Locator } End; __________________________________________________________________________ 5 - LES MENUS On va juste laisser "A Propos de...", "Nouveau carnet", "Ouvrir carnet" et "Quitter" comme options disponibles : __________________________________________________________________________ Procedure SetUpMenus; Var Height : Integer; Begin PommeStr := Concat ('>>@\N300X\0', '==A propos de Carnet...\N301\0', '==-\N302D\0..'); FichierStr := Concat ('>> Fichier \N400\0', '==Nouveau carnet\N401*Nn\0', '==-\N999D\0', '==Ouvrir carnet\N402*Oo\0', '==Fermer carnet\N403D\0', '==Sauver carnet\N404D*Ss\0', '==Sauver sous...\N405D\0', '==-\N998D\0', '==Imprimer...\N406D*Pp\0', '==-\N997D\0', '==Quitter\N407*Qq\0.'); EditionStr := Concat ('>> Edition \N500\0', '==Annuler\N501D*Zz\0', '==-\N996D\0', '==Couper\N502D*Xx\0', '==Copier\N503D*Cc\0', '==Coller\N504D*Vv\0', '==Effacer\N505D\0.'); SetMTitleStart (10); InsertMenu (NewMenu(@EditionStr[1]),0); InsertMenu (NewMenu(@FichierStr[1]),0); InsertMenu (NewMenu(@PommeStr[1]),0); FixAppleMenu (Pomme); Height := FixMenuBar; DrawMenuBar End; __________________________________________________________________________ Vous trouverez la rcapitulation du dbut de notre programme en annexe, dans le fichier "Art.TML.5.ex". La prochaine fois, nous aborderons les nouveauts en compltant notre programme : nous verrons une utilisation plus complexe de Dialog Manager ainsi qu'une introduction Font Manager, alors... A bientt ! ______________________ M. Marc LERMAN 16, rue Lucien Sampaix 75010 - Paris ______________________Art.les.plus Tedit de JCD est un freeware ne fonctionnant que sous GS/OS 5.0 ------------ Dans le dossier les plus, vous trouverez un sous-dossier Tedit. Ce dossier contient un diteur de texte qui permet d'imprimer les fichiers textes en fonte tendue (ceux de GS Infos par exemple). Cet diteur crit en TML Pascal II est accompagn de ses deux fichiers sources. List shareware de Stowe Keller ------------------------------ Dans le dossier les plus, vous trouverez un sous-dossier LIST. Ce dossier contJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm^^^^M^^^^^Q^^^^^^^^^^^Q^QQUUȈȈQUUQȈUUQUUUUȎUUUUUUUUQUUUUUUUUUUQȈ숮숮숮숊숊UUUUUQUUUUUUQȈȎUUUUUUQUUUUUUU숈UUUUUUUUUUUUUUQ숎쎈UUUUUUUUUUUUUUUȈȬȮ숈UUUUUUUQUUUUUUUQUUUUUUUUQUUUUUUUQUUUUUUUUQUUUUUUUȎȎ쌮UUUUUUUUUUUUUUU쮊UUUUUUUUUUUUUUUQ숎숮ȈȈ숮般숮UUUUUUUQUUUUUUUQwwȮqUUUUUUUUQUUUUUUUwwqȮwwqUUUUUUUUUUUUUUUQwwwwwwwUUUUUUUUUUUUUUUQwwwwwqwwwwwUUUUUUUQUUUUUUUUwwwwwqwwwwwqUUUUUUUUQUUUUUUUwwwwwwq興숊Ȉ숊Ȋ興舮숮숮wwwwwwqUUUUUUUUUUUUUUUQwwwwwww興ȮȎwwwwwwwUUUUUUUUUUUUUUUQwwwwwwwqȎwwwwwwwwUUUUUUUUUUUUUUUwwwwwwwwwwwwwwqUUUUUUUQUUUUUUUQwwwwwwwq쨮wwwwwwwwqUUUUUUUUQUUUUUUUQwwwwwwwq쨮wwwwwwwwqUUUUUUUUUUUUUUUUwwwwwww  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIDDDDDDDD@DDDDDDDDDD@DDDDDDDDDDDD@DDDDDDDDDDDDDD@DDDDDD@DDD@DD@DDDDD@DDDDDDDDDDD@DDD@@DDD@DDD@DD||@D33333333333333333333333333333333333333333333333<@@ 33333333333333333333333333333333333333333333333<|33333333333333333333333333333333333333333333333<@@ 3<@|3<@3<@|3<|3<@|3<|3<|3<@3<@3 <@@3 <@@ 3 <@|3 <@ 3 <@@ 3 <@DDDDG@ 3 <O|3 <@@DD@ 3 <@@ 3 <@@ 3 <@@ 3 <ODDD@3 <@@ 3 <@@@ 3<@@3<wLw|L@3<|3<@ 3<GGOGD@3<DG@L@@ tO@DO |DD@3<@@@L@@ @G@ 33333333333333333333333333333333333333333333333<@O@DL @@ 33333333333333333333333333333333333333333333333<@DtDDDOGLLOLDOO @ @ GO@@LL O @ @DDDGGGDD DO@G|D D@@@@ @@ @ @ @@ @@ D@ Un soft standard que l'on lance comme une application indpendante. -> Un accessoire de bureau installer dans son menu Pomme, ce qui permet d'utiliser Quickie sans quitter l'application dans laquelle on se trouve (trs pratique avec les modules Paint et Page Layout d'AppleWorks GS). L'un ou l'autre fonctionnent de la mme faon: menu droulant et utilisation tout fait instinctive du produit. Quatre dfinitions sont possibles, commutables par un bouton droite du scanner, 100, 200, 300 et 400 Dpi ( point par Inch ). Le soft lit la position de l'interrupteur et vous l'annonce dans la fentre de scan. Le changement de dfinition a pour effet, outre une meilleure qualit d'image, de modifier la taille du sujet scann par rapport la surface utile de l'cran du GS. Plusieurs options sont possibles: * Scan en Noir et Blanc * Scan en chelle de gris * Voir l'image pendant le scan ( inactif en mode 400 Dpi ) * Retour sonore de la vitesse de dplacement du scanner * Temporisation de 10 s mettant le scanner au repos en cas de non-utilisation * Ascenseur permettant de fixer la longueur de la page scanne * Set Slot fixe l'emplacement de la carte ( mais elle est reconnue toute seule ?) * Scan pour dbuter le travail. Quand vous cliquez "Scan", le Quickie s'allume ( pendant 10 s ), il suffit alors de dplacer l'appareil rgulirement sur votre document tout en pressant un bouton situ gauche, juste sous votre pouce ( si vous tes droitiers !). L'image apparat simultanment (sauf en 400 Dpi), Qickie s'arrte tout seul au bout du nombre de lignes choisi avec l'ascenseur. Une petite diode vous renseigne sur le bon fonctionnement du scanner ( vitesse correcte ) ainsi qu' un signal sonore. A gauche de l'appareil se trouvent un potentiomtre servant ajuster la lumino- sit en fonction de votre document ( plusieurs essais sont ncessaires ) et un interrupteur permet de choisir le mode 'lettre' ( scan en noir et blanc ) ou 'photo' ( scan en chelle de gris ). Il est possible de modifier le contraste et la luminosit de l'image l'aide du soft avant de la sauver sur disque. Deux mthodes de sauvegarde: - l'une, classique, passe par l'interface de dialogue standard et permet de crer un fichier aux formats "Ecran", "Apple Preferred", "Paint" et "Finder Icon" trs pratique pour crer ses icones personnalises avec "Iconed". Seule ombre au tableau, il n'est pas possible de sauver l'intgralit de la sur- face scanne mais seulement une page cran. - l'autre mthode, surtout utile avec la version NDA du programme, permet la copie via le presse-papier d'une partie slectionne du dessin que l'on peut ensuite coller immdiatement dans son travail en quittant le NDA. L'utilisation du Quickie est trs agrable, rapide et instinctive, la largeur de la partie active du scanner n'est que de 10 cm mais c'est bien souvent suffisant pour une illustration. Le rendu est excellent en mode noir et blanc mais le choix unique du 640 X 200 fait que l'option "chelle de gris" est trs nettement infrieure la qualit obtenue avec le ThunderScan mont sur ImageWriter. Dans l'tat actuel du soft fourni, le produit est rserv ceux qui font de l'illustration schmatique, de la saisie de caractres ( peut-tre bientt un programme de reconnaissance ) ou du dessin dans le genre BD. Les adeptes de la belle photo en 16 tons de gris devront encore se contenter du ThunderScan. ( voir les exemples et certains schmas de l'article sur les disques durs ). Mais le hard tant ce qu'il est, il est capable de performances trs suprieures et Vitesse ne devrait pas tarder nous fournir un programme capable d'utiliser le 320 X 200 et 16 tons de gris ( d'autant qu'aux dernires nouvelles, ThunderWare, probalement aiguillonn quelque part, sortirait un matriel similaire ). Dernire prcision, cette petite merveille cote 1686,34 F HT ( remise Club 10% dduire ) et elle est disponible chez Brjoux !. J. Rey *$2LISTe DISQUE.DUR3J DISQUE.DUR2. DISQUE.DUR1 TEST.QUICKIE$GSINFOS DISQUE.DUR4*ICONSt"BREJOUXuREPSILON6 PROGRAMMES04EXEMPLES GSCLUB.9.640I2ARTICLESb6LES.PLUSion, atmosphre bon enfant, on peut y aller. Premire annonce importante: le Nouveau GS a commenc tre livr depuis une semaine environ, en principe si vous achetez une machine partir d'aujourd'hui ce doit tre la nouvelle plaque mre 1 Mo qui l'quipe, vrifiez-le et rlez s'il n'en est pas ainsi ou essayez d'obtenir une forte remise !. Nous ne reviendrons pas sur ce nouvel engin dont nous avons publi les avantages et inconvnients depuis dj plusieurs mois, ne jettez pas votre ancienne bcane mais exigez la nouvelle si vous vous quipez. Le GS/OS 5.0 Franais se trouve dans l'emballage avec son manuel de 280 pages, et le package tant attendu devrait tre chez votre concessionnaire prfr en ce moment. 1000 exemplaires ont t imprims, faites l'effort de l'acheter pour bien montrer l'intrt que nous portons notre machine. - Particularit spciale de la version Franaise du 5.0, toutes les touches accentues sont reconnues directement pour peu que l'on ait choisi l'option " Traduction Franais" du CDEV Alphabet dans le tableau de bord graphique (du menu Pomme ). - Les voyelles surmontes d'un ^ ou s'obtiennent en tapant d'abord l'accent, qui n'apparait pas l'cran, puis la voyelle choisie. Pour crire un accent tout seul, il faut le taper deux fois. - La pression simultanne des touches " Option-' ", " Option-` " ou " Option-n " suivie de certaines voyelles permet l'obtention du caractre avec accent aigu, grave ou tilde. Cette particularit oblige dsactiver les fonctions de translation de carac- tres de notre bon vieux "Clavier Bien Tempr" qui entrent en conflit avec le CDEV, mais je conserve cet accessoire bien pratique par ailleur pour ses fonctions de recopie d'cran. Prsentation ensuite de l'AppleShare serveur de fichiers qui permet partir d'un Mac ddi, de relier, via le rseau AppleTalk, une trentaine de GS qui utiliseront le disque dur du Mac comme leur propre disque avec, bien sr, tout un protocole de mots de passe pour hirarchiser les accs. Utile en environnement scolaire ou cours d'informatique, la solution n'est pas la porte de toutes les bourses. Partie la plus spectaculaire de la soire, la prsentation de la nouvelle carte SCSI ( la chose la plus sexy aux yeux de J-Y-B ). Une dmonstration poustouflante: sous nos yeux bahis se droule une trentaine de secondes du film "La Guerre Des Etoiles" la vitesse normale de 25 images/s le tout transfr directement du disque dur en accs permanent. Je reviendrai plus loin sur cette carte, puisque notre ami Brsard en a mis une ma disposition quelques jours plus tard. Enfin, dernier volet de ces annonces, la parution prochaine ( en Juin ) de la 3me dition du Guide de l'Apple II, encore enrichi, mis jour, comportant une nouvelle rubrique permettant d'effectuer un premier diagnostic en cas de ppins dans la pomme. L'exemple de l'action du GS Club y est cite ( cocorico !!! ), c'est la premire fois que nous apparaissons dans une revue officielle Apple, cel mritait d'tre sou- lign. La diffusion est toujours gratuite, ceux qui ont dj reu les deux premiers guides l'obtiendront automatiquement, les autres doivent s'inscrire ds maintenant par les moyens suivants: - 3616 code APPLEA - Tlphone 69 86 37 00 - Courrier l'attention de " L'Apple II Service Team " Les deux premires diffusions ont permis de constituer une base de donne de 2000 noms ce qui reste encore faible par rapport au nombre rel des utilisateurs de machines de la gamme II. N'hsitez pas vous faire connatre !. Flicitons l'action de nos deux sympatiques supporters de l'Apple II, leur initia- tive de cration du Guide fait cole...... aux Etats Unis !!!!! L'ide va tre traduite en Amricain et certainement tendue toute la gamme. La soire se termine avec le traditionnel feux crois de questions qui n'ont pas toutes obtenues de rponses claires: Avenir du GS ? mystre ? Le Team Apple II fera le ncessaire au niveau soft pour ne pas laisser tomber ses utilisateurs. Un nouveau GS ?, un nouveau systme 6.0 ?, un HyperCard GS ? Tout cel est de la fiction ! Apple ne fait pas de Vapor Ware ( Apple sait-il bien ce qu'il fait en ce moment ? seul l'avenir nous le dira !). J. Rey ICONSv!'  '/GSINFOS.9.ICONSʷ [9FINDER.DATAT[96)BJX.ICONS -EPSILON.ICONS  5V */GSINFOS/GSinfosGSINFOSSX(ffffoffffffffffffffwzwwwwwwwzwwzwwzwzzwzwzwzzwzwzzzzzwz  /GS.INFOS/GSinfosGS.INFOS8HU]U_U]Q_U]U_U]U_U]U_U]U_UUUUUUU_UUUUUUU_UUUUUUU_U\U_U\UU_U\UU_U\UU_\U_"/""""fofo//oo"//""""""oo//""oo//"/oo"/""oo""""""fofo LzTB EPSILON.ICONSNS5B BJX.ICONS.ICONSBGSINFOS.9.ICONSnBrejouxjouxd QH<???? ????????< FAZ differs from other "filetype changing" programs in <:that it allows you to also change the auxiliary types and access bits of files.A Little Background=; For interested parties, here's the scoop on filetypes =;and access bits. Each ProDOS file possesses a primary and > This is pretty simple...just RUN the Basic program FAZ. ?=It loads FAZ.OBJ, some machine language routines it needs in :order to talk to ProDOS, and you'll soon be on your way.?= After a title page, you'll be presented with FAZ's main >sections describe what happens when you choose this command.!File Selection and Operations<: While selecting a file to work with, you can use the <:arrow keys and Return to select a file. The display will 97"jump scroll" to show additional files. You can enter ?=subdirectories by selecting them, and "pop out" by using the <:"." key. Hitting a slash ("/") allows you to enter a new ?=prefix to work from (handy for quickly switching directories >< Once you've chosen a file, you'll see some analysis of <:the primary and auxiliary filetypes, and a listing of the access bits.A: Change Access Bits>< Allows you to modify the kinds of ways in which ProDOS >< The data statements are arranged by primary type. The ;9first data line for a given primary type is given by the 97formula: 40000+(primarytype*10). This allows for ten 7different types of files using the same primary type.;9 I think I did a pretty good job at collecting these :8various filetypes, but I probably missed some important ?=ones. If something you think should be in the table, isn't, ?=I'd appreciate hearing from you so I can add it for the next version of FAZ.Other Notes>< This is a useful little program, but, like any utility =;program can cause havoc if used carelessly or improperly. Let's be careful out there...=; If I'd written FAZ in assembly language like I should @>have, this program would have been a lot cleaner and faster. 7But I needed something quick 'n' dirty, and it works.;9 If you have an AppleSoft compiler of some kind, try > Change a file's attributes" :" ProDOS Quit" :" Exit to Basic" $21:"Enter command: ";:A$ .A$"q"A$"Q"ĺD$;"bye": 8A$"x"A$"X"ĺD$;"prefix";WP$::0 LA$"c"A$"C"İ10000:1000@ V(7):1060F  "File Attribute Zapper 1.0 By Bruce A. Mah" "_______________________________________________________________________________"  ' Change FileType dialogs, etc.( '1500R '10:26);"... Reading Directory ..."m 8'D$;"open";CP$;",tdir" B'D$;"read";CP$ G'A$:A$:A$ L'NF0255:F$(NF) V'(F$(NF),7)"BLOCKS "FR$F$(NF):10090 `'NF j'D$;"close";CP$ t'NFNF1 F(1::(11);H P(CP$;54);(FR$,35,5);" of ";(FR$,58,5);" blocks free" Z("_______________________________________________________________________________" d(:" Name Type Blocks Modified Created EndFile SubType"On("-------------------------------------------------------------------------------"bx(SS0:SP0:IP0|(NSNFSS:NS12NS12(6::(11);(ISSSSNS1(IIPĞ(F$(I):(I(18::"_______________________________________________________________________________"|(20::"Use arrows, to select, to quit, '.' to go up, '/' for new prefix: ";:A$(A$(13)11000(A$(27)ı(A$(8)A$(11)10600(A$(21)A$(10)10700)A$"."10800 )A$"/"10830)(7):10450h)IP010450.r)SP010630g|)5SP:::F$(IP1)::F$(IP):IPIP1:SPSP1:10450)IPIP1:SP11:SSSS12:10400)IPNF110450)SP1110730)6SP::F$(IP)::F$(IP1)::IPIP1:SPSP1:10450)IPIP1:SP0:SSIP:104000*I(CP$)121\:*(CP$,I,1)"/"ĺD$;"prefix";(CP$,I):D$;"prefix":CP$:10000cD*IoN*1500:S*"Enter new prefix (RETURN to keep same prefix): ";A$U*A$""10860V*(A$,1)"/"A$"/"A$W*10900X*D$;"prefix";A$:216,0b*CP$A$l*10000+*216,0:(7):10830K*(F$(IP),18,3)"DIR"12000+I015:(F$(IP),I2,1)" "Ĺ817I,((F$(IP),I2,1)):I +816,I+784,10:771,196 +768%+KN0*+PT(788):AX(789)((790)256)4+I0NT1:(PT(I)PT)AX(I)AXKN1:TFI:1109099+(PT(I)PT)(AX(I)0)KN2:TFI@>+IQR+6::(11);_\+F$(IP):f+"Primary type: $";:833,PT:832:KNMN$(TF)""ĺ" (";MN$(TF);")";p+40);"Auxiliary type: $";:833,(790):832:833,(789):832z+:KN0ĺ"Unknown filetype":11160H+KN1ĺ"Primary/aux types indicate: ";DS$(TF):11160p+"Primary type indicates: ";DS$(TF)+"Access bits: $";:833,(787):832:" ";:11600+12::(11);"-------------------------------------------------------------------------------".+:" Change Access bits"]+:" Change Filetype (automatic)"+:"

Change Primary type"+:" Change Auxiliary type"+22::"Enter command or to exit: ";:A$+A$"A"A$"a"22000+A$"F"A$"f"20000++A$"P"A$"p"23000D+A$"X"A$"x"24000X,A$(27)10405j,(7);:11220t,"$";,833,PT(X):832:" $";-833,(AX(X)256):832 -833,AX(X)((833)256):832-" ";MN$(X);30);DS$(X)-+P-X(787):X$"":"(";:X127ĺ"Destroy";:XX128:X$", "RZ-X63ĺX$;"Rename";:XX64:X$", "yd-X31ĺX$;"Backup";:XX32:X$", "n-X15ĺX$;"RESERVED BIT 4";:XX16:X$", "x-X7ĺX$;"RESERVED BIT 3";:XX8:X$", "-X3ĺX$;"RESERVED BIT 2";:XX4:X$", "&-X1ĺX$;"Write";:XX2:X$", "I-X0ĺX$;"Read";:XX1:X$", "]-X$""ĺ"none";h-")":n..D$;"prefix";(F$(IP),2,15).D$;"prefix".CP$.10000B N12::(11);"Prim Aux Type Description":"-------------------------------------------------------------------------------"T*N14::(11);l4NZNNTZS:ZN8ZN8~>NIZSZSZN1HNIZIĞRNXI:11500\N:IfN23::"Use arrows, to select, to quit: ";:A$pNA$(13)21500zNA$(27)11170$NA$(8)A$(11)20130ANA$(21)A$(10)20170SN(7);:20070cNZI020070sNZP020160N13ZP:::XZI1:11500::XZI:11500:ZIZI1:ZPZP1:20070NZIZI1:ZP7:ZSZS8:20010NZINT120070NZP720200:N14ZP::XZI:11500::XZI1:11500::ZIZI1:ZPZP1:20070ZNZIZI1:ZP0:ZSZS8:20010S14::(11);:XZI:11500::33);"... Working ..."T788,PT(ZI):AX(ZI)0Ĺ790,(AX(ZI)256):789,AX(ZI)((790)256)T784,7:771,195T768$T10000U12::(11);UX0BV"Enable Destroy bit (Y/n)? ";:A$VVA$(27)11170wV(A$"N")(A$"n")XX128"V:"Enable Rename bit (Y/n)? ";:A$,VA$(27)111706V(A$"N")(A$"n")XX64@V:"Enable Backup bit (Y/n)? ";:A$JVA$(27)11170/TV(A$"N")(A$"n")XX32V^V:"Enable Write bit (Y/n)? ";:A$jhVA$(27)11170rV(A$"N")(A$"n")XX2|V:"Enable Read bit (Y/n)? ";:A$VA$(27)11170V(A$"N")(A$"n")XX1V787,XV12::(11)::33);"... Working ...",V784,7:771,1955V768@V10000RY12::(11);Y"Enter new primary filetype (RETURN to leave unchanged): $";A$YA$""11170Y23500:X1ĺ(7);:23000ZX255ĺ(7);:23000  Z14::(11)::33);"... Working ..."%Z788,X:784,7:771,195.Z7689(Z10000A[X0N[A$""ıb[Y((A$,1))48s[Y32YY32[Y0Y10XX16Y:A$(A$,2):23510[Y16Y22XX16(Y7):A$(A$,2):23510[X1:]12::(11);. ]"Enter new auxiliary filetype (RETURN to leave unchanged): $";A$? ]A$""11170^ ]23500:X1ĺ(7);:24000y ]X65535ĺ(7);:24000 ]14::(11)::33);"... Working ..." ]790,(X256):789,X(790)256:784,7:771,195 ^768 ^10000 !@ Filetype translation table!AB!B Format: Primary type, Aux type, Mnemonic\!C Description|!J1,0,"BAD","Bad block file"!T2,0,"PCD","Pascal code file"!^3,0,"PTX","Pascal text file"!h4,0,"TXT","Standard ASCII text file" "r5,0,"PDA","Pascal data file"2"|6,0,"BIN","Standard binary file"S"7,0,"FNT","8-bit font file""8,0,"FOT","SOS Fotofile (graphics screen)""9,0,"BA3","SOS Business Basic program""10,0,"DA3","SOS Business Basic data file"#11,0,"WPF","Word processor file" ,0,"SOS","SOS system file"B#֜15,0,"DIR","Directory"b#16,0,"RPD","RPS data file"#꜃17,0,"RPI","RPS index file"#18,0,"AFD","AppleFile discard file"#19,0,"AFM","AppleFile model file"$20,0,"AFR","AppleFile report format file"($21,0,"SCL","Screen library file"S$:25,0,"ADB","AppleWorks database file"$D26,0,"AWP","AppleWorks word processor file"$N27,0,"ASP","AppleWorks spreadsheet file"$32,0,"","/// DMMonthsAppt"$33,0,"","/// DMDaysAppt"%34,0,"","/// DMGraphixData"1%35,0,"","/// DMScreenData"P%36,0,"","/// Desktop Mgr"o%37,0,"","/// Desktop Opt"%38,0,"","/// DMNotePad"%Ɲ39,0,"","/// DMSubLoad"%Н40,0,"","/// DMMacroFile"%ڝ41,0,"","/// Dictionary"&䝃42,0,"","APW Text File".&`80,0,"","Generic word processor file"V&j81,0,"","Generic spreadsheet file"&k81,32769,"","Digit spreadsheet file"&t82,0,"","Generic database file"&~83,0,"","Generic object-oriented graphics file" '84,0,"","Generic desktop publishing file"0'85,0,"","Generic hypermedia file"]'86,0,"","Generic educational data file"'87,0,"","Generic stationery file"'88,0,"","Generic help file"'89,0,"","Generic communications file"(ğ90,0,"","Generic application configuration file">(96,0,"PRE","PC Transporter ProDOS pre-boot driver"q(n107,0,"BIO","PC Transporter BIOS and drivers"(109,0,"DVR","PC Transporter device driver"(111,0,"HDV","PC Transporter MS-DOS hard disk file" )160,0,"WP","WordPerfect IIgs document file"9)161,0,"MAC","WordPerfect IIgs macro file"g)162,0,"HLP","WordPerfect IIgs help file")163,0,"DAT","WordPerfect IIgs data file")164,0,"VRT","WordPerfect IIgs virtual memory file"*165,0,"LEX","WordPerfect IIgs dictionary file"%*171,0,"GSB","GS Basic program"V*172,0,"TDF","GS Basic tool definition file"|*173,0,"BDF","GS Basic data file"* 176,0,"SRC","APW source file"*!176,3,"ASM65816","APW / ASM65816 source file"*"176,4,"BASIC","APW / Basic source file"3+#176,5,"PASCAL","APW / ORCA/Pascal source file"X+$176,6,"EXEC","APW / Batch file"+%176,10,"CC","APW / C source file" +&176,30,"TMLPASCAL","APW / TML Pascal source file"+*177,0,"OBJ","APW object file",4178,0,"LIB","APW library file"2,>179,0,"S16","GS/OS / ProDOS 16 system file"Z,H180,0,"RTL","APW run-time library",R181,0,"EXE","GS/OS / ProDOS 16 shell application",\182,0,"PIF","Apple IIgs permanent initialization file" -f183,0,"TIF","Apple IIgs temporary initialization file":-p184,0,"NDA","Apple IIgs New Desk Accessory"o-z185,0,"CDA","Apple IIgs Classic Desk Accessory"-186,0,"TOL","Apple IIgs disk-based toolset"-187,0,"DRV","Apple IIgs device driver"-187,1,"DRV","Apple IIgs printer driver"(.187,2,"DRV","Apple IIgs interface driver"W.187,3,"DRV","Apple IIgs AppleTalk driver".187,768,"DRV","Apple IIgs MIDI driver".188,0,"","GS/OS / ProDOS 16 generic load file".189,0,"","GS/OS File System Translator"/190,0,"","ProDOS 16 load file"3/191,0,"DOC","ProDOS 16 document file"w/192,0,"PNT","Compressed super hi-res picture (PaintWorks 1.0)"/192,1,"PNT","Compressed super hi-res picture (PackBytes/Eagle)"0£192,2,"PNT","Compressed super hi-res picture (Apple Preferred)"F0ã192,3,"PNT","Compressed super hi-res picture (Object-oriented)"{0ʣ193,0,"PIC","Uncompressed super hi-res picture"0ԣ194,0,"ANI","Paintworks animation file"0ޣ195,0,"PAL","Paintworks palette file"0197,0,"DRW","Draw Plus data file"1200,0,"FON","IIgs font file"E1201,0,"FND","IIgs Finder data file"n1$202,0,"ICN","IIgs Finder icon file"1B205,0,"ACE","ACE-compressed sound file"1`208,0,"MS","Multiscribe 3.0 file"1213,0,"","Generic music sequence file"2213,32770,"","Diversi-Tune song file"A2214,0,"","Generic instrument file"[2215,0,"","MIDI file"2223,0,"DEV","COMMAND.COM device config/driver file"2224,0,"LBR","Telecommunications library file"3224,32769,"ACU","AppleLink Conversion Utility file"63 225,0,"MAC","Macintosh file in MacBinary format"U3226,0,"","AppleTalk file"3238,0,"R16","ED/ASM 816 relocatable object file"3239,0,"PAS","Pascal area on a partitioned disk"3240,0,"CMD","User-added Basic command file"%4241,0,"","User defined type #1 / Overlay file"Z4242,0,"","User defined type #2 / Database file"4243,0,"","User defined type #3 / MouseWrite file"4ȥ244,0,"","User defined type #4 / AE Pro Macro file"5ҥ245,0,"","User defined type #5 / ECP batch file"85ܥ246,0,"","User defined type #6 / Description file"s5楃247,0,"","User defined type #7 / Temporary work file"5248,0,"","User defined type #8 / Merlin linker file"5249,0,"OS","GS/OS / ProDOS 16 operating system"%6250,0,"INT","Integer Basic program / Beagle Compiler program"T6251,0,"IVR","Integer Basic variable file"6252,0,"BAS","AppleSoft Basic program"6"253,0,"VAR","Variable storage file"6,254,0,"REL","Relocatable file"66255,0,"SYS","ProDOS 8 System file"7OÃ-1,-1,"","" !"#$%&'()*+,-./0123456789:;<=>?@AB LL10!j;80L0j80L / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)<L®ЮӠꠦ,3-.L{Ok{OOBD p )?0/0!ee 4L L?0)?  8 LA Lr8 e8` eLM` 4`Hh`L IH # #ah=`=hhL|  8 WA*( K} > ` N ijn Dj4(#ƣ#ǣ@ C !$@ `# ;#mD8D!LC! !iI y @y|"~"i Jf gȊ m~"~" & H6L4 582+L[ؗC6ˀƎ$ABs2T V!2;Ǻ W N2-B  yA4ɈD4ɫD>ɭD>D9D=D|>D>DhLDNA4DEAED6o&D$ɛD ZD4RBBV5"ɠD1ɉ Q0YɿaƬA)LK8 L#ɰ 0=W1I1[D@§Ɇ֭D/HE/H˹GM%Z$Oi Ϡ% Fz ʸ:AlՑ~ȍ5[#L &΍ -B a&I6&)PA- 2Li%hE/hQ-B hhL%4!9!! ZH2E@*E "EEE  ''9q#c, БjƠ CL$ɢƷƠ} &A}[]ɔ*'"BjAڀ-ˀh)',.,.x@̀{w /K]]]zӽȑ B!\ pF!B"q2q#q($u5&H&\%| !C(\'q-@,Α*\)E9 ٠i&ɑ  % ӬX΅C 6@ίƍ#J[$EUu$I@ɗ &‘ƅǾi@ 2C9 ΠӐ nƍ}.ƭ. "C̨$ǩDҡ"CLb ƍCUHǑq& Ǫ@eB } %fǮԢɠ Q@ ǻ U B-(Ƒ ё+>@͵A 2-:׮1ץ'd@ BA |-δ-Ϋ--F@ @/(]/*Ko. K/h ɠGL-hL"Ho.]Z& ۍj(zho.`x(  +Bp.`( - I 0A ˠ$ VGAa BZa :AFW_1ɀ ]`UTA 8A$q.p.?D/ EZJW`Pҩr!l'l u(u u+u@Œ u-!%C%!ɷ!=$Y0/ ڀs D C bR "( \`C > @Y_ @A4eA H 0m`  ȩ.IL|" 1%_4 Eɍ HɮGeɮIa 2hɠɭ ɫ 4S'#aЩjB BGf $I/  8` A 2`%ƪ $2G`: [L#`EL 82 :Ii `+<'&&J!/Zz C$ k3h2f#`ŠӠ20΋2` &ǿg韃4eDd?DZ] 0@'}  gǠ!7g_VgƦ!l"}(`33q ?c_A3i:$ZK 3LuX 3$`r$3` 2PS " 2`?FHh`h)4 ?2}ɍ}744)(J4"P`R?4 74` >4`d4E&@@8@iMi42kd` 4 #"Bp @D/E/p "ED/E/D/D/E/` 5 c]%$%#&%\#%ƭL"?)?))𮗛4") +5 5 6 GH / 6d C4 X Ez SS^Ȯƛ@ Ƞ2򠤑ƍQVX€s0c!c#P EFD/|"7A H; )@@0D@ S00000 @ WU$# L `=#M+xB \3Ȍ@""Ȯɷ~=Lo= ōϠǠΠ٠ 73 -Cg ƶ$BCC7  S僠M@B]8ҨƩ5 Ya H ʀAA 2ɛXML$ɕɈ-ɍFCAJCA8$] \ξ.$ڻ ǀÖěDg"$RȢ JCC  WD B]] X ا3C W]]'卧ЧEW<kT XŠ) H7DFCGDɍF%ɀ DɛкL.DNA9B+ǂ4 r.LM"#D!%^AM;L: C D /e:;J Z DzL;MU7RCLMC < ^L@@W:@#C iD'FLiDMʠ AUDT'GÅ76`7d6`C UECw`0S Z 0/Ȁ5$ /U BLA3AC`ȱL0P hw`ZƃPʁP̱Wf@b@0NOǩ1ᜆٽLWDEE JE @ -! "rFGG7HǠOZ @ E E Nj$!E. 0 ŭEC  G aGlM 2rFL1L#Oǭ^$ ! ZGGHSF[Y @ @XG ɀɠ E) G G`CG% FhhXL@RxCɕ ACň GLGɰ+ɺǰ#GyB ) oJ @XLgG` !HL :H)|"}"h)J~"" ("}a |"|G~" ! !`HH i^ C  i=$h 00LhɊY=Ţ 2FB]0$ ɍ9#Ɉɰǰɺ4o0 ˀ0DFI1D"I2DI3LIJ@A @ @B @덂RLNHD/dNmK/B àĠŠƑ`ʽ8 8` II I `E/D/ Zɀ[q[ _ _(Bɖ__(A _ _ (B __(A _ _@#02Y Y#A  Y 8LJ@P88@888(0HڐJό;"庠X뺠"Gj 亠JLD>`ILJ Bɍ! 1 3 ӡZ#YŠ?B2)ٍF<%@QR T> wK@?󠤰 @LH;E 1CRL0KQ ?1 2$I IZ  ` (3iqL S PLČLlLsL ]IȦL] ̴LVƜ ؝T TS TSPOP Pd1Nd )dd_$^[ѭ! U'JC!BLM ƕh "S\,VƟ`ֈ LJ$UV PɱDNɲLOɛLiP0O1OgOhO ˠ1OHX"A@QƠ C`ICpEJ zZ`W znj0OgOgO>N u ̇@AB]堺# ]Ƞ= mu6H6 2 `2SVA Dzaɱɛ.K @:ɭ~ƮA.A`ppM`LƜD/E/ r.qI] S P]m]E ɛ7ɍ3Ɉɮ۰_)]HM hʀ hh1L$]` q2d% "j  k3'I ɯx(vC:#RƠ ǠL.OC@/@IADkkEȯLʎFo堭RQRŠyAMWM@F8BZDO]F @ɠLtƍ庠  A/ JD뺑=庑G E4|5C4?49 EGBE3AKL33Fᠺ 3 VT; ; YTZT UTp Bh7'00HpTTIH)$p)Tp 0`堤LDzӅ`p`pRQ V8VVB $UC 2SLTQI`eUcU CVfUgUbUϑ'HAUhidUU ZL7U`f`LRC@2 1@LiPdEVHVId DVdƑc`ap`}V V VL|V[Q IQhhLUȹ Z::X:ED/E/8VHV hh ɰ$ ` d'A/)pJi W)hW**i*W \3 B]庱h@@5Ǯ Wj@Aa@A]ɸɱэ8鰑 oH5 Ȯ*W7 hɍ ɛɱɲ8jjW g)piA/GWBW LVƭA/ L X GXXH!X) X!4W X X'!X XɴAQLXm ؀DEA󠺠,D XpD/E/qE/J Xʊ Y"X 0 {Y$/AD:B   J J)I'2I"JU'@A@:+A$DL`UA42I:E $@@I@%=H4K4)I:4=H` B3 YBX@X 1X $X X@ WcXXe`80` 2 1LJ;?AƄ򮍠QF@A 2ɳL[ɲɱɛL$L[;A @ Zn[LfbLUNɫGxsـJoL堸D+Nѧ0@L dzA3%ffgwIH<\@׀|@' !1F xXbA@)kK;Bgx[; :@#BONAyb@CDB7B K1@Bl@[@yyG< B4@A,\A7 B/A1,@"GgBTBoȅB%@@W#CDuEPBOFVB Z }A?12?` c D>ADWUDBB  HBh"!xQ!=K@FCz)˼>yADEBRE>)"p@l+C` (GqE CBpjDۺ"JQA1lށE FE!!G(j˧qBA!!jBEBQLkSA̪D̂D"UIB!!!TGiAǃ̻˻ sEzA@.@̭BX@ܸ#eH"#&"A"4A!xEK6A*('V@CQB 2SL"2B  BF yBBD)qA#3"!1B"LEB!DmRA@˼}!1 JkݚGtHB#CB"2G32!D!BE)ZEo!GABIG˄iB5TJC@#"BCSC)˼ ˀb1&A* F̻%UCB" 23ZR""1"F GDv * ̻r4{BܚO@"##B" eI7!aA/{3"C4d$IFJB~ހa@"W?Iʅgˁ=FAa@ @2A$# B"hb! m݃ E3Czy*˺B!Fs!7qI#""#2""B!"P@&A"&t!4!"D X˘ 'D> K̻U1A{ܵFuQB#1B"2E"!W ]BTu'VDC""B" ^Qː]@#B j]FxݲB"2Q1B"2"!"n&g˺e4DC$D3[WBF̀)dQz ݴ! 2ADYA##1E!)̗dVUC4T1*F  )$r ݺc$ 2!"2B"#W!D 7QX@B܉edDfRLBDp*̒XWE ̻"2!B"#B"!"\ga[˼ʈvU3x BE̺ D2! !7"$WxkiʖuT4x1`]BE̻*"!̺ B"2 I"""2!"!@ Wwx0Y1"$˨txs˻-'"2" !-"ͺ2 ̻˕#3~ 2"B6B$bGvSJQ G_˻,Ei@B3 "$UR""1#1O!B"ʪDNB!""#OD"!"!%wwxID&BE:9DC< @@&2)ɪlDB BC"7=Ia""fH*#"""!$Xx081A6!J;̺56BCB F#3"CB3ɫ0 GQB" F!23!")!#Wxx15!&b$w˖[˻˺˽B112D#g $#A#SC$D4B%7ܼr[̻1TM#433B2 "#"2"3WsGB˩˖ 40+O15C5B24DC3I3TTCD YʔW˺u" 4UB23344BF5CEwBwuBܦ!)˼̻̼0BCC4434E34DB)Je1zIEBF˹TFDUDSD35C3DEE4gyyxf Bە!kLN443D4CBES$YnH26ffd&˧S7D4BTJR44VT3EEDDfUVxRtYlAD vG̛̻ Bl&T4TEEBD)%7.ۺ̹u0;˥RFD4DUTDETVUEfeyDxgr ݸfT,uf.̼mT34UuF4C33DSEUBDd48#yO˻y˕B$DDBU eVUUET4UUFfVfvfTC1 k,BJˆfgH˼fP?d2DTS2B&iTCC{"W˗gxܻu2UD4EFEeEUSiT@UD6gamK9BqGUwW̼DF?[T6CC54CD45DwDUEA%ܸf˹cIe ?TEUUVfVylNXX ]EܖE!X{BB˻D4Cn 4CcBEzCT3!(ri!ͼʗ24UCTUDUdeobTSETEeUf6(@fWwBBͶ 3C5ES43$3E$jVe2<̖!%jD̹c_CEEdEDUDC4ETUCUUTwwkX'wa41mݺdXkR~ B3TC4$2DS34&UT2&ܨ15iDX1SBDTGDTU3BE DDUGx@Fw EwvBBM)nAECDC2"C4F$fhbjb ̹Q43BD2ElJEDd4T5D5fEgx@F""GshvItFTvE\Fm[̼D333!B?UA{˖!pDyr$C$4DETDPdEBESUF0FwvwxwB̧SguA1̼DP233#C!EIa B#fS13C34TB4%C#UUDfEDUVUWxeWgvw{on"BEge60kB ̼"!DED̺e!gCC#4DVT49DTUxyxxvwwvx@wV˼ܦVfb˻iU܂!abj˗1m ?3$C4DTDCDEDDTTWzxvgwfi6yܧB"7ۖff0 ̼}B)( ˩cpB3CI/5B4kAETEywxw{qQ*eI˗FʖfB *B˻B˼~!#a'v2? 3CB4DDCBD1UDSDDgy꫆3Wivc"nH@˻B{@!Fuh̬̻c1D$3~CDTBD4EEDxO ܙB#B ˘d2 Df]?~!!d(B!$WeB!4`4:CDUeUyB ݪ!7BܺfB'e[EBww"DZ327vCD423#H535kCeW#2XyvC2ݍ A3Ve@%0#5"BcQ332#4SDCD3DETFybV"̻13GeUVE#!""̃"BsE UvANND#343C$DEDVBЊͺc"#D$"#"!!#"B[^BFy@ BXvcEeO 4C54EUEi̦2B3!Z2!Bo  тaA&Q&BSivT1ECD33BC TEW3BܹR2`I243 NOͭlFWv2Ex@6gBF3C3DCCDTXl*9˦3" ##5CS/dAe@B Wwi6Ce$BD]33D4D4FyMZD̸d32"#33V2 ^QhBcDUAD &vgtXVfsIR\Q3434DDW\JgBܹd2#"324D}[TEB!F!vvwUhSb]"43DDEh,JB̺2!!"#$"k  c!BwwxvWF!#4DUVH]AduB!B ZQ/ݦ q#!!BSF.:xTRDEEgBt課@ BdE}\@!""B9\UDFB\M !B#aȺ@a!!3#BƋx̹A DCfDnۃBDk@!!B"9u[ DxgEBRwTr!bG!"!TqVp׮BvW:lX@pG!BB%2ACJ@wDFrju̹Iw'r @BDAp BCh@"")BgNuBCGXfGZDD3m˺ͷ!$jaD ҃!EB`@"22!BZFDEDBE`PB*Qr@k  E ""iBR('BjEBF|f fD D)Jq ܹxÄABF^@e _A" !cAB bJP!BJDB݁ޑOeB[@BB31Y0!_.}]ܹ fCa"Bawiw [6A]B ܻBr cE&!#xAG@ ݰGD`BBU@ DP#B"!zS 9AiPMEEC@D"E [C ""!!) bT BwP\BWFͽ _GD]BK! #!G@BB" ޹Z"@F "!"!iVC2 ̼OE]IdξBc_ABZGB"!B"12X\kYBBB̽\B]D^B\HE ""!"E2!"?Y9BB "B QCC^ (B $D"!!Yq""˼r(KB qB 816/Paint D[F DOO'k@`@ B^UU BD@BD@DDARB"BA,p 7M B  BpPB!@ I P  "?wU __ _Z "3DUfw `s LA  YkyȅnƄ CgȪ{Ʊ Lj{1dW "Hi`H`x ]ϗ$ X`xHZK}@ j#ɿŭ| L ZGGzhX@ Hč hLĩ1y(rxxũMxx6X"`W#|,A B  F#Bɜ  j! 8% ͢ DFient un programme qui permet de lister tous les volumes en ligne. Faz File Attribute Zapper 1.0 de Bruce A.Mab -------------------------------------------- Dans le dossier les plus, vous trouverez un sous-dossier FAZ. Ce dossier contient un programme qui permet toutes les modifications des types d'un fichier. Spy Edit version 2.3 -------------------- Cette nouvelle version de Spy Edit contient une option de dsassemblage beaucoup plus performante capable de se mettre en 8 ou 16 bits, avec affichage des cles GSistes de l'Est n'a pas eu lieu cette anne Belfort, mais Mulhouse, le samedi 31 Mars. Tous les grands pseudos et les accrocs du GS taient l. Dmonstrations publiques (Soundsmith, Tarot, Scrabble, Conan pour GS, scanner quickie) et prives (des images en 3200 couleurs , Photonix 2) se sont succdes jusqu' trs tt le matin. Premier avril oblige, un petit init dans le systme des GS transforma tous les icnes en poisson la date fatidique. Salvation V.1.02 -------------aractres.  > {iH "{iH") )   {iH"{iH" u u ` ` N N ; ;   {iH"{iH""HHH-"hH "HHH-"hH "HHH-"hH "HHH-"hH "HHH-"hH ""H"h*"{i+k==les plus\N447.==Hyperstudio\N446==Faire son disque dur\N445==Broderbund\N444==Polygonia\N443==Custom GS.OS\N442==Domaine Public\N441>> Le coin hard et soft \N3 ==Les diffrents fichiers\N416.==Algorithmie \N415==TML Pascal II \N414==TML Pascal et Toolbox\N413==Assembleur\N412>> Initiation \N2== Annonces\N510.== Infos\N509== Essai Quickie\N508== Solutions de jeux\N507== Moniteur TV\N506== GS astuces\N505== Essai Renaissance\N504== New SCSI\N503== Editorial\N502>> Sommaire \N5== Quitter\N411*Qq. == Rserv aux non-membres\N402== Imprimer un article\N401>> Fichier \N12>>@\N0X==A propos de GS Infos...\N400==-\N401D. ;8[i """"""""""""H""{i+k ;8[i{iH(XJ"HH{iH "h"{iHhn}J"{iH H """ :"99"":""""F:""""i:"""(:""2:"tt"P:"00"Fi:"))"}:"":""H"h "{i+kFCertains portions of this software are copyrighted by TML Systems,Inc.(c)-1987 TML Systems,Inc.GSclubCMaintenez le bouton de la souris enfonc et appuyez sur une touche.6M.Lerman , D.Melchior, J.Rey , B.Tomeno , D.Toussaint AH.Benon, F.Courtot, C.Dreyfus , Y.Gobin, Hacker Croll, G.Jarrige,Editeur:&Pour quitter un article avant la fin :Ont particip ce numro :FGS Infos n9,le magazine du GS pour les membres du club exclusivement.Vu ;8[idݭ : i ݢ:"""ɢd,:"" """"H"hH "h={iHJ"{iHU" {i+k-Pressez une touche pour continuer la lecture. ;8[iHHH "hۆݩۍݍ" ,"j "N%  "$&(*,.02468:<>@BDFHJLHH "hHH""",:""""""HH "{i+k2Cliquez la souris pour quitter l'article. ;8[i{iH((XdJ"HH{iH "hۆۢ" :"" """:"tt"-:"33"{iH(7J"{iH 00H "H"hۢ "{i+kVu@Les fichiers sont des fichiers de type texte avec fonte tendue.=Rcuprez le fichier avec GS/Write ou un traitement de texte. Vous voulez imprimer un article: ;8[i.."""{i+kAlgorithmie: deuxime partie/GSINF9/articles/Art.ALGO2 ;8[i"!""{i+k les diffrents types de fichiers/GSINF9/articles/Art.filetype ;8[i++"'""{i+k&La liste des disques du domaine public/GSINF9/articles/catalogue ;8[i!"""{i+kPersonnalisez votre systme /GSINF9/ARTICLES/ART.CUSTOM.GSOS ;8[i**"+""{i+k*Une dmonstration du FillMode par J.Harper/GSINF9/articles/art.polygonia ;8[i"'""{i+k&F.Courtot a contact Broderbund France/GSINF9/articles/broder ;8[i"""{i+kUne ralisation de J.Rey/GSINF9/articles/DISQUE.DUR ;8[i!"ww""{i+kDes nouvelles de la section /GSINF9/articles/art.hyperstudio ;8[i"    "{i+kLes plus/GSINF9/articles/art.les.plus ;8[i{{"kk""{i+kla rubrique jeu/GSINF9/articles/Art.solution ;8[i""{i+k Editorial/GSINF9/articles/art.Editorial ;8[iff"NN""{i+kLa SCSI turbo par J.Rey/GSINF9/articles/NEW.SCSI ;8[i"$""{i+k#Le coeur de nos crans par H.Benon./GSINF9/articles/ART.MONTV ;8[iVV";;""{i+kLes trucs et astuces du GS/GSINF9/articles/Art.Astuces ;8[i"""{i+k Routine par Hacker Croll/GSINF9/articles/art.asm ;8[iN N "" " ,""{i+k+Un utilitaire disque dur de dfragmentation/GSINF9/articles/RENAISSANCE ;8[i " 2""{i+k1Initiation Pascal et la toolbox par Marc Lerman/GSINF9/articles/Art.TML.5 ;8[iR!R!"4!4!""{i+kTML Pascal II par Marc Lerman/GSINF9/articles/Art.TML.II.2 ;8[i!!"!!%""{i+k$Essai de ce scanner main par J.Rey/GSINF9/articles/QUICKIE ;8[iB"B""*"*"""{i+kLes dernires nouvelles/GSINF9/articles/Art.Dernieres ;8[i"""""""{i+kLe prochain numro/GSINF9/articles/Art.Numero3 ;8[i"#"#" # #""{i+kLes petites annonces/GSINF9/articles/Art.Annonces ;8[i{iH"J"{iH22"{iH22"{iH}2}2"{iH<2<2"{i'H11"{iGH11"{igHy1y1"{iH8181"{iH00"{iH00"{iHu0u0"{iH4040"{i'H//"{iGH//"{igHq/q/"{iH0/0/"{iH.."{iH.."{iHm.m."{iH,.,."{i'H--"{iGH--"{igHi-i-"{iH(-(-"{iH,,"{iH,,"{iHe,e,"{iH$,$,"{i'H++"{iGH++"{igHa+a+"{iH + +"{iH**"{iH**"{iHP0J"HH{iH "hHH"{iHixJ"HH{iH **H "{iHJ"{i{iHH{iHHH """:"l*l*":"O*O*"#:"'*'*"-:"**"7:"))"A:""))" K:"))" U:"c)c)" _:"/)/)":""(("H"hHH "{i+k;GS CLUB 6 Impasse la Croix Pommier 94120 FONTENAY-SOUS-BOIS3Si vous ne dsirez pas devenir membre, effacez-la .8Cette disquette est l'organe de liaison interne du club.7GS Infos et ses articles ne sont pas du domaine public, ATTENTION)Vous recevrez GS Infos tous les deux moisDes domaines publics gratuits.'Vous bnficierez des services du club.Cotisation annuelle : 360 F..Pour recevoir GSInfos, devenez membre du club!Vu@0000000000000000000000000000000000000000000000000000000000000000@0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0@0F000000000000000000000000000000000000000000000000000000000000F0@0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFF111111F111111FFFFFFF111111FF11FF1111111FF1111111FFF0F0@0F0FFFFFF11111111F111111FFFFFF11FFFFFF11FF11FFF11FF11FFFF11FF0F0@0F0FFFF1111111111F1111111FFFFF11FFFFFF11FF11FFF11FF11FFFF11FF0F0@0F0FFFF1111FF11111F1111111FFFF11FFFFFF11FF11FFF11FF11FFFF11FF0F0@0F0FF11111FFF11111FF111111FFFF111111FF11FF11FFF11FF1111111FFF0F0@0F0FF1111FFFF1111FFFF11111FFFFFFFFFFFF11FFFFFFFFFFF11FFFFFFFF0F0@0F0FF1111FF111111FFFF11111FFFFFFFFFFFF11FFFFFFFFFFF11FFFFFFFF0F0@0F0F11111FF11111FFFFF11111FFFFFFFFFFFF11FFFFFFFFFFF11FFFFFFFF0F0@0F0F11111FFFFFFFFFFF11111FFFFFFFFFFFFF11FFFFFFFFFFFFFFFFFFFFF0F0@0F0F11111FFFFFFFFFF11111FFFFFFFFFFFFFF11FFFFFFFFFFFFFFFFFFFFF0F0@0F0F11111FFFFFFFFF11111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0F11111FFFFFFFFF11111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0F11111FFFF1111F11111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FF1111FFFF1111F11111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FF1111FFFF1111F111111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FF11111FF11111F1111111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFF11111111111FF11111111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFF11111111FFFF1111111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFF1111FFF11FF1111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFF1111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFF11111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFF111111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFFF11111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFFFF11111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFFFFF1111FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFFFFFFF11FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0@0F000000000000000000000000000000000000000000000000000000000000F0@0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0@0000000000000000000000000000000000000000000000000000000000000000 ;8[iߥ߂"t"m"f ["T"M"F"?"8"1"*"#"""""""""""""ɐEɑDɒCɛBɜEɝDɞCɟBɠAɹ@ɺ?ɻ>ɼ=ɽ<ɾ;ɿ:987654321 ,"{i+;ik ;8[i H{iH"hͥ͂ "   {i+k ;8[i"""""""""""{i+kH;i{HH ;[ H "H"hHHH "hhH "HHHH "hhe: "kHH ;[HH"HH""" d&y)H "h "Ԣ"""H"8kHH"h"kHH"k0;8 ;[H"h#H({iH "h%)))XHH "h: ) )d   +;i08k"k ;[ 0 1 :T+  ;i k ;[ k l e:e::D+  ;i k ;[   :0 )   h)+H   ;i(k HH;[H"h H "    hh+;ik ;[HH""+;ik ;[0  +  ;i k ;[0  +  ;i k ;[0   +  ;ik ;[  Ȁ +  ;ik ;[  Ȁ +  ;ik ;8 [  d) e )e     ;e i ;[907301 )80'e     +  ;ikHH ;[ d0b) W  gF @ e )e)8 0  ):  +;ik HH;[ F0D @0>)8 04  8 8  e :e   hh+  ;ik H;[d 8 2 )    8 ) h+  ;ik {cH;[hh+hk {cH;[ JJJ -)0 0 0 0 0 0 0  hh+hhk {cH;[  :JJJ 1)0 0 0 0 0 0 0  hh+;ik{cH ;[ +;ik{cH ;[ I7+;ik{cH ;[ 7+;ik ;[   (+;i (k ;[I7   (+;i (k ;[ I7  (+;i (k ;[ jjjjjjjj +;ik ;[JJJ+)0 0 0 0 0 0 0 7    (+;i(k H;[IIʩ FeI+k H;[ I Iʀ f  8 F F I+kcck8k H;[IIIIʀFf ee&IIhhhh+k H;[ I I IIʀ&&ff !  8  FfFfͥ  IIzzzzzz+kIIkIIk##kkCCkIIk8 # zz(k *kJjkjjjk***k;8 ;[  {iH "{iH{i H " +;ik;8 ;[  {iH "{iH{i H " +;ik;8 ;[H({iH "h+;ik;8 ;[H({iH "h)+;ik ;[:"hH "h::H:"+;ik;8 ;[{iH "{iHU""+;ik;8  ;[{i H)" 8   {iHU"+;i k;8 ;[{i H)" 8d  "zH"HHg"h{iH ~"h"+;ik;8 ;[{i H)" 8d  "zH"HHg"h{iH~"h"+;ik ;[) eH0"+;ikHHH ;[ HHHHH &"  Ȁ8: ))e:  +  ;ikHHH ;[H HHH HH '"  Ȁ 8: ))e:  +  ;i k;8% ;[$ &{i$H-H+H{iH "{i$H{iH1H/H "+'+&*;i)k ;[HHH)H ("h +;ik ;[HHHH)H )"h h +;ik;8& ;[.H,H{iH{iH{iH "{iH2H0H "+(,'+;i*kHHH ;[ )f A [8Ai a {8ai 80))  J ) J) +  ;i k""""""""""""""""""""""""""""""""33333333333333333333333333333333DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffffffffwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww ;[;8 ")) )))));i+;ik ;[ HH H HHH "+  ;i k ;[;8")) ;i+;ik ;[;8" ;i+;ik ;[;8+" ;i+;ik ;[HHHHHH H$"h hhh+;ik ;[;8 " ;i+  ;ik ;[;8 " ;i+  ;ik ;[;8 " ;i+  ;ikHH;iHHHHHڢ "hhk    hhZ"HHkHHHH "hk ;[  "ኇ+ ;i k   ;[Z z Z"+hhhk . &     ;[Z z Z"+hhk ;[ ڢ "+  ;ik ;[  "+  ;ik   ڢ "+  ;ik ;[ " +hhk;iHHHڢ "ኃhhk ;[d  +hhk ;[ȗȥ @ȩ+hkH "hk ;[ "  +hhkHH "hhkH "hk;iH "hk "  k H H H H "(p0   ;ik;8  ;[dd\:"hi ) A[i     + ;ik;8 ;[$&{iH"` V$&") d d dd{iH"$&{iH"(+$#;i"k;8$ ;[HH,*"hH,*."h222202 2 2 22 2.)dHHH" "h!#%#2%2# {iH" 22+&2%1;i0k;8 ;[$$G$dd{iH"$$$$$ $$ + $#;i"k;8( ;[HH0."h! " "666646 6 6 66 62)AHHH" "h!#!%!'%6'6 66H0.2"h)6)66646 6 6 66 62)_HHH" "h!#!%!'%6'6) {iH" 666dd{iH"+*6)5;i4k;8 ;[  ' dd{iH"   + ;ik;8 ;[$$A${iH"$$HH""+ $#;i"k;8 ;[$& " {iH"+$#;i"k;8 ;[ "{iH"+ ;ikk;8 ;[  < $& d {iH"L  +$#;i"k;8 ;[  < $& d {iH"L  +$#;i"k;8 ;[$$n$HHHH$H " "hh {iH"${iH"{iH"+$#;i"k;8 ;[  2 {iH" H"zz$&+ ;ik ;[) +;ik;8 ;[$$$$$) d {iH"L $+ $#;i"k;8  ;[&&& d {iH"!&&  &!L &+"&!%;i$k ;[) +;ik ;[ HH"+;ik ;[ HH"+;ikHH ;[   ȥ  "+ ;i kHH ;[  )   "+;ikHH ;[    ȯ   ȯ   "+ ;i ktruefalseHHHHH ;[HHHHH &"  Ȁ 8 : ) )e:   "+  ;ikHHHHH ;[HHHH HH '"  Ȁ 8 : ) )e:   "+  ;ik;8) ;[//3 (3*(5 *{i(H9H7H{iH "{i(H{iHHH "5/1"++7*6;i5kHZHH ;[ 80,* )e)     HH"%  ȷ ȷ HH" +kHH ;[   ") "+  ;ikHH ;[   "  ) "+ ;i kHHHH ;[":e   Ȁ :    +  ;ikHH ;[   "%HHeHژ8 ("h "+ ;i kHH ;[   " ,HHHeHژ8 )"hh "+ ;i k;8* ;[0002"LHH{iH{i H{i H "{i H6H4H "02"+,4+3;i*kZHH ;[ "N)   Ș "Ȁػȷ)  Ȁ阠+hhhhkZ ;[ )? HH"% ȷȷ HH"+kZ ;[ ) )   +k;8 ;[d)  : )) H"h{i H)"{i H "H{i H{i HO"h)HH:" HH")j{i H)"H i H:" @HHg"{i HHH H H~"h"H 8 H:"HH "h)5HH "h)!HH ")  "+;ik;8< ;[BB)) H"h{i H)"{i1H "H{i H{i1HO"h)HH:"d{i H)"  i{iHV"᩼ {iHV"᩼ H({iH "hХ ɥ) {iHU" H i H:"႑v8pI9) {i H)"H H"8hH H:" 8 i{iHU"H"  B5 HHg"{i1HHH H H~"h"H 8 H:"Ⴋd;HHH "hhh=H ""h9) 4;Ȅ;  "= "BN&; " " ";;Ȅ;  9 ";f) B +>B=A;i@k;8 ;[d)  : HH " " +;ikprinter: console: keyboard: 5m5 v65 @ DOc h^k`n^q` ^`    LL    q t wz}     ccMZ     ^`( +/^2`G Q T^W`ep s~ ^`  gQjQmpsv     ccMZ | 18 "%47:y=y@oCoIC8MyPySVY\_bl orux~    ' *.9 C18e  yyC8yy   * -0: BEy    18 *> CFIL[^aydyg j pC8tywyz}     )  N  Q U `  j 18     r r C8 a a D D # #   0:   C8          " % ( w + w . ` 1 ` 4 Q 7 Q : > = > L 0:P S b C8f ) i ) l  o  r u x { ~     0:   C8   u  u  `  `  N  N  ;  ;          0:   C8    $  5  : = I  Z  _ b n                                  ' *5 ? r        !9$9. ; K NQ[ h u            tt , /020< L O)R)\ l or|                 $ 'a,B@18l    yy   ( 17:=G MSVY\_behkn q"t$w&z(}*,.02468:<>@BDFHJLNPRTVXZ\        !$. 1B O \ _bl rvy     - = J W Z]g t  tt  33  00  & yy..C8C8VyYy\_eC8ilorxC8|yy++C8C8SyVyY\bC8filouC8yyy**C8C8VyYy\_eC8ilorxC8|yyC8C8FyIyLOUC8Y\_wbwhC8lyyC8  :y=y@{C{IC8MPSkVk\C8`yyC8y y#f&f,C8036N9N?C8CyyC8C8 y yVVC8 #;&;,C80yyC8C8yyN N  C8   "  "  C8 x y{ y~   C8     C8 !y!y !R! !R!!C8!!!4!!4!%!C8)!}!y!y!!!!!C8!!!!!!!C8!!y!y!B""B""C8 """*""*""C8"n"yq"yt""w""}"C8"""""""C8""y"y""#""#"C8""" #" #"C8#i# v#2y#2|#>F#2#2#>F#}2#}2#>F#<2#<2#>F#1#1#>F#1#1#>F#y1#y1#>F$81$81$>F$0$0$>F*$0-$00$>F>$u0A$u0D$>FR$40U$40X$>Ff$/i$/l$>Fz$/}$/$>F$q/$q/$>F$0/$0/$>F$.$.$>F$.$.$>F$m.$m.$>F$,.$,.$>F%- %- %>F%-%- %>F.%i-1%i-4%>FB%(-E%(-H%>FV%,Y%,\%>Fj%,m%,p%>F~%e,%e,%>F%$,%$,%>F%+%+%>F%+%+%>F%a+%a+%>F% +% +%>F%*%*%>F &* &*&>F0& N& r& & &*&*& & K' X' e' u' x'l*{'l*' ' 'O*'O*' ' ''*''*' ' '*'*' ' ')')( ( "( %()(()2( B( E()H()R( b( e(c)h(c)r( ( (/)(/)( ( ( ((((( ( ( d3Ik3r3@#~3b3s3k 3 33I33F33I3393333333-4p! 4!4"4 5b75 F5@3W5bz5!~5Z5a5555 5a5 5555 5 5n65p65 5r65r66f66h6+6r6C6j6J6l6a6t6|6h66f66l66j66t66t66t66,77r67n67p6%7 G7 L7 S7u7V7u7d7 i7 8 8 8 68 K8a8Q8b8|8888"B18iB>uB>B_BLC>RC_BC>C_BDFDF1KJK6KLK?KLKDKJKSN}ddN>jNdoNdSOVzO@NONOVPVQ@NQdQdQNQVSVkSVSVTVTVkTVTVTVfUVUVU?DVVVVW8W%W8WbWYWYWXWXWXWXWXWXXYXYYYYYZU)ZCZ0ZDZ7ZEZCZ!ZeZ\xZK]Z\ZK]Z\P[z\[K][z\[K]\z\g\K]\\\\]WV*]D]1]E]8]F]D]"]^^^^^V^] __bVc`ccjdVddd]d` ;[ "$&(*): " +;ik ,@ ~global ;[ "$&(*): " +;ik;8 ;[     : pr ie H  HH H"2+ H) H1 H"} :    A+;ik;8" ;[(@**d(*)ȷȷ)ȷ)Ȅe2 4  )LISTv;' 'LIST.CONFIG]. +LIST.SYSTEMC'% #*LIST.DESCR&vH~ P! LG A)t | Ӡ٠ӠŠŠ Π١ | Ӡ٠ϠԠϠ: H L'' o , |FNNK> +(NNJNMH  e} ӸԠ  e}  (LN" (   宠   J 孭 H "P!# | V} +(Ƚ L:# 2  |   J 孭 H "P!# | V}z* *L$ 2  |   J 孭 H "P!# | V} +(   L]$N+F Z "P!# č | V}L' 4   L%H -  |   $hH t}  h !y  J 孭 H "P!# | V}L"$H" HL%ɰ  H L'~~ L'  8-  ~  1"L'LL' L(L'   i |L'8nDEFP? b, a oN e} z U*L&H Z  <  | $hH t} h !y  J  HɛL' "P!# { | V}L"$ L' Z t Z { e} 6}  , | ez*P8yxz{|}~ c`AL) 8&)%)̀ B~~֍  {`H {h8` Ԯǩ   L*L)FL * L *  L *֍   {`KH {h8`:3,@%8@y{| ~@`8` H |h8` *H*H` **6+v,k2k2=8E-0xOBTTZ'[0[=\/////////\DEF` bCC 7+C `8``  L*  =L,u,? څ څHLq+ `8`? څ4 څ/H' ? L+  څH L+ Lq+8 + b8`8 b`4 څU څMА%$L,U L, 4`48`L-L+-,? H ` 8`? \HI ? L,  # ?8 ??8 8 и H څ ` 8`iii8  `   8`4 ύ ǍѰ 4`孑L- e} 6}   #ɛL/.8n6 e} 6}  L_.N6 e} 6} 堤 5tL/L/$ 0 tL. fw  Lm/,60Lm/G..Lm/HHH..hmhmhmLm/ bL/, b,03 w,    ` ` e} 6} ! L+8  ` | ! 8` L0  8,NnnNnnNnnmmmi,iiL08   bL7+` e} 6}  #ɛLc2L8-  : e} 6} | Р! Lc2e2H` e} 6}  Ǡ #ɛLc2L2 e} 6}  5tLc2Lc2$ 0 tL1 fw  0HL71 e} 6} 堼! | Lw1 e} 6}  H)H8` | V} e} 堤5 e} ӸԠ٠vvHJJJJ uv .h)    7 u 7   7 7 n   7 7   7   7  묠  7    7  纠笠    7    7  堨  堤  7  庠䬠ӬӭӬ Ь  7    7    7  庠  7  庠ïҧ  Р  7    7 嬠t `H) /8L7  h) KL7 JL7HL7U x}L.8 " CL.8 BL.8H ^h @ `  A x} x}`F | V} e} ӸԠ٠vvHJJJJ uv .h) r e} àt: e} 堤5 e}  :   DD      >L9 pF 纠 8 >L98 pF 嬠 y AEBE 堠 x) EE  ,z! eL: 堠 ~ ~L: ) 󠠠 { DD 嬠 | AEBE 堠 }) EE   0  L;  堺  uv 蠠  uv  e} 6}   #ɛL=L=L>LB e} 6}   #L= 1)L=H -  |   ɠҠ$hH t}  h !y  J 孭 H "P!# | V}`8` e} 6}  #ɛL>8L>8 e} 6}  W #ɛL>8LZ>L>L7?LALJAL>8 e} 6}  #ɛL>8LALBLLBLBL>8 e} 6}  HɛL>8ɱɸ )L>8 4  . ? "P!# e} V}  rL>8 4  . ? "P!# e} V}  rL>8  Š 宠 Š 䬠  Ů ` e} 6} 嬠 #ɛL>8yL>8 e} 6}  " #ɛL>8xL>8 e} 6}   #ɛ[S e} 6}  NzN78n7 rs~L>88nzL>8 e} 6}  K #ɛL>8{L>8 e} 6} 嬠 #ɛL>8|L>8 e} 6}  M #ɛL>8}L>8 e} 6}  ᠂ #ɛL>8LSCLDL>8 e} 6}  \ #ɛL>8NL>88nL>8 e} 6}  5tL>8L>8$ 0 tLC fw  L>8 e} 6} 蠭堾Ġ! | LSC e} 6}  5tL>8L>8$ 0 tLSD fw   cL>8 e} 6} 蠭堼! | LDDDDD EE *IEYEvEEEEE 򠨰 EEEE   v | V} e} ӸԠ٠vvHJJJJ uv .h)   J ΠΠԠź 庠 # 庠 " { (" uv  躠$ t}   ( v ) $$ t}# t} (#$ uv ) 庠$% t} 亠$' t}& t} (&' uv ) 庠 (0)1*2+3 I 庠 ,0-1.2/3 I  庠 I8eȱ 򺠠 H0) $H t} (H uv )  H rLH e 庠  N   ,0  L8I $ t} ( v )  ,0  LI $ t} ( v ) ` CompressedProDOSMS-DOS (& CP/M)Unix Hex & ASCIIAppleworks Word ProcessorSpecified by user0 1~0)  uv N10jJJJJʊ J 1 uv 3  uv 2<;  uv ` 婠 ` e J `4L2N w, N b1,ɛ* e} 6} | !LM,LM LK -,M {a)_LKH ̏ҙnLM4 nLM nLM 8 nLM nLMHh) nLM  ,M {a)_Ȍԭ ,LM nLM nLM nLM nLMH)h) n0H A ,M {a)_Ȍ# | Π! HɛLMLMаLKNLK  8N N N͏LK  L8Mm:iii͋iii b4` e} 6} | ! b4 8` 'N p '`8` b4H4 w,h4LmN ɛL'O LO,M {a)_O  N-  +,M {a)_ON` bLmN e} 6} | !LQO, e} 6} | ! b4 8` e} 6}  . #ɛL0NLgRLCTLSLS P e} 6}  sL0NN)NNN)HLP "  | Ԡ   > H "P!#L0N4NK8nM8nJ S` 4  䮠 Š 宠 Š 䬠  Ů "P!#` P e} 6}  sL0NN)NNN)HLrS "  | Ԡ   > H "P!#L0N4NKNM8nJ S` e} 6}O,M {a)_ON  N JL7+`8` e} 6} $ ,uϭNʢ e} 6} ǠҺ$O t}NNM4 2NLS e} 6},J0" | ! LT  ,K0 NLTO t}N4 2NLT J 4L7+`8`NIZ o e} 6}  Ԡ #ɛLXLdULVLsVLVLVX-0LXLULBWLWLX8nI XLZ { } ɠ @ }{{P k~ Z,` e} 6} 箮. XLZiii b f Z,` e} 6} 箮. XLZ   f Z,` e} 6} 箮. XLZ,8   kl Z,` e} 6} 箮. XLZ   d Z,` e} 6} 箮. XLZ kl Z,` e} 6} 箮. XLZiii d Z,` e} 6} | ! LX e} 6} ! H' o8`' o`LY; e} 6}  ؠ #ɛLYLYLY8`,zN e} 6}  N78n7 rsɛ~ m8`I oLY e} 箮. 6}}DD`I oLY e} 箮. 6}?xDD) 76-  `P?LZW o  Bo  Bo { Bo` k~89-  8 ` Z,8` é ZF' o {L"$ e} 6}  \ # 8nN`I` e} 6}  #ɛ- [$8nL[ [8n`8` e} 6} 堤 5th$ fwL[0 t8   ` e} 6} | ! 8` e} 6}  g #L'L\hh { | V} e} ӸԠ 8n+  8)a)ߝNML"$8` e} 6} 堤 5tL8`L8`$ fwLV]0 t8  L ` e} 6} 堤 5tL8`L8`$ fwL]0 t8  L `8ͱ= e} 6} ! | L] e} 6}  N78n7 rsɛ~ m8`~ LL`,ɛL_8 ~ LL` LO`mmm8ʹL_ {` e} 6} | ! 8`L'H (     h !y  J 孭 H "P!# | V} {8`454NLdLg "P!#LJbAOA e} }A e} a,0{OF 6}AALa{P e} V} DEFF b54 "P!#`B nH,1,0,HH 8nhhhH 8fh }L%bFh }G,0BB? GHLa`ABOA e} }A e} b{OF 6},0AALUbLb{P e} V} DEF b54 "P!#`BA?BAB *~`NN nH,1,0,HH 8nhhhH BhG8n bLc ;8n??8 ~eLcFh }G,0>, mBBLc,0BB? H GLcGHLb`m`m`454 b8nLd a,0' k~ 8LldF b54`B b k~,0! 8ʩ b54`F4 e}   àĠŠƠƠ "P!# e}P } e}A Tf,0;F 6} k~iiiDEFAL#fF 6}B<8 }Df fBBi= e}BDEFBmDDEF V}54 "P!#`F } g g g  nDfFHJJJJ ɺi }h) ɺi } },0  Df f`FH) h8fh }LfFh }G`F4 b   àĠŠƠƠ k~P } k~ Tf,04 k~iii8LgB<8 }Df fB54`HJJJJ ɺi }h) ɺi }`4F8,, "P!# bA e}N,0? n n h{O 6}( A k~AAпLh ĠƠŠD{ V}4 DEFF b "P!#`L4j#,H h hLj) ? }` FLj PO J }LjHvh٬j H $h t}Lj3jLjͅjLj8e -ȱ }3jJl]H  h uvLj  uvLjv jv ɰ } } . } sLj Р LjLh nL i J nL iH)h)PO nL i)  }Lj  }Ή,  }Lj`8` Platen width Left margin Right margin Chrs per inchProportional-1Proportional-2IndentJustify UnjustifyCenter Paper length Top margin Bottom marginLines per inch Single space Double space Triple spaceNew page Group begin Group end Page header Page footer Skip lines Page numberPause each page PauseTEST.QUICKIEv"'  '&SCAN.1;@ry(/&SCAN.21__/&SCAN.35H#a$ 'FINDER.DATA}T3p hOMAIN@ff [z (`k G* %r`d PYOYOPYY]WWWܼ7"U\DeDD Dw  g4l:`CkR@seI}v[n`LmChJv^An:kM{jIi[C`P4[I-WI-WE/ZE*SB-YE2XT5ZW/_]4xc/yg*g!f2uPy5xx?ki5kV+nZ-nS.jX#bS,h_-^K,[](^D-[m3lb8hk:WN)\_+aY+gg?U\7T\8ZxZu=qAgp=D_BIYEI[R;UKKW^e`[uDljn`q?%mYmmmmmmmmmmmmmmmmmmmm?mmmmmmmmmmmmmmmmmmmmmmmmmmmmA?$I$I$I$I$I&iiiii}}}}}}}y}}}5}}}}}}}iiy}}}@I$I$I$ $imm?mmmmmmmmmmmmmmmmmmmmm7mmmmmmmmmmm}mm}}m}m $oBoomoBBDI $oomB HI$I$I$?B A$I6Mme?D-mmmmmmmmmmm[m@;mmmmmmmmmmmmmmmmmmmA$?D(}}}}}}}i}yI'i$yyimm @I$I$I$? 0EE &imm? 0DB#mmmmmmmmmlB6 mmmmmmm}}}}}}}m}m #$? 0?Bi I$m&HB I$MooB I$I$I$ 0BBI64}B A$I4M6mmEmmmmmmmAmB5[mmmmmmmmmmmB}}}}}}}B $iH I$I&}} AI$I$I$BBBB6oBOhi? I&imomBBD?mmmmmmE- `# mmmmmmm}}D}}}}'4??oB  $I$I$ $I$I$I$MB I I$I$I$B<?DH}m'@I M4MM4mmB#0A-mmmmmmmmmm@,0?@ B@ >H& i&mimmmmmh,. Hl ![mmmmmmmmmDBD }}}B E FD2I$$I@ @I4I4IOIM7 I I$I$I$ ?BABM7OAAI$@ I$I4M4MmD?mmmm@  @B@D?YmmKmm mmmmmmommm<< }}}8$I$I$I$I$I$@I$iI}}mi}}i$ II$I$I$<<0Bo4頟 i$Iiim? mmmm; $Y H -mmmmlmmm`mm}B}}}}<<0 omB3I I$I$I$ I  $Ooﴓ$ I I$I$I$?<<B$I?6?mB AM&M6Im mmmB?@0[`Add`Ammmmmm[mmmKmmommm m}}i6II$I$I$I$iI4yi}m}Mi}i$I I$I$I$I$B &I I$imi&mmmmmmmmmmmmm;,l l,l -mmmmmmlmlmm}BB }m}%mmmmmB2I$I$I4I$MI$oM6$mO>}$oI$I? I  $I$I$ A$}6F?D_B @M$MM%mmmmmmmmmmmmm?A-AAmmAIdAllmY-mommm%yyiy}}}}mi}i1$I$I$I$I&@i&I$I$I$I$@I& 'I$I$ II$I$I$B0 i& Iio HImm$mmmmmmmmmmmm` % B %E- $m}}mm$omoom B0 $I$I I$I$@@ $A$@ $H$ I $I$I$@2$AMM@'I6iA m?o iI$M$m#mmmmmmmmmmmm@@.lA[mommm#}yim}}}}ii}H @IHEHE$ III$B $$I$I$B &B B H'm? $i&ii"mmmmmmmmmmmmB m m}}}}mm} #moo@H I$II$MB $ $I$I$B@E4@B 4$ $I&M4M"mmmmmmmmmmmm.d@ mmommmm"i}iy}}}}yiy@ I I$I$IB $I$I$IBBHBo Iii"mmmmmmmmmmmm+l m}}}}}}}}mm}`oB mmmB  $M$I' $ $I$I$@BH OB $I$I$I!mmmmmmmmmmml,dmmmmmmmmd"imymm}}yyiiB$I$I$ II$I$$ BIiI!mmmmmmmmmmml) m}}}}}}}}m}`"momm$HBI$I$ $I$I$@67BI$M4I!mmmmmmmmmmm`( d$mmmommmmmmml!}}i}im}}yii $ I$I$I $I$I$B &oi&II!mmmmmmmmmmm + -m}}}}}}}mml!mmmm HI$I$ I$I$B AI@}IBI4I$I mmmmmmmmmmm#[dmmmmommmmmm yyiyyi}iiiI I$I$i$B $ I$ I$II$@BI  &BH 'iii mmmmmmmmmmm B$Xm m}}}}}}}m}mF ommM6IBI$H I$DI F $I$I? I$I$ @I7I}@I@4$A mmmmmmmmmmmBI$AA'emmmmmmA#y}i}ym}}yiI $I$I$I$I$I$ $@I$y$I$oEDD &#mmmmmmmmmmm B m`B mmmmmm*m}}}}}mmm}mmmm$mmmommHI $M4M$I$D$I$MmmoB H $MDMB$@I?#mmmmmmmmmmm B mmdYmmmmmm*mommmmmm$y}iyy}}}}iHI  $iiiI$EI$im}yi@HBI''m B $mmmmmmmmmmm '-mmmmmmmmmmmm*H-l}}}}}}mmm$ommmHI ( $m>ommoom@B I&BBB@#mmmmmmmmmmm)mmmmmmmmmmmmm@)l[m[ommmmmmm#}mi}}m}y}i@I)I'iyi}}y}}}}yi@ Oo}  E$BBHBi#mmmmmmmmmmm) mmmmmmmmmmmmm-m/}}mm, mm@    E(M>MoommoHB D$I''M$I$I$H  H$ H$@ I4M4IB HBOBI4i4i4M$I$M4m4Mm} mmmmmmmmmmm@([mmmmY$IemmmmmmmB K6dlIBB @AA$I }}}}}}}}y@ $I$I$)$Ii}mI$I$I&}}}m}iH)I$i&I$I$I$I$I$I$I$II$i$ ImI$oio mmmmmmmmmmm mmmmD-mmmmmmB&ml mmmmmmmmmmmE mIB I$H DI$M6MI$BI$I6mmHDIIMFD@A$I$@D$MEMD' mmmmmmmmmmmm$Fmmmmm@%[--mommmmmmmm m}}}}}}}yI B &i@I$I$iiyy@ M&I'M&BB  $EDmEBo!mmmmmmmmmmm`mmF$mmmm& ml}}}mmmmmmmEBDoI I4I$DI$I4ooo II$oB 'DMBI!mmmmmmmmmmmd Kmmml Kmmmm&mmmmmmmmm}}}}}} }}}I$ I'm}iHE I$iiy $I$  &BD 6BB'"mmmmmmmmmmm,  mmml  mmml&-`m}}}mmmmmmmE 4 $I$I6I$ I$M4mM$ $I$B}BiI6"mmmmmmmmmmmm AAI$A %mm$l[mmmmmmmmmmm }}BB }I$ I$I&iI&iB}B6iD &B"mmmmmmmmmmmmB  F$mm% l_mm}mmmmmmmmB I$I$I$D I$I$I$ $IOD7BI$mDOB"mmmmmmmmmmmmmImm$EAI#Ilmmmmmmmmmmm}}} I$I$I&iI$IB $I$I$I$ I$B}$mI$I6oB B"mmmmmmmmmmmmB -mmm# m}}mmmmmmmmmB$I$oM4I$ I$I$I>Oo@ 7 M$A$M$IB"mmmmmmmmmmmm I%mmmA#-mmmmmmmmmmm}}}D mBI$I$iiI$II$ I$ ID}}i I$H BIB"mmmmmmmmmmmm I-mm B#--}}mmmmmmmmD$I$MM4I$HFI$I$?Bm@D$B7B!mmmmmmmmmmml AmmmA#Ammmmmmmmmmm"}}}$I$I$iiI$E @I$I>'D }ymBI$i$Do>!mmmmmmmmmmmlB mmmd %-mmmmmmmmmmoB$ I$I$I$I4I$HFI$ $I'O'mBI4m}@Mm4MO"mmmmmmmmmmmm AAI@B#mmmmmmmmm}}BB $A$I$I$I$AFI$I$ $H$IEB }i &omi$EIE oo"mmmmmmmmmmmm F" mmmmmmmmmmBBI$I$I D$B$$B$ED$D@ M"mmmmmmmmmmmmA$IE[d#dmmmmmmmmmm}B}F m}@B $I$I$@BI$B $ B }}B$oEi$B $OB#mmmmmmmmmmmmB K$ m`#Km-mmmmmmmmlBDB $B$I$I$I$I MM$D $I&BoBm$I?D$OB%mmmmmmmmmmmmm AA$AB me"mmmmmmmmmm$%}}}}}m}mm}}I$I$I$I$Iii" i&I$I$I$I$I$I$I$BIDi? AEi $oI  %mmmmmmmmmmmmm $  mmlB 6emm oM6Bm4MMI$I$I$I$M6MmM$oH'I A$}}m BE?FM$mmmmmmmmmmmmdA@Bmmmm@ mm`B$iym}iiii}iI$I$I$Im}yiIIIm}yBDH I&m@'?@F$mmmmmmmmmmmm`  !mmmmm [mm mo B I$ $B$I$I$I6mmmM4B$I$I?mI  @ $m} MI4M7BMMIBAM4M$M4mi#mmmmmmmmmmmm@ @ mmmmm$@mdBAAA$@A!m}}}}}}iyi$ I$I$I&iB$I$I&}}yiiI$*A $I$I}I$I$I$I$I$I$I$I$I$B>FD I$iI& hoBmmmmmmmmmmB H-[mmmmmmmmm B mmdm$I$$    MooBo6m1$I$M4M6mH H I$H$ommM4IB) $I$Mm$I$O$I$I$I$I$I$I M I$II4I$ }Bm}mmmmmmmmmmmYDm[md[mmmmmmm KmmmAmB@@y}}}}}}i@B $I$!i$I$Iyy&}iiii$$II$I$IB$IF@ H&oIB&O@B$B mmmmmmmmB  - `F mmmmm4mmmI BBHB II$I$ E M4M4M4HI$I$I$I4 I4I @BB@DEBBBImmemmm@-BmmB$@-dmm-m`ByI$Iii$ H$I$I$ B$iIB$EI $I$I$yIi B&i h@EBoI mm-m` B EB H X$ mmmmm 6mI$MI B  $ $ B $ $B@OI&I>M$6M>o龀BE}EB I4m MHMI$BI$@$}BBEA mmAm Y`lmmmmddE $II$I$B$B$B@ B$i}i&Ii7iI@@B @B B} oH$ mBiEI$ -B ` `B`l mmXmmmm $I$I$BH  $ @  $B i$I6I>I$I'I$M$MI$M$H MMBD@B?MMA'A?$$MEm$oBE7IB[lB`B6B dBBXB B*-[mId6@e[leAm@$$IBI$I$I$I$I$HA I$H IIBD I'I$I$I$I}$i$ $iy$ hB }B$BI IBiI6ih $ F mIoBoOEI, HBB  ,B BF D@E! ml l -6mm$I$H@H'I$I4I$M$I$H I$$ H $2I$I$I$ $I$I$I$M $I?$I$I< I$BBE@HhM@M?BmI$O'4B?}7m$I4I6OEA [dA$A0D@[d ImAd@[mA-6[mI$I@B HB$H$+I $I&I$iII$i$I $@II$I5I$I$I$ $II$I>I$ 'I$I'I$I$II$i  h > $m-omo@&h$@ $ i&>B omoI$BB-mm[, lB DB,   Hl m- m-$I@E?   HI $ $ I$I>I$$II$I$M$4 H ; $H I6@$H$I I> I$  i$< $I$O EHH@E A$H@E$A$*IMAAI@$@$MmI6HE}I?Ai7AM6BMmBB& dKmmdAm A@`DB KmdIm-$FE HI$@D?I$I$I&M&iI$I$II @HI$@@$i$I$I $$"$H $I$I$$}I$Iy$M $ EF F oh D Bo+Ii$}II$I>o$iiI E 'I I$&BI`E ,6 E mm -lBB-B -DD lE l` $!m$BHBHF @B@ I$M>m$I$I$H$ $D@$I$H HI>$@ DH $  >I$H $m$I&M$ B@DBF@I }7F.I ?@$@$M$oM@BBI$D }I@77M?BIB@B Y-Ad@BXB,BBB-@DmF$H$$I @ I$I&A$II$I$H@$I$ $$IIB$'D@H$I$Iy$$PATSiSCIBVSDVff  dVSMKGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG  !"#$%&'()*+,-./01234<MAIN@ff [z (`k G* %r`d PYOYOPYY]WWWܼ7"U\DeDD Dw   3*BBI)0UL[^[ebB525NNSKD>2JARTW^\<7CEAC?::>BCMJJILLQRRQRRNILNURONQQGKKOI?@?=<AA>A@>AKFCLIJMEMQXSRRTSWNQPRPORLJMDPKHGDCFJIKKHGLJLMDG?747<;8<;3677<<;;;@=BBKGHA@B;5438:<:3462234-,,)*+"'#$$$$()-,144-! "????????BBFBDBD?BD?E BDB??BBB BBB?????D ???BBBF?BF?BBB?DE?BBD?BBBB?E??BB??E?BD?B?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|KjMAIN@"3DUfw "3DUfw "3DUfw "3DUfw "3DUfw "3DUfw "3DUfw  [z (`k G* %r`d PYOYOPYY]WWWܼ7"U\DeDD Dw  ^Y``SE<OduD?LZZD;P6HRs|s~ogk}{|{zxx{zruzswtpnnedheikggXSWWZb_s{x|}yqs}t|{~~v~}}syňBEyxyxxxx‰BFD‰FEDĈBDÙFBÙEBĈ  BE™B   ÙBBx  B F řB ™ ™BB8  B DpB B( B  Bp B B B D  BF B)   B EB  B%  B  FÈƈBBBF™BřňˆDBƙBBD™ĈȈBBəBĈÈBDB F EƙDBĈBxBFE DF™ÙxxBxF xxE EFDBB̈B EBEęBÙFÈňxÈB F˙ÈLjFBBDÙřBÈxĈxˆBDBD™ˆBxDxˆBDə͈B&řBBΈBDDę™ÙÈˈBBF̈ˆDBřBBxxȈȈBBBxxʈÈBDB F EDB xxxxxDBĈBxBFE D$DwxBx xxxxFxxxBxE xxE wwxBwxwwwxxBx xwxwFwgxx yxDBBBEwwBxwxxwxxxxxxˆgxˆBwx™EBxwDwxBwxwwwwwxxvBwxwxxxˆwgBwxE B-DBwvwwwgBwwxBw wwxvwDwBExBfgwxgBBwwwxwwwxDwvxwxwvwwwgwwˆBwfhxxwfhhyB BxwwwxwxwwwxwvwwwgwwggBwˆxfeUUVVvvywwBB BxxFwgwgEwBxwBwxwvwwvDgwgwvvBwFxBxfvffVT4UEUeeffgffxB DwBBwxwwxxwBEwgvwgvDg vvwvwwvwwxExBxVvfUUEETTUFwUgfgeWwxB)wwwwxBwxwwxwwBvBgvfgfvgfvBgwwgfvwxxBwwxvUheVSEeDUVTUfDU ggeEUV D DEBwwwwDwxEwBg fggvfgfvgfvfvgBwfwwE fvveTFfeVEUeeUVgxffUfgD BwBwfwBwggBfeEfvgfgfvgfvvggxwxwxwDvggfUUCDDUVfe44CD UUhfuVThBˆDxwBwgwBwgwfgDfgffvggfvfvggvggwxBwxwwxwEWxvuD33$D(UTUDC35D334VWwUVfUWBBFwvwwvDwgwgwwwFfVeffgfgDfgfgwxxwwwxxgxxBfwfU4DECDTDC3SC5TD34D 4EewUTVTVxDÈFwwgwgDwgwwwf vffVfvffvyDfvffgBwBwxEwwvfeUDCDDCDDEDB3$UD43DETT4TTExUeVTWgBBBDˆBB xwwvwvgwgwvwwvwwwffgvffeDf gfxgwfwwggBfwBw#ggwgwvwvxVfeCUeUCEeeDD5D43ED4"44DCDBU gvvUVVTffxˈBwxwBvwwgwwvwvvEwDwgffgygBfeffWfzfwgffvvwvBw gwggwvwwvVcCBUEDSCDTDEd32323#3CCEUgvvUVfUUWˈBBwvggvvwwggvBwxFwffghwvDf gwyvgwfvFw1vwvfwggwwfTCETC3DC4334UUDVfeED323"#23UEVxeUeUVTUxĈxxxwxxxwxFx wwgvggfwgvvgvwgBwfUgfwvVfgyfxvvxgfeeggvvwgwwgvfweWBvWTD3DD4B34ECDEUfUgfVTVC3#2343DgwBfeUDeBxxxwxxBwxxwxwBwFwvfvfVfVgVBfVfvBf vwvvfvvgfgVUUVDfUfhyʈfgffwUWffvBwgvvffvgfXgweTDDEDC44B3CCEBUffgxfwdUTTC4323CFeUfUeEUwgDwgxBwvvgwwBgfBvggBvgffBgwfvwgfffvffeUVDf UvUeffvveffvBfBUeVffBUVxfvffweffVfvvwBvffvgVgvfeC4DUD23B#4D4UeUVUVweveUVeeT"#34EgBfUUWBwvwvwgwgvwvgvwwgvvfwgfggfvfvgfvfvBfgVfwffUeUeffDUffeUUVeBUVUffBUeUVwȇveeVfuUfefvggxvBfefgwvffeC32CVc"22"24EUTBUVfwvefUBgVD3D35VvxfUTVgffvfgfeEfgDfUeVVvffeUBfUeBfeeffeBfeEUEUUVBfeUeBUVUUeUVBUeUUVvVvfgfUuBV)gfwܦfeffUfxvfTVtB#3EUC##3224DSDTDUTWfvBfwfvf44CUeiwfeEeffufUUf eVeVffUeUUBfvfeUUVffFUVUDfUUTFUBefeUEDUVFUfDUVVghBf?egUfVeVVewewzʈefgufhfeVUcC3$E5C3##3#2C33DCDEVfvgwggxxwV4ETvfhxeEeffeeUVffVVUeeUffBUBVeUeUeeUVFUeffee UUTEUEUVgeBUVvUUTUBUezygefeeUeVeUffvUfgvvfDEUD433$TDC3##3"23##344EDwxgxxvFEtEvUUVfBUeUUVBUeUUVUUfUeFUeDUfDTTBDUWvTEUxTTEUeUDUBTUUTUUEBU"VVvfeUfVjuWTFeUUfUVeVfvvUUeeDUCD3DSC3#2#D"34Egfggfggwwd6u6yvfeUVUeUUUTDUUDDEUDVyuTUhTEEUeUEBUETDTEDBE,FeVvvffveU[FgvvUUfVeUUvvfuffgS33"24D233C3#E"2"4EfBeVgwfevEveeUfUTUED VgfwvTVBD TTDEDDTEEDDUDDBU*WgeWxeWfUUVVfeFeUUVffeU3S243443#3C32E"##DguUgxTeyhuEUEUTUUBTBUEEUEEUEUTDUTDUDD VggvUfeFBE&UTEDDTDEDTDDTEEUUʨvhVfUTUfefUeUvfdB3 25gUDC#3432" 2"3EVBxevyvTy̻UTUEFUEEUTTBUEEUEEUEEUEEBUCD4DDEgvfUXuZEDETTDDDTEUVvgeUEUVffeUVweFeC4"ETUeC33232B" 323DFxE˺xW˹UTBUTEFUEUTUTTEUBETTETUTUBTUUECDDCDDfweVvUygdDEeDDEBD*UTXvvxvfweUUffeVUUeUUWuEsC3#$DVTC"3E" 223ghEܻB wyg˺UTBUTTDUEUUTUDBEDUTEDTTETEEBUTTUB4344FeeDgfVzDDeEDWDD4BD+if{ʩffexfwUVgveVVUfVUwex5E"35D3""2#"2B" #3UwB vxzʪUEUDBT EUTUTDEEDTTDDDBDUUEBDEDDUEUBED73C43344VgUEvegTDuDDTTUffwfeDTTDDhډwEgwxUeUUVVfBU WvwgWeWRB32""2""2B"DTgBDܼvhguEUBT UEETUEDEEDTTDDDDDTEUEBD TDETEUEETT4C3?DVvuDEfUgT4fEDEeffTDDUTCEDDhˉzܺUVwwgeEffvfufVUVfYgwtVS3##"2F"#EgBB˺fUTEEDBT DEEDDEETDTDDDEDTTEEBDUTEE3CEwwDDEUWwzeTeTTDfBT,DDETDDTExxȘeUVwwgUfeUhfgvffUwgfivguTD233#"#EgyBB#ܺzUTUUETTDEUEDDTBEDTDDTDDTDDTDTBDF3DhdDVEUggTWUVTDTDUDD$TUzvyfVffvgUVUgvggvVwfefWweVUDC"2"""#VBܹTEEDDTEDEDDEDDTDDTDD334D3HTFTUVvwyGVUeBU&VfUTD4DEVxeVUVdVUefeeUVfUeffTEEDDB2"2" ""5fDDBۺʚUDTTDEEDBTEDTDTD DDTEDDTTEDT306DEdSVgUUwvfUVeVvWEDUghY͹vTUEUCEfvgwvUgfBUVeEDD33#"#FED˪DUDEDEDDTDEDDCDD4DDDDDTDEDD3CE3=4TDVSDWfwuUTVeVxxUVgg͸ffUfSCWfggwweUVTEUUffUTCC332"#"DwEB˼DDTTDTDDDCDD4D EEDUDETEED4E3?C3h4FuEVFhudUTDDdDUgewgͨgwwvwffvfwvueeUETUeeTDUC2332F"##WxEB ̺BBeD4DDCDDCD3<36zDEwUVUvfxxdETDETDDFvwwxxvwwvvfwvfveUCSEEUTDD3C3B2F"4gEܪDBD4ED4C34FDTDDTDD3?34WSDWEeFFfDETDTDDEfEwwwvgwvgfwffWvgeUU33DDTCD3233"32E"4h̺hBBBDDDCDD4BD4CBD4D333FSDFEdUevxUeVfUEBUexwxBgxvhgfggfUvdUeT3D43DC34C#"#"2D"#6xBBuhFTEDDEDDDT3335zs4EdTjtFfwwxwveUEUUxBvvvf egfefUDUED33C33""3E"7xBUh̻EDD4DDTFD4DD443C334DgcDGUjdVxgxgfgyefeVBg wvevhvfUBfVDUEBDTD#3BDC2"#D"$gDgf˹E麼DDD4CDDDEEED33C4Eu3EdžUWtSUwwvBU*wvUfUVxwxwfTVgvuUUVeUUdUUT4DDETEDDTD2""#"#" $WwgܨEDCDD3C4D434D4D4FDEED3.334DVCFwfWdD4FxwzvUDEVVfevgvwwgeUUffvfUUETEUBD4CD4CDDBC32"#"32B"5wBBwhۖEDCDDCCDD4344D4D4DCDDCDBD3B3"4FdEhvGCCDVghEEDEFVeffvhwveeUeBVTTUUDDCCDCC433$43C3322"2"#B"$gBBhvweexED44CDD4D33C343B4CDD4D4BDCDDD3#E3ETDxgvGDC4UFgBD EETWxfvgvveVfeUEEDCD4CDC33DDC44#D3 2"2#""#""$WBgeeC3HyFD4D4ED 4DCC4CCDD33B4D3D4DD3#F3DDWdVTvDC5EDEyݤ3DCEEVwBfvBUVfUD3D34DD34C223#3D42#2""#B"2"$VxBBuES"4wBDDCD4D4C4D4D4CD3CB344D3D3DD32332D3+DThdVTeDDEUT4g˕DDC5ViwefgffefeUDET3433D3"2B3 43"243322#"2E"4V̨vtU4#fwxF 4DC4DD44DCC433DCDDD3#F3344EeVefDD5uT44xuDTD5WeTDVffeUfTUTDD4DC3C33""3C3#"##B3"#22E"$VxBͨvTTEFfwwB 4D34DCDCDCDDB4BD4BC33DCD4CDDD3#E3B4BUufDD4uT33FUUECFvwBDUTVeUeUCDC3 #22323#"3#B3##22E"$UxvUDVVfwxTD4CDDCD3DDTDDED3DB3,D3DUVxwCC4xT33ETfUDWfwTDDEeUeUUTTEDD332"2"2"3 #4C33D4DC332#"#EhFvfEeVfwTDCDD4D4DC3D3DDCDDDDTF34EVU45CWfUfftT4zUC3DFvW4UUU4EBUDEUDD4C33"2##3323BCDDTCEBUdTSC2B"#EfxDʖfvfvvdDCDD4D4D4BDCCD44DEDTF3 44DEfUUEXuU3WtVDXS3DEf4VxwuEEedBD44DCB3D"2B3CDEUUBVWggwvueE3B"4fhxܸwgeDCFD4DCBDCC43BD4D4D3!33DWfUUheT3C5TWT3DEheDViuEeUT4CD3B2D" 2#34DDEeUfBw(xwvvE3""#VhxwwʘyڦEFDC44DDCDD44DDEDDT3 334TFVfxfT3#4UUTD44EC3UhgUUC34B32332D"232##3CEUVvgwwvTC"#EfxB fUfwBʗTEDCDDCEDC4DTUE332"#D34UfgfxVTS4UDTBD UC3TfvT33#"B2#23#"2"24B34DUfWvxwgeS""EVxveBU ew۩EڗTDCDEBDUTFD44DD EDDEDDUEDUU3"334CVugY̧tDUgfUCDDEfST3FT2""#"22E"#"2B3 233EUffwBvvTC"4UgxwTDETDCFݹEdDCDTD4DD3#334CEfWxvTUDfgUTDUXdT25C2""3#23#B"2"3"23343DCDUVgx veC"3UgwfD C34yʩETDDEDETTDDTDCDCEDEDD3#E3#3 VvfUxefVBU TEUUS3D4D2F3433B2#"#""244DVgwFweTC"5VuS4EFTD34XکvwFDDCDD4DDEDTDDDC44D4DDEDD33VxgUfzTUeD4DEDETD4BD454433434232""2#33DEfgwB.fTC"4VD45feET"#W٘wgeVffyFuDDCDD4DD4DC4DD4DD33FfefWEUT3DCDEC3B3BCB222"""2B"##4DUfgwB/feT"#F34VfeU2"4VwvhFمED4CDD4DCDCD4DC3CC4BDCD3332337ehuVTxuFUTC433BDB#232F"#D" 2""##3DDUggxBveT2"53EffUS"#EVEfgDTBD4FDCDD4DCDCBD4DDCDDCBDDF3233234wEETEUUTEC3"3DC43323#" ""2""24DTDUVg™'veU3"#3EfUU2"4DVg˺VvFTDDBCDD 4DC3D4DD433CBDCC4DCC333#34hUxxeETUECDDC3C#B3"##3#"2#E"#"#"#3DDCCDUVhBB'uUC2#4UUTT"$TEfwjڪuxuDDC3DD32#4GTVvwdUUTCDDC4C32E"#""#E"3#3BDCDVwBB(wvUS2"$EUSD"5TUgw˻GFvDCD4BDCEDCED33EDCED332D3B2 3#35dVveeUUTFD33#2E"##"22"#3$B3 DDUVFBwvUT2"#EUCC$TEfwܻBBFdC4DD4D4CC33CD4EDEDDET3#234VgweUVvTT3DDC$DCB32"323"#"33DC33BD VxʪEB%vfTB""4T324TUg˫ܻ̪D4ED4FDCCD3 4D4D3CDEDDTT3#3#233#3EwweTEeUT3DDB44C23"#2323#"#"#343CC34DEVhBweU3""$D234EVxxwey˙BBTDTDD4FDCD3C3D4DCCDTTD3#3""#324FeUDDUUCCDD43CCB3 23323#332"3CB3DDEhB ۪Bvee3B" DC#4UgxtDfB ̫DCFD4DD4CDCC3D4DCDD4BDED3#3B#343323EweTDUTC33443DF3 233#33CTTC3#CDgy ܺBvfUCB"4C4UfywtUfxw˻BEDED CDDC4DCCD4DCDD33#D3#4UgBUTT4D334D3 "33""#3D4EUTC23CVxD BwvfTCB"#35VwfeUgxB4EDCDD4CD334334DD4DD4D3DD4D4CD3#B3D33DCDVfxvUUTC34C3332B"#4BD32B"#3#4Eg ˪BwvUUC"4FfBfxFD4DD343D34DC44D4DD4D4C34CC3CCDEUgfeDDSC4CB32B3##2"34C3B2#""##33DVyFʨwwxveUC2B"$FgufwxxiBBdBDCDD3CD343 434CC43C44D4DD4DCB3#F3433C34EfeVeTDC4DB32B3D#3C#2"#""3##4EwE ˨wxBveTC2B"#EgvfwwwWD tDDC33CC3343CDD4DDD3D4DD4DDCDB3#323 3UVTUTCC3CB3 4C4T32#3"3#2 #322"4FxF̺wxgeU2D"5WfggxvvfyDDFDD43C4C4C4C3344CDDC3CD4D4DDB322333EVeDT3C3CC334C3E3#3B"33#3##3323FfBwxvxgeT2D"$VeWgwveXBDD4CD4D4CDCC3D4BDCC433C4344D4D4DDC33#3#3&3#334DDeDCC33DCC3T334S3""#"#4C3323234VwBfEDDVvvvgBvfT2D"#VeVgvfTxdDDDC4DCDD 4C4C43D443CBDB3#3#33#B3 4CUTC$TC34DTTBDT32""2E34C4EgBvefEETvfwvvT2D" #VheVguTfDBEDBDCDD4DDBC33CD4D3#233#2334C4Ve3EC33DeDETCU32""B3BDCDDUEhBܹS3EegBwvfT2E"5gBweBU3WwxwxDDD3C4DDC3D34C43CCB34D3DCB3B23#2B3#3DD4DBUTDFeT4BD322334DEDC4DEEVBݩu35fxBwgeTF"$VxwvffB5fwwwxDTBDED4DB34CD4DDF3CDB2##"B323##32334BCDDUUDVS34B3B4 EDDC44EUgB쨉vVEwvvfeUU2E" #EfwxweUUDgfwBwށDtFD4C4DB34CD4DCF3C4DD4B2#22B3233#D34334C343DDUT3#4E3*DD3B3C33EUfyݧfghvuVfeTD2F"4fBwveUVgfwDFD CCDDC33D4C3B3CD4C232322F34C4D34DCB34UDB3234C3CCB3433$UgxxwvhBUeUT32F"#EVgwvgveffgfwxBBDDCDC33C3D3B34CD33#33C3433C344E433DTD434C3#2#334436fgBꘇTUUfUU32"3UgwvvgfgfwxBDBDTEEDC4D443CC4434DD43'343C3345eDCEDDECDCD432#"3344TS%fxB똈D4EBVS2""4VVwwwgfgwxDeDBDCCD4BDCD4433DDCD332D34DCDC43343DC34DEUTDETD44D32##33DETfFfFB3EUVS2" ""UfghxwvBwDDBDC44EDEDDD3#3#223344DDC3C33CD4BD3DDUdTDDC##33#"2"#C4UUfgfxFS"#3EUU"B"#UffgwwwgxxEEDDCD4D433DDDCDD4D323##B34DDEDDC34EDTDTDDTEUTBD3CC3B"3#"#EUUBgDEeD"#4fT"5Ufgwwgwx۪BTDCCED334BDUDDBEUTFD232233#33CD44DTD5DTEDDVUTBEUSC#2"2"3""#CVggwgE BTDS2#ET""EffggBwvwxB̺B4CD3C4BDEDDEEDTD 23#2334343DD4B3D334DTTDDBD3433"#""3"B# FgwwgF ڨBTDUR"EC""3EfBgwvvwxB4CBD4DDCEDEDDEDD3233334C3C33DET3C4323D3323"33B" #fVfxB DeEEU24B"""#EVffvgffxB CBDC4DDCCDCB3B4DEDED322B34B3D343 C33C45UUD4C3C3#2"#DUVEBvwEfeEUC32"B"#EUffgfgwwxwcBD CEDDCD4CC33D4CBD4D3223C3#434334B3 4D4DDETDB#E32F"#DuVxDBxvVwxyBwfVUT3""2DVVBf wwxwgB$CDDEZD4DC344DCC443CFD322E3#3D4DCDDTEDDC4D3#2"""#EgyDwvevgxwvdhgfvU2"""2CTUUVwgxwffvx 36ZܨFDCE34D4322#2E3DTD4DDEEDTDD23C32B"2""2"$fXDeUgx vC4hwwve""3DEUffeUUVgwxD"#6BueeTDDC3#3344CDC433"3EUTTDDUDD CETTC"322#"#D"4fhF vfwB xxvf2"B34DTBEUWwwD"3#KDD ɖTD334CBD3332334DDCDD3EDSC3"2D"%fvhDBfgB xvwxxeB"3B4BDUggx""#BBD4D4332F343DD4BDCDCDEDD33D2""EUVyEfwDwwu5hBd2"#DTBDTTUUfggB2#"+ ˘eUTDD3B3DD3D43BCBD 4EDDC4C323C""FUVxE ˄DUgxB wvEgu""#DDBTUTVeVfgB"B̨tT3B34D3D3C4CCDUEEC4T3""WefDu"EUfwwxwfWxd"""$DUVffvfgwR"":BD3233#F3C3C3C4DCDD44EDTE442##2"#VfgDfCeUivfhxgVxR" ""$DTUUVVgBfgxxB ""#F3233#3B34D3DCD34DTDED32##""%VgwwydeDxwwUh2" ""#4TUffgfvxxB2""KBBF3"##233F3 44CC33DEDDCC23"&""$gwwxB"jwugB"B"4EUeWBgwggwxRB"BF#"2##B232F343443CED33#"%""5hwwwc"7Jwwwehu"4TUVggwhwgwrB"~2"#2333344CCDDCC33"""6xBBu28̻uVwegxs"3DEUBgxwwxC2""*B2"#23344CE344ED4DB3##"gDX̺eWxegC"#4EUfvw ܶ32""$D"B2E34343D33BDCD3##E"$gDEBD8Ewegx2"3DDUVgwS3B"#}BB"##2F34344C3CB4 C2322"#"#2"6xEE dUjs6vegws" #4DTEVgwxxBwgdS3C3D"LE22""2323#F3D4D3"C3"2"2"32""FxDۘExb5degwR"34TTDFVvxwvUC33#"9BDB##""3#D3#F34TD3"#3""22B" ##""$WxDE˪VTDETWhu2"B" 24ETTDEUeuDB3"B"&DB 3232233#323#F32DDB3 2"#322#"22D"$gB#fwfgxe"33EETT3D2"^BB3##2E3#32F34DC4D3"B23"2#E"&hB˪B whfxwR"B"#B3FT3"""7BDB 3##33#3#3323 33D34D2#"2B"2"2#"FBBB vxv2"B"22"""YBB3##3#3B3232#"#%CB"2"#VBBܩvws"""####3333#233D22""#hB"$hFʩweB""$ 223B32B35UFU4WD"#""#Ghwڪwxwwd""6DB3B23B3##3CUxw""D345WxBwݪwxwvR"&DB3B2333##34hx"3BDTEEVhxˆ xxBxwwc2"B"7D23"23B3##5xu2DTTUBVxE xBwgv2" ""6E 323B23#35i4UeUfgxB xBgf2"2" ""5B 2322"#22##36iDUVUUVggxwwBBwBwfR"#""4EYB˻BE 233#"#223#34VF ˨dVBfvgwxxwgBw vd2"#""#4EE3#""5yBB ܻBF D3##234w uVgfwxxFwvgfvve#"#"%BWxBD ͺB F34GBBWgvwxBwvgffvwweD32B32D"6vwy˺BFCD34H fBwxwBwwvgBfWgdB344322B"#fgyD̼BBDC3XFFBfwwwwwvgVUVVgdTB34DDB3B"%%fxܻDB3#5FBvxBwwBvfVeUVfeDD33DDTDD3B"5WBܻxBBFCB35BBEBxExwxwvDfUDED UEED3""#VxD̻DDCB3 YDgwgwwDvvBf effTDUTEDEDU T3""%gB˪BC337ExwwvwgwwwfvVfTCEBUTUBf UUDC""GhBܺBBD3DBB ExxwwvggxwvfeUUT3EBUTVffBU T2"4wB˚DEDED4X B˻wxwwgvfwxwvwfUTUDD#EUVgffeUT2"W캺BDDDBB˻wwfvfvwwwvfeUUTC4BUeUgwvgeeD25xܪDE DDiFBBDFxBxwwvfvfwwxwvvFUD3Df#wwwffuDDg˺˻FEBE˻BDxBwgfeVgxxBv eUUfeUTD25Bf/exwwvUUFʪ˼˼YDBDDxBw gfUfvwwvvef"eUTT#UffvfwwvvUhݺDEBDFBF˨xgEfgxwwfveeUUVeUTD4VfgxxBwgF˼EBDBBDvgfggxwvfvf eUUECEgfxBwwhܫFDBB̼B BBfvfBgwffeffeU D3WwwBwwݫB ˺BB̻BDB̼B˨gvvBfvggwwDfeUT5gxBBxF ̻BED ̻̼̻B B fwgwgffgwgfVeUCUxxBxʫB ܼBDDBE̻ ˻̻BBD˹fwgwgffvwgfVfeeUEDwx̻EBD˻̻BD˻̸ffvvffVEfefUUTDg ۪E˻DBDB˺˻˻D ˻˗VfvDfeUUeVBUVwBy뫼DD˺D˻DvffUeBUVfeUUExBۻBBE˪DveUEUUgBBDEBDDB˫ BBBBBBBBDBBFBBDB̺˻˺B̼̻EFBE BBܻ ȭɝDB˺BB˼̻BF BBܻ˻˼B ʹۛ٬E̦kɚl ˺BBBBB ˻̼ ٮ̼B̕hyvBB̻ EêD˻˖ٯB̩je ̻˻BBBD B˻Fh|BhB˻B ˻˺F FFB̼̼۝ʤ̤ۧHF˻̻B˺̻B̻D BB ED~Y̓WF ˺˺F»BBBDBDBB˻Bܮ˷y˻DFE ˺˻E»EBBD ˼eXBڼhE ̼˻»F'˼exĜVE ˻DD»BD BE'˻̧yuzۊEB˪ĻEDBGBݨ̖ZB ̼ ̻B˼DE˻XۚڎzݛB ̻»BDEBBfxBBBB ̻B́ D ˺BBB{TgiBBB ̻BBBBB˶5xBwvBB ˻BB ̻̻B̼DzBDŽBB B ˻BBD ̻̼TFSYdU[BݶBFE ̻B» ˻D˼vzu|˔Ihܖ݁ɜ̨BB˻B˻F»B˻DUIs(g܌Fe[\BB˻DwgE»DD ˻̻˻B9Yh IFZBBܺDDDCDF»B ˻zFXH{ED kB xrD322DCFEBBwuyDܺ2!'#6X'E۽}gFܛB BPATSiSCIBVSDV"3DUfw  dVSMKGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG`SCAN.36<SCAN.1ED6SCAN.24$MAIN@ [zj(`k G* %r`d PYOYOPYY]WWWܼ7"U\DeDD Dw  32ONMNO &!$&CDk[`[i:7:7:48,DU>&&HHK +2@imvvK:6 * *&* ! 7.438    **($$-:<;;-$% !&,933J?-)0-? "/3 394),+!!B?D??BB?D ?0??<?<?< ?? ???.0 ?00 ? ?B ?BB;AEAEI?D9@>J@HHXLTVVACRU[^fdpKKJIFFEB:57-&"%' #$&'$+%-%'*&#&!'&&%)%A>XAFAJ     54FCFAD $ 7.407 BB??BB?B?BBB?B?BB?B?BBBBB?BBBBB ???E?BBB?B?B0?B ?B?EB??B?DD?DBB?D?DB DEB?FDEB0?FEB?FDEFEB)??B B DEB?B???B??B??BBB??B?B??? ??B? ?BB?BB?BE?D??E?B?BBB??BBDBB ?B?0?BB??B?B?BB?BB?EBDB?ED!? <<<0D? ?0B<?< D?B ?0B<?B< ?D?? ?0B< ? n n h k~ 8Ll ĠƠŠD4`N ~ Ln8nLmFLn~ Ln ~ Ln,0Ln{LnLmL4n Ln LnLn Ln LnLn e} 6}  #ɛLnLmL4nLn`H Boh8` | Ҡ! 8`8yyyyyy ``H | V} | e} d   e} $hH t}  h !y  e} 孭> H | V}` e} `}8fv,Lq Ԡ Һ$ t} t} t} .DEF  ]8  58    8  t} t} t} $   t} t} t}Lq  Һ v v .DEF v      v  wv  uv   ]Lq  78{ Jɿ -) rLq 孿 pN8{0 JF [} 6}`)   CLDr ELDrH ^h @ `NJN Hɛpɍ9ɈX LrɠD)OȄ 2 |LdrNNLO{aA[8nLNN ` |LMrN)` s  ` s8 88 ` jɛSɍ<Ɉ;{ }LsȄ Fɠ8f }2 |LsH [}Fh` |LsH [}Fh)`N4tN4t/8n4t ,7/L t :ɛL/tɍL*tɘɈ-𹈩 Lt Lws,4t0 v vɯ  vLws)Ȍ @Lws |Ls `)` :ɛsɍbɈ㈩ LtNtɤ8ntLt v,t v |L7t)Ȍ |LPt `)8`7........ u `+u u+u`NKNJN :ɛLɍOɈ4 Lvuɠ  v)Ȅ d |LQu |L:u)8`N u ̐ u O̐ڭJ JJJJON8nJ8nK ` u`HfvhH),v-v ,vh`h8`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ./0123456789ABCDEF &)8nvNvdwewvvvewewɰdw,dw0v,vLv },v` d'NdwewLwTw\w"8LwTw\wewLvewɰdw,dw0v ,v` d@'Bm)H........mmmhm`yyyyy.y.y.yy.y.y.yyyyyyyyyy.y.y.yy.y.y.yy.y.y.yymyyymyyymyyymyyy.y.y.yymyyymyyymyyymyy  yyy yyyyyyy yy+ymyym yym y ym  y Lx`>y]y I{ :{`%'(+./@BCDEFGHIJKLMNPQRSUVWXNo ErroBad MLI CmBad Parm CounInterrupt Table FulI/O ErroNo Device ConnecteWrite ProtecteDisk Volume SwitcheDisk Volume OfflinBad PathnamNo More BufferFile Not OpeDirectory Not FounVolume Not FounFile Not FounDuplicate FilenamDisk FulDirectory FulIncompatible VersioIncompatible Storage TypEnd Of DatRange ErroFile LockeFile BusDamaged DirectorNot ProDOS DisParm Out Of RangVCB Table fulBuffer Area In UsVolumes Have Same NamVolume Bitmap DamageH h`%L]{LT{Șe` | ҠҺԽ$ t} H ` `| | 0| i i L{ȱ ȱ ȱ L| | t}`BADPCDPTXTXTPDABINFNTFOT BA3 DA3 WPF SOSDIRRPDRPIAWPASPPASCMDIVRBASVARRELRBNOBJADBINTSRCBATS16MACLBRLNKMACPRGDBFHLPDATLEXRTLEXESTRLIBCDANDATOLP16SYSɃɛ`8`HH`0hh`LLLBB e} } } }BB!`0 L0}I`I`HH{H!8{ }h{hh` LLL${% ` `8n@L}N@HH{JxUTh,@0 $)(TX{O{h`{JxUT(,TX`H{JxUTh(,TX`HhHh`hL}hH ɠ @h` }`H-Γh`?{{ h`Γh`Zs- | EE ȱ-  펓 o`HHi e}hh`y EE ȱ -  ` H)`i }I },H }I }ih` H,a0,b0)` :,a0,b0)`@ e} > H`,)`,)*.aj`h h  H h* H H`"h h  H ɍ }L k~h*" H H`{ 6} e} [} `}eeHh    ɛCɍJɈɕ&ݙL |LΖLBi͕LBH [}h` [}`HH ȱ hh`  " !&*. ӭ   /   %5  "2󮮮)  *    $-ïҠ 򠨰8  ``9H)8h);:9 8L 穣  e<8=9>~<=> L'~ L'     89Li:;-4` H8  h` 8h`N    L8n . `LʬLL e} `}NLmQL JʬL e} Jʬ e}  m e}   [} "!# | V}` [} ҠΠԠء | H` "P!# [} | V} J ӸԠvvHJJJJ uv .h)   J  Š Ҡ̠     e}   䠤 > e} Š @ e}  @ e}  @ e}  < e}  < e}  < e}  < e}  < e} 嬠 < e}  < e}   e}   嬠 1< e} ҠԠ < e} à̺ 6 e} 庠۷]6 e} 庠R6 e} غr6 e} Ạr`N, 冩"  TɛL  ! L 0LLL  B   à  N78n7 rs "P!# | V}Lh8n,L )/)LH "P!#h` jj L 8L `H ΋ h` V} TL3 [}JJJJ͓H `}hi͔ eHL SHJJJJ) h**)iH Dh /H)   6} hiLE M :ɍ<  Rة`#ΓL*i͔L* L5 L5L8 [} 8` [} ,,0 ̔`` [} |   Ҡ ` {/,+L h',,0ɍ  `N+Lߍ8`v-@ABCDEJKFHI L/̯Ȍ?0=,*(//LL   FLLL)/1)a)ߙ-אָ LHȢa)ߝ.-hȌLH 2  | ɠ$hH t} h !y  J  H "P!# | V}8L"L- PLJKFGHI L~~+ L-.- >?@ >LC@DA8CFBDGCFDGEJK  ..  i%i." !!+;<=~:~+ 2 #MLLL&!)L])- L]F $< =>(L](L](L](L]L]F $< =>(L](L](L](L]L] L]FGHmHImI%i%i  հL] (  [} | V}    v uv   H "P!# | V}L&;m";_^ ` ĠΡ `Sa<=>ݍ S`Tʭa$$b  c  `abc `Z'(z8`z`0123456789ABCDEF /` | V} e} 嬠 ΠҠ - Π. e} e}  # #- e} "P!# |  0 ŠŠϠӠϠ! |8L<,+ N+AF [} |  W8 ʊ 08  8  A L{8  _ Y | "i e}ii  &% ii L{ 6}L{ 6 0 | " e}% ii L{F [} "mA e}% ii    AAL!F [} V} T ɛLL/2cɍL LuLoL L~   yLǗLƙ  yLǗ#8 yLǗ yLǗii  8   yLǗ8  (mmNnNnNn yLǗL< 8L< H "P!# (h`8  i  e} |`8  i  e} |`M MLi%i  ɩ8`` JvFG uv  JK uv 䬠 HI uv .  JBC uv  DE uv 䬠 A@ uv .`.8 )O8{ JL) *L   #  vȱ uvv  !   퓠 0Ln $L` $  t} t} $ t} t} t}`ȩMMN.?L*=L-L5. L5L5? ML7L=* @L7-LM73N0- M$L5ML-.*=-`8`M!"-.? =*LH!.?-M8" 8  ML8"͞LL  M"e ̞!m"m(`  Lڞ8Lmnoh h   H H ȱ mno` ȱ ɠF }L8f }F [}`` YYLTL <)L &)  me L/Вȹ 6)j #)  me B/Z5 -)" )  me  .) `TL)J)jJJJJJ  L0:`8`NRnR.R`.R`_^K)H....mmhmL]`  Q)"ȹQ)ȹQ)i i `8`J eejff` !"#$%&'()*+,-./012345O=====|====|====|====|====|====|====|====|====|====|====|====|====|====|====|===8} 4Description of Stowe Keller's ProDOS8 LIST utility4--------------------------------------------------updated: 03/31/89 friMK LIST is a $15 shareware machine language program for ProDOS8 which is HFdesigned to allow viewing the contents of any ProDOS file. I find it LJparticularly useful for examining files which are too big to fit into any OMword processor. Although useful to programmers and hackers, my beta-testers NLand I feel that non-programmers can benefit from it too. I hope to improve MKthis program's user-interface to make future versions even more "friendly" +for computer novices and non-power-users.NL LIST is designed to handle file sizes up to the full 16 Megabyte limit PNof ProDOS8, and provides several different display modes, allows scrolling up MKand down through a file by line or by page, has options for searching, and CAcan print all or parts of a file to printer or disk. LIST has a MKconfiguration screen with save-to-disk capability; LIST will automatically IGload this file (if it exists) at startup. There is onscreen disk/file LJselection for choosing which file you wish to view, or you may explicitly MKtype in the pathname. I have many ideas for expanding and improving LIST, 'some of which will be detailed later.JH LIST currently requires an Apple //GS, or //c or //c+, or //e with MK80-columns (64K and 128K are supported). There are known problems with it OMrunning on the Laser 128. Because it is oriented to an 80-column display, I OMhave made no effort to make it run on the ][+ or 40-column //e. As far as I LJknow, it has never been tested on any Franklin computers. It has not yet PNbeen tested on the AppleShare network, but I purposely avoid using those disk NLcommands which cause incompatibility on AppleShare, and I do not expect any #problems. (Famous last words...)MK Because of the size of this program (over 32K), it cannot be launched JHdirectly from BASIC.SYSTEM (you'll get the "NO BUFFERS AVAILABLE" error NLmessage). I recommend using a ProDOS program launcher, such as Don Elton's NLECP, Glen Bredon's Pro-SEL, or David Lyons' DAVEX, or one of the many other packages which are available.MK LIST is a copyrighted program which is $15 shareware, with commercial HFrights reserved. This means that you, as an individual, may copy and LJdistribute the program for free, and try it out to see if it is useful to MKyou. You are not allowed to sell this program, in whole or in part (other MKthan the cost of duplication), nor are you allowed to make it part of your MKcommercial package, unless you obtain prior written licensing from me. If PNyou, as an individual, decide to use or keep the program, you are expected to PNsend me $15 (or more, if you like) so that I can pay some bills and so that I NLcan continue expanding and updating this program. For your $15 I will send PNyou one update to a future version of the program, along with a more detailed ;set of instructions for getting the most use out of it. LJ So far, I have invested about nine months of my life in LIST, and in PNorder to add all the features and options that I describe later, I anticipate NLspending another several months on this project. Send me your suggestions, IGbug reports and comments, and I'll do my best to work them into future <versions of LIST. And thank you for supporting shareware! My US MAIL address is: Stowe Keller 101 Viewmont Court# Charlottesville, VA USA% 22901@ I can be reached electronically on the following systems:& Compuserve: [71540,725]" GEnie: SKELLER& BIX: stowekeller3 Pro-Line: Pro-Carolina!stowekellerLIST FEATURES-------------IG-Viewing modes: LIST currently offers support for viewing files in the following formats:L -All modes have a "Zoom" and "non-Zoom" mode for hiding or displayingO control (or other special) chrs. When control chrs are displayed, they appear in inverse text.L -Compressed text: 80 chrs across a line, no attempt to interpret line terminators.L -ProDOS mode: Look for Carriage Return as line terminator; if found, : move to next line, else wrap at 80th chr position.N -MS-DOS and Unix modes: look for Linefeed as line terminator, else wrap at 80th chr position.L -Hex mode: display file in Hexadecimal and ASCII format, 16 bytes per> line. Displays byte offset at beginning of each line.M -AppleWorks Word Processor mode: will interpret the internal format ofO an AWP file, and display it onscreen as if you were viewing from withinI AppleWorks. In this case, Zoom will display or suppress printer * options etc, just like Appleworks.N -Specified by user: given a 7-bit value specified by the user, use this) as the line terminator character.KIA status line is presented at the bottom of the screen, showing the file HFoffsets for the beginning and end of the section of the file which is JHonscreen; the file length; whether or not Zoom mode is active ("[Z]" is IGdisplayed if Zoom active); and a percentage representing your relative position within the file.KI-ProDOS parameter passing: LIST will accept a filename as a parameter at PNstartup (just like BASIC.SYSTEM), provided that the launching program follows JHApple's guidelines for doing so. If no filename is provided, LIST will OMprompt the user to either explicitly enter the filename to be viewed, or the JHuser may perform onscreen selection of disk volume, subdirectories etc, NLending with the selection of the file to view. This onscreen selection can NLbe performed solely with arrow keys and the return key. If the user wishes PNto view the bytes within a DIR file, that too is possible by highlighting the OMDIR file and pressing Open-Apple-Return instead of Return. (Pressing Return 2on a DIR file moves you into that subdirectory.)PN-Configuration file: at startup, LIST looks for a file (in the same directory LJfrom which LIST was launched) for a file called LIST.CONFIG. Support for OMconfiguration options is currently limited, but as of now this file contains PNuser options such as printer initialization string, printer width, tab width, LJand defaults for hex or decimal range display at startup, where printouts KIshould go (to printer, to disk, or prompt user, etc). When you exit the NLconfiguration screen (by pressing ESCAPE), you have the option of saving it to disk.OM I have plans for removing the configuration screen from LIST and making OMit a separate file, and then adding features like command key redefinition. JH(Some of my beta-testers HATE open-apple keys, and determined users can OMchange the keys by patching the command key table in the LIST.CONFIG file.) NLLIST checks the command key definitions at startup and will default them if @there is a serious problem with it (such as duplicate keys). MK-Arrow keys can be used to scroll up and down through a file by line or by NLpage. Open-Apple-1 through Open-Apple-9 can be used to proportionally jump HFthrough a file, like Appleworks. (These keys can also be used during <onscreen file selection to move through long directories.)KI-Appleworks-style prompts: to facilitate ease of use, I have implemented NLAppleworks-style prompts in LIST. The user can answer through use of arrow PNkeys and return, or (with only a few exceptions) by pressing the first letter JHof the desired option, or the user can press ESCAPE to abort out of the prompt.NL-A help screen is available displaying brief descriptions of the commands. DBIf the command keys are reconfigured, the help screen will change accordingly.MK-An Information screen is available, providing details on the current file =being viewed, current display modes, line terminators, etc.NL-Find option: allows searching for a string of text chrs (case sensitive or NLinsensitive) or hex bytes, or repeat the previous Find command. The search MKwill start from the second line on the screen, and if the string is found, OMthe file position will change to display that line at the top of the screen, KIwith subsequent lines following it. (I have several ideas for expanding JHthis; see elsewhere.) Currently, while viewing a text file and using a JHstring search (NOT a hex search), LIST will automatically interpret any PNControl-H's in the file as destructive backspaces. This means that LIST will PNsuccessfully find strings entered in an interactive terminal session, even if JHthe middle of the search string was edited with Control-H and partially JHre-typed. I know of no other utility which will do this for you. (I'm OMconsidering making Control-H processing an option, because there are obscure IGcircumstances in which you want it turned off.) When in AWP mode, the PN300-byte header of the file is always skipped during searching. Hex searches MKin AWP files are not recommended. Currently, there is no practical way to MKsearch for printer commands in AWP files. Also, this version of Find does FDnot support searching for strings which contain the line terminator 8character. I plan to fix this in an upcoming version.MK-Jump option: allows jumping to a specified file offset, or to a specified MKline number. Lines are interpreted according to the current display mode; MKfor example, compressed mode will treat every 80 chrs as a line, Unix mode NLwill search for linefeeds as end-of-line markers, Hex mode will count every 16 bytes as a line, etc.PN-Line mode: LIST makes a simple attempt to determine what display mode to use HFfor this file. If it is not correct, the user can easily change it. PNWarning: treating non-AWP files as if they were AWP, or examining a corrupted PNAWP file, can result in a huge mess on the screen. Other problems can arise, MKtoo, so I recommend against trying to force a file into AWP unless you are (certain that it really is an AWP file.KI-Mark a section: The user can mark the beginning and end of a section by PNspecifying the file offsets (very clumsy, I know; ideally, there should be an KIonscreen cursor for marking the start and end). This marked section can #later be printed to file or disk.KI-Print options: Print the screen, the entire file or a marked section to NLprinter or disk. NOTE: output can be affected by whether or not you are in OMZoom mode. This issue needs work (see elsewhere for more discussion), but I 5haven't decided how best to improve this situation.QO-Range mode: specify whether to display status line ranges in hex or decimal. FUse the configuration screen to specify default for program startup.OM-Zoom mode: toggle displaying/hiding of control chrs (or special commands in AWP files)OM-Extract: this feature is intended for the extraction of a section of a file OMand storing that section to disk in unmodified form. Because of the way the LJPrint to disk options work, it is not possible to extract 8-bit data: the OMvarious routines are currently geared towards 7-bit ASCII. With the Extract OMfeature, you can pull out 8-bit data (such as a machine language subroutine) LJfrom one file and save it as a new file. Extract will make NO attempt to JHread the file in line-oriented fashion, and no line terminators will be generated in the output file.MK-ESCAPE: This gives you the option to exit the program, or to view another MKfile. If you choose to view another file, LIST attempts to return you the LJsame directory from which you chose the previous file, and will highlight OMthat file entry. You may then use the arrow keys and return keys to perform onscreen file selection.IDEAS, NEW FEATURES, ETC:-------------------------MK-Configuration options: As mentioned above, I plan to make this a separate LJprogram, and allow chaining between LIST and the Config stuff. This will OMopen up some much-needed room for new LIST features, as well as open up room FDfor more configuration options, like command key redefinition. I'm IGconsidering things like page length information, page headers and page LJfooters. I also plan to redo the format in which questions are asked and A?answered to make the configuration screen less intimidating to non-power-users.NL-Another issue is how to handle representing control chrs when outputting a IGZoomed file to the printer. One idea is to allow the user to choose a PNspecial printer sequence, such as underlining, which would cause control chrs MKto be underlined when they appear on the printer. Currently, control chrs KIgoing to the printer get converted to visible ASCII, which is thoroughly PNconfusing, particularly if you forgot to turn off Zoom mode before printing. NLWhen printing to disk, those chrs are left as control chrs, which can cause Iunexpected results (such as double-spaced text) if you are not careful.NL-Extract option: currently, you must specify the start and end range of the JHsection of the file to extract by entering the file offsets. I hope to KIexpand Extract, as well as the Mark Section feature, so that an onscreen ?cursor can be used to mark the beginning and end of sections.PN-New feature idea: I hope to expand the print-to-disk option to allow writing PNINTO a specified file, not just append onto or overwrite an existing file, as ECit stands now. Also, allow byte zapping in hex mode (and possible Felsewhere), so that the program can be used as a simple file editor.CA-New feature idea: When first viewing a text file, I plan to try HFdistinguishing between files that use C/R's versus linefeeds for line NLterminators, and set the viewing mode accordingly before passing control to user.OM-New feature: I plan to implement another display mode for viewing Applesoft GEBASIC files, which will detokenize BASIC commands and perform simple NL"pretty-lister" display. This will take a significant amount of work. I'm NLalso intrigued with the idea of allowing disassembly of binary files, but I ,doubt that I will be able to support this.MK-Improvement: I hope to speed up single-line scrolling in the file display NLmodes. I'm working on this; it's not as easy as most people think, because PNof some obscure situations that can arise when viewing certain files. Simply MKscrolling the text window up and down does NOT work with all files. There Aare many situations in which the entire screen must be redrawn.J-New feature idea: make Control-H processing an option, not automatic. OM-New feature idea: an option to allow truncating at the right edge of screen LJthose lines which are over 80 chrs long. This is very useful feature for NLlooking at files like 132-column assembly listings. Only the first 80 chrs MKwould be displayed in such a mode, with the option to hop over to view the next 80 chrs, and so on.LJ-New implementation: I plan to write an Apple //GS Classic Desk Accessory Fversion of LIST. I expect it will not be ready before Summer, 1989.MK-New feature: I plan to allow searching across multiple files. This would FDinvolve implementing a user-interface for specifying filenames with MKwildcards, and allow specifying files on basis of modification date, size, OMfile type, etc. Most of this code is already written, but I need to come up with an easy-to-use interface.JH-New features: I want to expand the find/search commands to allow for a JHreverse search, allow wildcards, boolean AND/OR/NOT, and other powerful MKconstructs. As mentioned elsewhere, I soon hope to support embedding line .terminator characters within search strings.OM-Custom version: I am looking into writing a customized version of LIST that JHmakes use of voice synthesizers, so that visually handicapped users can benefit from this program.KNOWN BUGS AND LIMITATIONS:---------------------------PN-Bug: Viewing a corrupted AWP file, or viewing a non-AWP file in AWP mode can PNresult in alot of junk onscreen, and the find commands can fail with internal memory overflows.J-Bugs: LIST does not display all text and menus properly on Laser 128's.HF-Limitation: as evidenced by the need for the Extract option, LIST is PNoriented towards 7-bit values, not 8-bit values. The algorithms do not allow 6for a line terminator with a value greater than $7F.LJ-Limitation: there is no support for displaying Mousetext characters that (occur within the file you are viewing.NL-Limitation/bug: there is no word-wrapping implemented. LIST does not care PNif it splits a word across the right-hand edge of the screen (or printer) and MKspills the remaining chrs onto the next line. I find this a very annoying >limitation, and I plan to implement a word-wrap option soon.OM-Limitation: when printing out AWP files, any imbedded printer control codes PN(other than carriage return) are COMPLETELY ignored. If you are in Zoom mode OMwhen you print, these printer codes will be printed in ASCII text, just like PNyou see them on the screen. Some users will obviously expect LIST to be able LJto print an AWP file just the way the Appleworks would. Implementing all MKAppleworks printer commands would involve an enormous, if not prohibitive, MKamount of work; however, I do plan to support some of the more fundamental 1printer commands, like New Page, and Centering.NL-Limitations/Bugs: I have not fully tested all the error trapping, and alot LJof the pop-up error msgs are inconsistent and look sloppy. In general, I KIwill probably implement more pop-up text boxes and I hope to improve the consistency among them.--- Une nouvelle version pour ce logiciel de Back-Up de disque dur. Ceux qui ont retourn leur carte d'enregistrement aux USA chez Vitesse la reoivent automatiquement. Certains bugs de la version 1.0 ont t corrigs. - Le message erron "Disk Full" a t limin. - Les fichiers Sparse sont traits correctement. - L'option "Backup to pathmane" a t tendue 32 Mo. - Le compte des fichiers est toujours correct quelles que soient les conditions. - La double impression du rapport de Backup a t limine. - L'impression des tiquettes amliore. L'diteur vitesse annonce une autre version, plus tard dans l'anne, version qui tiendra compte des avis et suggestions reus. Les sauvegardes ralises avec la version 1.0 sont parfaitement utilisables avec cette version. REVUE DE PRESSE AMERICAINE __________________________ Elle va se faire de plus en plus maigre car toutes les revues Apple II disparaissent peu peu. CALL APPLE vient de s'arrter avec le numro d'hiver 90. Nibble, sympa, a repris les abonnements de cette revue et propose une prolongation d'abonnemment ( Nibble, bien videmment) en fonction des numros de Call Apple restant servir. Call-Apple Winter 1990 _______________________ * Animation de table de formes avec la boite outils du IIgs.( assembleur Merlin 16+ ) * changer le bureau du IIgs( routines du Window Manager): DeskMajik (TML Pascal) * mettre des icnes dans les programmes * Hyperstudio XCMDs en Pascal * comment se servir de la Boite Outils du IIgs (TML Pascal) * TML Pascal II * Histoire de C: la programmation (avance)en C * Merlin 16/16+ : un CDA affichant une carte de la mmoire. * Les modems : transferts de fichiers de stockage (Binary II) * NuFX: le stockage de fichiers * Internet: un service tlcom de la National Science Foundation * Les moniteurs * Dtecteur de lumire : petit montage partir du port de manettes * grer le Scrap Manager en Micol Basic * une application desktop suite (voir numro prcdent) * CDA Memory Saver (merlin 16) * Master Tracks Pro : un logiciel de musique NIBBLE Fvrier 90 __________________ * the three stooges et Prince of Persia ( description du jeu) * un programme en basic pour ne pas se perdre dans le maquis des emprunts etc..: real estate advisor * Les messages d'erreur * Stranderd: un jeu en basic * Alarme GS (merlin 8/16) * La commande POP en Applesoft * algbre bool{enne * gnrateur de nombres alatoire en assembleur * les ducatifs du langage: the ugly duckling- stone soup-once upon a time II NIBBLE mars 90 _______________ * les jeux: Knights of legend- Battle chess- Downhill Challenge * utilitaire pour rcuprer des disques ProDOS abims : ProDos Disk Doctor (merlin) * Les erreurs sans messages * un tableau pour mesurer ses performances vlo ???? (Appleworks) * un loto en basic * Apple Split Screen: partager l'cran pour avoir deux parties spares d'un listing en basic en mme temps sous les yeux. * choisir entre Gosub et goto * les fonctions SIN et COS de l'Applesoft * programmer avec GSOS 5.0 * les lanceurs de programme (comparatif): prosel 16 ver 8.1 - Hyperlauch 3.0 - Jumpstart 2.5 - Easydrive 1.6A - Prosel 8 ver 4.0