Skip to main content

tremplin micro newsletter issue 12

  • PublicationApple Periodicals
  • Pages72
  • Sourcetremplin_micro_newsletter_issue_12.pdf
← Magazines tremplin micro newsletter issue 12
/ 72
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
Le 65C816_ deécortique Ecrivez en HGR ! | Votre Apple connait la musique ! AU SOMMAIRE PREMIERES ROUTINES POUR LE GS .............0c0c0eueueeues 2 ECRITURE EN MODE HGR ETENDUE ..................0000000 00 3 BT MAPS (D059 6) csicsscosninsisiernanseaniusninsmanciaiamosaneuiess N L'INSTRUCTION BIT, utile et mal connue ............0..00 cere eee 14 ORGUESURIAPALE ausas cement capita ie 15 COMMUTATEURS: LOGIQUES <ss.cacreemenemcmneryeris 17 65C816 La suite et la fin de l'étude de Marcel COTTINI ... 21 HORLOGE 20.0.0... ccc cece ec eeseeeeeueeeees a 9 CREEZ VOS CARACTERES GRAPHIQUES 33 DU COQ ALANE, jeu de lettres 00.0.0... 0. 0c ce ceeeeeee ee eee 43 LES VARIABLES NUMERIQUES . 49 GARAGTERES SOURIS sm isicicouesi arises 52 PROTECTION SELECTIVE DANS /RAM ............0cceeeeeeeeeee 53 BRIGA-BRAG srarstiacisinenarmammmreTerTT 56 UN NOUVEAU! CERCIE sc scsecswsesnconcyossessemeanmanreeeess 57 INITIATION MEMO-VISU, jeu visuel ..........-.....0005 61 AU BASIC TROIS PETITS AIRS ceceeeeee 65 LES LIVRES 00.0... 0c cc cscs ec cee esse es eeeeseeeeeneeees Yvan KOENIG REPOND A NOS LECTEURS Avec la collaboration de: ARGOS, Marcel COTTINI, Michel DEVAUX, Francois GALLET, Madeleine HODE, Roland JOST, Yvan KOENIG, Jean PERROT, J.-P. PICHON, Clément RENARD. . GUY-HACHETTE Apple et ProDOS (noms et logos) sont des marques dépo- sées d'Apple Computer, Inc. BIMEST L Le numéro : 33 F Abonnement d'un an : 190 F (6 numéros) Tous nos prix sont indiqués TTC. EDITIONS JIBENA Direction-Rédaction : Editions JIBENA Guy-HACHETTE la Petite Motte — Senillé 86100 CHATELLERAULT. Téléphone : 49-93-66-66 PUBLICITE : Raymond JULLIEN (1) 45.75.41.81 Commission paritaire : Les revues qui choisissent d’étre réellement au service du Lecteur, en ne lobligeant pas & glaner, dans plusieurs magazines, les renseignements concernant sa machine, ne bénéficient pas du numéro de Commission Paritaire, et pas dovantoge des tarifs pos- toux réduits. TREMPLIN MICRO — Bimestrie! — Cest une publication des Editions JIBENA, 4, rue de la Cour-des- Noves, 75020 PARIS — S.A. au copital de 3600000 F — Imprimé por CITE-PRESS/PARIS — Dépét légal @ la date de parution — Ins- cription a la Commission Paritaire des Publications et Agences de Presse : en cours — Directeur de la Publication: Guy-Clément COGNE — Diffusion N.M.P.P. Ou est donc passe le GS ? APPLE //GS existe. Tremplin Micro |'a méme essayé ; mieux : nous rae avons testé, sur cette superbe édition de la formule Il, tous les pro- grammes du présent numéro. Parfaitement : la compatibilité a été vérifiée, en mode émulation bien sér, et je vous assure que ca mar- che. Y compris I'HORLOGE de Francois Gallet, mais en tenant compte des restrictions indiquées par l'auteur... et en sachant que le GS n'a vraiment pas besoin de cette horloge d’appoint ! Quant & l'ORGUE de Roland Jost, il est superbe, mais en utilisant le tableau de bord du GS pour le mettre en vitesse lente... comme le /le qu'il émule si bien, mais parfois avec trop de brio. Mais oui: il est réellement tres agréable d'observer la rapidité de l'affichage et l'accélération dont bénéficient certaines routines de notre vieil Applesoft. Je vous mets l'eau 4 la bouche, pas vrai ? Croyez bien que je le regrette. Si cet aveu peut vous consoler, sachez que je ne suis pas mieux loti que vous : j‘ai définitivement restitué son GS au service de Presse d’Apple... et j‘attends maintenant le mien. Je comprends la déception de certains lecteurs de Trem- plin Micro : commander un ordinateur personnel est une chose ; pouvoir s’en servir quand bon vous semble en est une autre. Hélas ! dans le monde entier, les constructeurs de centaines de matériels font les mémes annonces, puis ne tiennent pas leurs promesses. On ne compte plus les clients qui, en désespoir de cause, ont annulé une commande ici... pour en attendre une autre la ! Il faut reconnaitre qu’Apple n’avait rien promis du tout. On savait depuis le premier jour que |'Apple //GS ne serait vraiment disponible (c'est-a-dire livra- le dans les 48 heures) qu’au début de 1987. Convient-il de regretter que l'annonce en ait été faite un peu trop tat ? Hum ! qu'auraient dit les incondi- tionnels de la marque si on avait continué 4 leur cacher la sortie prochaine d'une machine que tout le monde attendait ? C'est pourtant ce qui se passe avec les imprimantes (Apple s'entend). Je vous Gssure que nous ne savons rien. Officiellement. Comme certains de nos lec- teurs, nous avons appris, dans des magazines édités outre-Atlantique, que lusieurs imprimantes Apple — dont une laser "démocratique” — étaient sur le point d’étre commercialisées. C'est récent... et c'est tout... du moins au moment ot je rédige ces lignes, c’est-d-dire au début du mois de décembre. En attendant d’en savoir davantage sur ces merveilles, souhaitons-nous une bonne... une excelente année 1987. Merci de votre attention et rendez-vous dans deux mois ! GUY-HACHETTE, suunqeacauaaozsmsssseceseusssenssonssssssrsesascunsssersssosersnsasesnsseneennssseseeescsersoezeseseses TREMPLIN MICRO APPLE /ICS : c’est parti! Nenviez pos Nicole Bréaud-Pouliquen, auteur du premier MEMENTO consacré a VAPPLE 1/GS (au PSI) ; exploiter une documentation, aussi compléte soit-elle, et en extraire les adresses indispensa- bles au programmeur amateur n'est pas de tout repos... surtout quand il n’existe aucun autre ouvrage permettant d’utiles comparaisons. Je vous invite 4 découvrir ces CLEFS POUR APPLE lIGS, Cette pre- miére édition comporte certes des lacu- nes, mais I’étude du GS n’en est qu’a ses débuts ! Que l'on ne s'y trompe pas si cet ouvrage s‘adresse d'abord et sur- tout @ des programmeurs pratiquant a f. DEPLACEMENT DE L'ECRAN, TEXTE 0 16 15 20 30 40 50 60 70 80 85 90 95 *300.319 306: 308: 310: 318: LES COULEURS DEL ECRAN. TEXTE GS exclusivement PRINT CHR$ (21): HOME FOR | = 768 TO 793: READ R: POKE |,R: NEXT : POKE 2039,32 FOR | = 24 TO 1 STEP - 1: HTAB I: VTAB I: PRINT I;; NEXT PRINT : CALL 768 POKE 778,96: POKE 781,04 GOSUB 90: HOME : GOSUB 90: CALL 768 X=X+1:1FX<9 THEN 50 POKE 778,04: POKE 781,96 VTAB 20: PRINT "(M)ENU ";: GET R$: PRINT R$: IF R$ = “M" THEN PRINT CHR$ (4)"RUN MENU.GS HOME : END VTAB 22: INVERSE : PRINT "TOUCHE SVP ";: NORMAL : GET R$: PRINT : RETURN DATA 8,24,251,194,48,169,255,3,162,0,4,160,0,96,169, 255,3,84,0,0,56,251,226,48,40,96 -LALIGNESS — G8 18 FB C2 306 A9 FF @3 A2 0G G4 AG GG 60 AD FF 03 54 GG GG 38 FB E2 30 28 60 GS exclusivement ' f 10 PRINT CHR$ (4)PRE3”: PRINT : HTAB 15: PRINT” LES | bl (ou le | C), il four- " tira i "i COULEURS DE L'ECRAN TEXTE DE VOTRE APPLE IIGS fous les autres. 20 A = PEEK (49186): B = PEEK (49204): REM Couleur On examinera avec curiosité le systeme actuelle (A=Fond / B=Cadre) CPW, avec son moniteur, son éditeur et son macro-assembleur, mais on s‘attar- 25 FORI = 236 TO 251: POKE 49186,1: GOSUB 90: NEXT dera sur le répertoire détaillé des outils du bureau électronique (QuickDraw, 30 CALL - 198 WindowManoger, MenuManager, etc.). 35 FORJ = 60 1075: POKE 49204,J: GOSUB 90: NEXT Nicole Bréaud-Pouliquen a méme pous- sé a gentlesejusqu's montrer dans un 40 POKE 49186,A: POKE 49204,8 prostareete_Soemciety: (commen VTAB 22: PRINT "(M)ENU ";: GET RS: IF R$ = "M" THEN ajouter un accessoire de bureau & une : 4 application. Ce n'est pas d'une simplicité PRINT CHRS (4)RUN MENU.GS évidente, mais je sais que bon nombre 80 END d'Appl i éjoui it deja a Ia pauike de pouvoir prochoinenanr 90 POKE - 16368,0: WAIT - 16384,128,127: POKE -16368,0: dompter la béte ! Guy-Hachette RETURN . GUY-HACHETTE —_ — bos ProDOS ECRITURE EN MODE Haute Résolution étendue © En dehors de logiciels fermés tels que PURPLESOFT, ARLEQUIN ou EXTA- SIE, difficiles & modifier, il n'existe encore que peu d'utilitaires permet- tant de gérer la double haute résolution de I'Apple /le 128 K ou de son cousin I’Apple IIc. Dans le n°10 de Tremplin Micro, Thierry Gauthier a présenté un programme d'inversion d'écran DHGR. Je vous propose maintenant un utilitaire permeitant l’écriture en page DHGR. ECRIT.DHGR est appelé par la fonction AMPERSAND et permet, 4 partir d'un programme Applesoft, d’afficher du texte en page haute résolution étendue. Les possibilités sont les suivantes : * Alphabet frangais accentué, alphabet grec, indices et exposants (intéres- sant pour les programmes de chimie, physique ou maths). Tous les caracté- res peuvent étre écrits en gras, en double hauteur, en inverse. Enfin l’écri- ture peut se faire horizontalement, vers le haut, vers le bas ou en oblique. Routine LM et table de caractéres Tremplin Micro ne publie pas le programme source, mais celui-ci figure sur la disquette n°12. Pour taper ECRIT.DHGR, procédez donc de la maniére habituelle : CALL -151, puis les différentes lignes de codes. Sauvez-le par : BSAVE ECRIT.DHGR,A$4000 L465 Attaquez-vous ensuite 4 la table de caractéres (ce n’est pas du gateau, mais elle vous rendra de nombreux services !) : 4260 : 60 10 10 08 08 04 04 03... et sauvez-la par : BSAVE NEWSET2,A$4200 ,L2048 SIGNATURE (voir bulletin de commande) vous permettra un contréle facile de la saisie de ces Un BLOAD ECRIT.DHGR vous permettra de Vinstaller en mémoire. Votre programme BASIC devra faire pointer la fonction Amper- sand en $4000 (POKE 1013,76: POKE 1014,0: POKE 1015,64) et afficher la page DHGR. Pour afficher une variable alphanumérique, il suffira de faire : & PRINT “chaine” AT X,Y ou & PRINT A$ AT X.Y avec la position horizontale X (entre 0 et 79) et la position verticale Y (entre 0 et 183) routines... et, d'une maniére générale, de toutes celles 4 paraitre dans T.M. Comment utiliser ECRIT.DHGR ? Pour afficher une variable numérique, il! fau- dra la transformer en chaine de caractéres par la fonction STR$. Cela n‘est pas un handicap et vous permettra d’ajouter un affichage formaté (variables chaines). Ecriture en double hauteur : faire SCALE = 2: Pour revenir en mode normal : SCALE = @. Ecriture dans différentes directions : la direc- tion de l'affichage peut étre modifiée par I'ins- truction ROT. (suite page 4) Pe DLL lela TREMPLIN MICRO ee eieiaiaiaietaieraiareeaieeeaaeae ROT=9 : affichage horizontal CTRL-N_ : Affichage normal (ni gras ni inverse). ROT =7 : enoblique 4 45° vers le bas ROT =8 : verticalement, de haut en bas Le source Assembleur est bien documenté et ROT = 15 : enoblique vers le haut peut se passer d’explications supplémentaires. ROT = 16 : verticalement, de bas en haut. Le programme Applesoft DEMO.ECRIT.DHGR Les autres possibilités s‘obtiennent en insérant permet de se rendre compte des possi des caractéres de contréle dans la chaine : d'ECRIT.DHGR et de la facon de l'utiliser. CTRL-B : Le prochain caractére sera décalé vers le bas. CTRL-E : Le prochain caractére sera mis en exposant. ATTENTION ! CTRL-F : Le prochain caractére sera en grec minuscule. Les chaines de caractéres renferment des CTRL-G : Le caractére qui suit sera en grec majuscule. caractéres de contréle invisibles au listage CTRL-I e caractére qui suit sera mis en indice. et qui se traduisent 4 l'impression par un CTRL-O : Le caractére qui suit sera décalé vers le haut. comportement inquiétant de I'Imprimante. CTRL-P : Tous les coractéres qui suivent seront impri- Un truc pour le lister est de capturer le pro- més en gras jusqu’a la fin de la chaine ou la gramme en fichier TEXTE, de fe saisir dans rencontre du CTRL-N. un traitement de texte et d’éliminer ces CTRL-Z : Tous les caractéres qui suivent seront impri- caractéres avant impression. Une autre més en INVERSE jusqu’d la fin de la chaine ou solution est apportée par le programme la rencontre d'un CTRL-N. SIGNATURE d’Yvan KOENIG. | el 18 REM TEST ECRIT.DHGR to: 803A 20 DS = CHRE (4): PRINT D$"BLOAD ECRIT.DHGR": PRINT D$"BLOAD NEWSET2, AS42608" 311 22 POKE 1813,76: POKE 1@14,0: POKE 1915,64: REM Revectorise |’ ampersan d 2c7¢ 36 ROT= @: SCALE= @ F9CB 34 3 9938 25 REM On positionne les “switches” de passage en double haute résolut jon graphique 36: 983A 4@ POKE 49246,@: REM ANS (Annunciator? off @cic 42 POKE 49232,4: REM sélectionne le mode graphique «GR on) 3219 44 POKE 49239,4: REM selectionne ja haute résciution CHIRES on? 8728 46 POKE 49145,0: REM sélectionne le mode 8@ colonnes (86 cOL on) 151E 48 POKE 49234,0: REM sélectionne le mode pleine page 2618 56 POKE 49153,0: REM permet de stocker directement dans Ja page graphi que auxiliaire (8@STORE on) OF1B 52 POKE 49154,8: REM Déconnecte RAMURT OF1E 54 POKE 49154,8: REM Déconnecte RAMRD FCICc 54 POKE 49224,6: REM commute la mémoire principale tAlDd Ss? 3 8634 4@ REM On efface 1a page double haute résotution 61: 863A 65 HGR : REM Efface la page graphique principale 2391 66 POKE 49237,0: REM sélectionne 12 page graphique auxiliaire 381E 6? CALL 62450: REM efface 1a page HGR 4F30 68 POKE 49236,@: REM retour & la page HGR principele 1A1D 49 POKE 49234,@: REM pleine page graphique 261B 96: 883A 91 REM DEMONSTRATION 4 GUY-HACHETTE eS ee ee se a —a 165 118 115 128 125 127 128 138 135 146 145 147 156 155 166 165 166 178 190 226 58a SCALE= 1: INVERSE : & PRINT "ECRIT-DHGR" AT 15,1: NORMAL : REM Ce titre sera écrit en hauteur double et en noir sur fond blanc GOSUB 586 AS = "permet d’écrire des textes en mode Double Haute Résolution.": SCALE= @: & PRINT A% AT 5,20 GOSUB 560 AS = "EN MODE ctZINVERSEctN ou NORMAL": & PRINT A$ AT 10,30: REM 1 1 y a un CTRL-Z devant INVERSE et un CTRL-N aprés. GOSUB 560 As = "ctP en caractéres GRAS : ctGABCDEFGHIJKL..." & PRINT AS AT 20,58: GOSUB 506 AS = "VERTICALEMENT": ROT= 8: & PRINT At AT 70,20: ROT= 16: & PRI NT At AT 72,138 GOSUB 588 AS = “EN OBLIQUE ": ROT= 1: & PRINT A$ AT 16,98: ROT= 9: & PRINT AS AT 16,86: ROT= 8 GOSUB 500 AS = “en DOUBLE HAUTEUR": SCALE= 2: & PRINT AS AT 48,85: SCALE= @ AS = "“Formules mathématiques :°°Y = axctE2 + bxctE3 + cxctE4": & P RINT AS AT 5,130: REM I] y a un CTRL-E avant lee caractéres & mettr e en exposant GOSUB 56a At = "Equations chimiques : CHctI3CHctI120H + CHctI3CO0H --> CHctI3C OOCctI2HctI5 + HctI20": REM il y a un CTRL-I devant les caractéres a mettre en indice & PRINT AS AT 5,156 GOSUB 588 AS = "Alphabet grec :°y = ctGSxctliyctli - ctFC‘x,y)": & PRINT AS AT 5,170: REM 11 y a un CTRL-G devant $ , un CTRL-I devant chaque i et un CTRL-F devant C & PRINT “a vous d’utiliser toutes ces possibilités...” AT 15,188. GET RS REM on déconnecte 1a double haute résolution POKE 49247,8: REM ANONCIATEUR off POKE 49164,@: REM CLR8OVID : 86 COL off POKE 49233,@: REM TXTSET : MODE TEXTE POKE 49238,@: REM LORES :LO-RES off POKE 497152,@: REM CLR8@COL : 8@ STORE off POKE 49236,6: REM LOWSCR:PAGE 2 off END REM BOUCLE DE TEMPORISATION FOR T = 1 TO 1688; NEXT : RETURN 5AB1 1B45 S564F 1B45 3C1F 1B45 331 cAgs C7A4 3CED DB34 6838 803A FOF Féid cola 2B1F BIIA 1A1D 61898 SFFF Si vous manquez de temps (ou de courage !) pour recopier les polices de caractéres de notre ami Roland JOST, offrez-vous la disquette numéro 12 de TREMPLIN MICRO! TREMPLIN MICRO A2 G8 86 1C Aé E7 FO 94 A2 10 856 BIDe D@ G6 A2 FF 86 EF D@ 86 A2 66 B86 -7BFD 86 C9 22 DB G6 28 81 DE 38 BA 87) = AEGF 84 Al A® 89 B1 AB 85 FC C8 Bi AB afar 85 FE 20 B7 08 C9 CS Fé 81 66 28 4FF4 F5 Eé 86 ED AG 88 84 AB 84 6 B84 FEAL Ad AB B1 FD C9 IF 16 66 26 56 41 ECF3 @6 85 CE Aé EB 84 88 18 66 BB AP = CO7F 80 54 C@ D8 63 8D 55 CB 18 AS ED EBIE D8 46 AS F9 C9 88 DB BP AS ED 18 77IE 29 C9 18 08 GA 38 AS ED ES 1C 85) ESEF 68 38 BE 38 AS ED ES F9 18 69 68 = -2EFE 69 AS ED 18 65 F9 85 ED E6 EB E6 = scan 08 SE 66 26 1D 41 AY 88 85 BF ASB 4aBD 1A 84 1B E8 Ad OF BI CE AG FA CO £339 ECRIT DHGR Sauvez cette routine par un: ¢ BA GS FB 45 EF Ed 89 Ad BB 971 1A Bada BSAVE ECRIT.DHGR, GE 2@ 3B 41 85 1A 84 1B AS Al Ad 0774 AS$4000,1465 EE D@ C9 AP 42 85 CF 68 AS CE AZ B1BA @2 £6 CF CA 0@ Fé 18 465 1D 96 62) = css 96 85 86 85 1D 68 8A 4A 4A 4A AB Dade 29 87 GA GA 18 79 BY 41 AB 68 68 Agar ED 68 C9 65 DB 89 AD 8G 85 B86 AY = PADS 86 08 85 AY 46 85 46 68. C9 87 DO = aviC 66 C9 BF DB 83 Cé ED 686 C9 16 DB =_27ce 68 C9 69 DB G5 A 86 85 B46 48 CP = agar 85 EF 85 FA 68 C9 1A AY FF 85 EF 9258 80 88 88 88 28 AB 28 AB 28 AB 2B) Alfa 5@ D@ 5@ D@ 26 20 21 21 22 22 23 ~ECII 22 22 23 23 28 20 21 21 22 22 23” =«~FDI8 Le programme source (bien commenté par lauteur) figure sur la disquette n°12 de Tremplin Micro. 4623 permet d'écrire des textes en mode Double Haute Résolution. y EN MODE ou NORMAL FY H en caractéres GRAS : ABCDEFGHIJKL... | ; C Ae rN gpulaue : EN opp on DOUBLE HAUTEUR At Ty E } N Alphabet grec : y = Exiyi - y(x,y) T . A yous de jouer maintenant ... \ Formules mathématiques : Y = ax? + bx} + cx! 6 _ GUY-HACHETTE Yvan KOENIG répond @ vos questions... ¢ M. D. a essayé d'utiliser PRO.TYPC sans lire lorticle d'accompagnement. Ce n'est pas grave, mais c'est frustrant pour lauteur & qui lon pose alors des questions auxquelles il a déja répondu. Oui, PRO.TYPC est relogeable. C'est dailleurs l'intérét principal de ce pro- gramme qui montre comment mettre en place une routine entre ProDOS et ses buffers. Par contre, MINIE que M. D. tente d'accoupler @ PRO.TYPC (quel sera le | fruit de cette union ?) ne dispose pas d'un relogeur, mais d'un transporteur. Claude AUBRY a préféré libérer de la place pour son programme - a une adresse donnée - et le copier a cette adresse sans modification. Je vous garantis que ce n'est pas par igno- rance ! En fait, afin de permettre de modifier quelques paramétres depuis le BASIC, il était quasiment indispensable que l'implantation de MINIE fit fixe. Cela condamne simplement 4 mettre en place MINIE, puis PRO.TYPC, mais attention! ne faites pas 36 BRUN PRO.TYPC consécutits sinon le message IL N'Y A PLUS DE PLACE vous attend au coin... de l'écran ! Le petit programme PRO.FP (page 60 de T.M. n°11) permet de supprimer toutes les monipulations subies par ProDOS (déplacement des buffers, interruptions, reset...). ll permet d'éviter des déplacements de buf- fers obusifs. Attention | PRO.FP supprime également MINIE. C'est en gros l'équivalent du FP sous DOS 3.3, mais SANS effacement du BASIC ce qui permet de Vexécuter DANS un programme. © M. D. demande aussi comment récupérer, sous ProDOS, des informations souvées dons un fichier TXT et contenant des virgules. lly a la bonne vieille méthode GET, a savoir : 1060 ONERR GOTO 1050 (suite poge 8) suneuesseeesssersewecessssesasennenssoses TREMPLIN MICRO NEWSET2 _ 220110: NWSE EA scimnsosr 18 68 08 64 84 83 88 BC 14 92 3E Al 63 68 S117 22 1E 22 22 1F 86 3F 22 82 62 82 82 83 OI 14 92 22 Al 7F 88 3F 22 82 GE 02 22 SF 68 BFSE 3E 68 3E 88 1C 68 3F 22 82 82 62 82 83 88 BALE 4240: B3 22 22 3€ 22 22 B3 86 SC 88 48 88 68 48 BC OB B40 425: OC 12 21 2F 21 12 OC 88 B3 12 BA B6 BA 12 B3 OB B46! 4268: 88 8C 14 92 22 Al 63 88 B3 36 2A 2A 22 2293 88 FIM 4278: B3 22 26 2A 32 22 B3 88 1C 22 Al Al Al 22 1C 6 E18B 4280: BF 22 22 22 22 22 83 88 3F 21 88 1E 88 21 3F 88 S7FA 4298: 1F 22 22 1E 02 62 83 88 3F 22 04 88 04 22 3) 4200; BF 88 68 68 88 88 BC 86 36 AD 88 48 88 6 4288: 63 Al 22 92 14 BC BB 8B IC 22 Al Al 22 9 4208: 83 22 14 88 14 22 B3 68 IC 88 4B 2A IC B 6 86 3 F 22 16 08 64 22 BF 88 3E 06 06 86 6 : 68 82 04 88 16 28 88 86 3E 38 38 38 30 42F0; 88 1C 2A 88 88 68 G8 88 88 8G 68 B68 68 66 08 BB FETE 4300: 08 06 80 88 08 88 86 08 68 88 A8 BB 48 Bd OB OB 2098 4310: 14 14 14 66 86 66 88 88 @8 88 88 88 68 48 88 BB D260 4328: 08 3C BA IC 28 1E 88 68 Bd 26 18 88 84 32 3 4338: 84 GA BA 84 2A 12 2C 86 68 88 08 80 86 B8 BB BB 7590 pes 88 84 82 42 82 64 08 88 88 18 28 28 28 18 68 88 CAE 8 2A 1C 88 1C 2A OB OB 88 88 88 3E 88 8 88 68 88 88 64 BB BB BO OB 3E 08 Bd 88 88 6752 8 OG 86 88 88 88 BB 88 26 1¢ BB 84 B2 86 8 2 32 2A 26 22 1C 88 68 BC 48 68 68 88 IC 2 28 18 84 62 3E BB SE 28 18 18 28 22 1 8 14 12 3E 10 18 68 3E 62 1E 28 28 22 1¢ 8 7E88 + 38 04 82 1E 22 22 1C 88 3E 28 18 88 64 84 04 88 B49E 43C8: 1C 22 22 1C 22 22 1C 8B 1C 22 22 3C 20 18 BE 86 DAES 4300: 88 88 09 40 08 68 86 88 88 88 88 B6 68 88 64 BB 420 4360: 18 88 04 82 04 88 18 68 86 88 3E 08 3E 88 08 BB F306 488 18 28 18 88 84 BB IC 22 16 88 88 BB BB AB 428E @ 28 1C 28 3C 22 3C 88 88 14 22 22 3E 22 22 08 BdED : 1E 22 22 1€ 22 22 16 88 1€ 22 62 62 02 221 4420: 1E 22 22 22 22 22 1E 88 3E 82 82 1E 62 82 3E 4430: 3E 02 02 1E 82 02 82 88 3C 82 82 02 32 22 3C BB E738 2 22 22 3E 22 22 22 88 4450: 28 28 26 28 26 22 1C 68 4460: 02 82 82 82 82 82 3E 08 4478: 22 22 26 2A 32 22 22 08 : 1E 22 22 1E 82 62 62 86 1E 22 22 1£ 8A 12 22 68 E 88 88 88 88 88 88 BB 22 22 22 22 22 22 1C 8B 2156 4480: 22 22 22 22 22 14 88 86 22 22 22 2A 2A 36 22 BB 7808 QCAy 22 22 14 AA 14 22 22 WA 22 22 14 AR AA AA ARMA ETE 4408: 3E 20 10 88 84 82 3E 88 08 14 68 BB BB BA Ba Be 7EDE 448: 88 3C 82 82 82 3C 18 88 28 18 IC 22 3E 42 3C BO E88 44FO: 88 14 2A 08 88 88 88 08 BB 88 BB BB Ob BB BB 7F F2ED 4500: 68 82 64 68 18 26 88 68 1C 26 3C 22 3C 08 BAl4 Sso5ss a a 2 2 1 NEWSET2 uite) 04 68 12 24 68 18 98 88 @6 88 2E 11 19 B7 BB : 88 BB AG 3C AZ 26 9D #1 GH G8 AG 28 98 18 88 06 118 84 08 GE 12 12 OC 98 88 08 9C 32 1E 42 BE 98 96 18 3C AA 2A 9E 84 64 O68 88 Ad 28 96 16 88 OP : 6 86 36 Ad 24 92 16 98 98 OB 89 48 84 O4 BC 86 : 38 28 24 9E 12 GA B6 88 BB BB 24 BA B64 BF 31 OB + 06 $4 88 BC 14 92 22 86 66 68 Ad 24 92 2A BI OI G8 86 A 24 14 OC 64 OG BH Be BC 92 22 92 BC Bb + 66 08 BF 15 14 14 92 88 88 38 84 9C B4 82 IC 18 2 06 G8 18 24 92 GE 81 @1 88 86 B6 BE 89 69 87 88 : 08 90 BF 89 84 84 82 80 98 8 AZ 24 92 BA 86 86 4684: @8 88 AZ 24 14 BC 64 BB O8 BB 48 23 29 20 9B OB 46C8: 88 88 91 14 BC BC 14 AZ BB 18 89 2A 95 BF 82 02 4608: €4 9C 44 82 82 84 84 Bé 38 BC OC Bd AC BC 38 86 46E8: 68 98 88 88 88 08 88 G2 BE 18 18 38 18 18 BE 68 46FQ: 88 88 2C 1A 88 3E BG 88 7F 7F 7F 7F 7F 7F IF 7F 4708: 08 06 88 86 98 88 84 46 48 08 43 a8 89 48 BB 88 4714: @@ 68 14 14 6B 68 68 G6 86 BG 18 3C 88 IE 84 88 4728: 86 06 88 1C 08 1C 68 86 58 BB 14 10 88 84 14 4738; 66 08 1C 14 1C 86 08 86 88 BB 88 88 88 88 a0 4740: 08 88 08 84 64 B4 88 88 88 GG BB 18 18 18 8 4758: 88 86 82 14 BB 14 68 86 66 BB 88 BB IC BB 8B 4768: 08 84 86 88 16 18 68 86 G8 68 98 88 IC 88 68 4778; 06 08 86 08 80 08 88 86 08 BB 18 16 68 A4 84 88 4788: 88 88 1C 14 14 14 1C 88 88 88 BC 88 88 88 IC 88 4798: 88 08 1C 1@ 1C 84 IC 68 O8 O6 IC 18 18 18 IC 47AB: 88 86 84 14 IC 18 10 68 96 48 1C 84 IC 18 IC 4786: 88 6 1C 84 1C 14 IC 88 GB BB IC 16 88 88 68 08 47C8: 86 88 1C 14 1C 14 1C 88 86 BB IC 14 IC 18 IC 88 4708: 06 82 B8 88 88 08 68 BI 66 88 88 88 86 08 64 4768: 08 08 16 08 84 88 14 & 48 1C 06 IC 47F8: 08 6 84 @8 18 G8 B4 88 G8 G8 IC 16 88 68 OB 4806: 88 86 88 34 49 49 36 88 84 BB IC 14 IC 14 14 88 4816: 66 88 BC 14 BC 14 BC B6 88 BB IC 84 04 B4 IC 08 4828: 08 8 14:14 14 OC 88 08 88 1C 4 BC 04 IC 88 4518: 62 82 1E 22 22 22 1E 88 88 OB 3C 42 G2 62 3C 8 4520: 26 28 3C 22 22 22 3C 88 08 48 IC 22 3E 82 3C 86 4530: 18 24 4 1E 64 64 84 86 8 BB IC 22 22 3C 26 IC 4540: 82 42 1E 22 22 22 22 86 88 88 OC 88 98 08 IC OB 4550; 16 86 18 18 10 18 12 6C 82 62 22 12 BE 12 22 8B 45468: 8C 32 98 88 88 88 1C 88 48 BB 36 2A 2A 2A 22 08 4578: 86 88 1E 22 22 22 22 8 88 88 IC 22 22 22 IC 88 4580: 08 88 1E 22 22 1£ 82 82 88 88 3C 22 22 3C 28 20 4598: B@ 88 3A 86 02 62 OZ HG OG AB 3C 82 IC 28 IE 88 4508: 04 84 1E 04 84 24 18 88 88 88 22 22 22 32 20 OB 46 2 36 08 22 20 1 3 3 88 2 3C 08 88 88 36FC 7E26 Q9DE 2026 8052 8782 FaBA 3cda Yvan KOENIG répond 4 vos questions... (suite) 1010 PRINT CHR$ (4)OPEN fichier” : PRINT CHR$(4)"READ fichier” 1020 GET X$ : traitez X$ comme bon vous semble 1040 GOTO 10620 1050 PRINT CHR$(4)"CLOSE” On peut également prévoir, AVANT écriture, de remplacer les virgules par un caractére inemployé (le tréma par exemple) et faire l'opération inverse en lecture. Si l'on dispose d'une zone mémoire disponible capable de contenir le fichier 4 lire, on peut utiliser PRO.TYPY, version modifiée de PRO.TYPC pour y déposer nos précieuses vir- gules afin de les exploiter a loisir par la suite. BLOAD PRO.TYPC CALL - 151 610D : C8 Bl 48 D9 C3 61 DO 25 (bug déjamentionné) 6152: 20 AO 61 615D: 20 A9 61 617E: Ad 00 6180 : 98 20 AD 61 C8 DO FA B9 6188 : 00 02 EA EA EAEA EA EA 6190 : EAEA 20 AD 61 C8 CC DB 6198 : BE DO EC EE AF 61 DO BB 61A0: A9 60 8D AF 61 ADDO BE 61A8: 60 8C D9 BE 98 99 00 60 61B0 : 60 61C7 : 59 BSAVE PRO.TYPY,A$6037,L401 TYPY fichier déposera vos octets en $6000, loctet haut de I’adresse de début du buffer se trouve en $61A1, les NOPs correspondent 4 un besoin précis de M. D. qui souhaite remplacer les “return” par des “linefeed” ce qui se fait avec la modification suivante : 618A: 09 80 C9 8D DG 02 AI8A Nous transmettrons volontiers vos lettres & Yvan KOENIG, mais n‘oubliez pas de joindre une enveloppe timbrée pour la réponse et un timbre pour la réexpédition de votre courrier. Nous vous rappelons que, si le courrier de TM est gratuit, nous ne pouvons répondre qu‘aux demandes respectant la régle du jeu fe t. énoncée plus hau: Tremplin Micro nnaucuencenanocazesensecseezezeueuenecse GUY-HACHETTE © Je posséde un APPLE Ile et une imprimante PANASONIC KX-P1091. Tout fonctionne bien avec une carte interface dans le slot 1, mais il est impossible de faire démarrer I'imprimante avec APPLEWORKS. J'ai modifié la configura- tion, mais toujours rien... Je ne connais pas particuliérement votre imprimante, mais il me semble qu'il s‘agit en fait de l'une des multiples “compatibles EPSON” 4 liaison paral- léle. Vous ne dites rien de I'interface utilisée alors que c'est 1a que se trouve presque toujours le probleme avec APPLEWORKS. Avec la version 1.2 de ce logiciel et les interfaces paralléles “type EPSON", il n'y a pas de solution. II faut essayer de remplacer |'interface par un modele accepté par AW (GRAPPLER par exemple). Je vous suggére une formule de dépannage : utilisez l'option Ajoutez Imprimante, Impression sur disque. C'est gourmand en espace disque, mais vous pouvez, le cas échéant, couper votre texte en deux. Ensuite la version TYPE de la routine PRO.TYPC de Tremplin Micro n°9 vous permettra d’envoyer votre texte formaté vers votre imprimante. © Un petit probléme & vous soumettre : cer- tains logiciels reconnaissent automatique- ment la présence de deux lecteurs de disquet- tes, et le programme ne se “plante" pas sur un ‘/O ERROR” si un seul lecteur est présent. S‘agit-il dans tous les cas d'un essai de lecture du D2 suivi d'un ONERR (etc.)... RESUME... ou alors existe-t-il une adresse (du cété de $60A...) qui permet, par un PEEK judicieux, de savoir s'il y a un ou deux lecteurs dans le port 6? Une courte routine serait la bienvenue pour les programmeurs en herbe que nous sommes, désireux d'améliorer le contort et la convivialité de nos programmes. En BASIC votre probléme n'est pas difficile 4 régler. xxx D$=CHR§(4) 100 NBD=2: REM 2 drives par défaut 110 ONERR GOTO 130 120 PRINT D$ "VERIFY XYZ,D2": GOTO 160: REM Au cas ot XYZ existerait ! 130 POKE 216,0: ER=PEEK(222): IF ER=6 THEN 150: REM Le fichier n’existe pos mais il y a un disque en place 140 IF ER<ID8 THEN PRINT “Erreur N°’ER” ligne "PEEK(218) + 256 * PEEK(219) : END 150 NBD=1: REM Un seul disque en place 160 REM Suite du programme Attention ! un disque DOS 3.3 en lecteur 2 serait traité comme une absence de disque sous ProDOS... et vice-versa. Y.K. seneeenooncescnces, TREMPLIN MICRO do NEWSET2 suite et fin) SSS 4030; 06 BB 1C 84 BC 64 84 G8 BB 68 1C 84 G4 IC IC 8B 4840; 88 88 14 14 1C 14 14 88 86 88 IC 88 88 88 IC 68 4850; 08 68 16 10 18 14 IC 68 66 68 14 BC 84 BC 14 88 4866: 96 08 34 44 G4 G4 iC 80 06 BB 22 36 2A 22 22 4870: @@ 08 12 14 1E 16 12 68 BO BB IC 14 14 14 IC 88 4880: 66 46 1C 14 1C 84 A4 G8 46 OB IC 14 14 IC 1C 20 4896: 82 G2 1C 14 BC 14 14 BB AG BB IC 84 IC 16 IC 68 49A8: 88 86 1C 88 88 99 88 88 BB 68 14 14 14 14 IC 08 4888: 68 88 14 14 14 14 88 BB 88 BB 22 22 2A 36 22 4800: 88 86 14 14 63 14 14 88 66 08 14 14 88 88 88 4808: G2 G8 iC 14 68 B¢ 1C BB BB BB IC 4 B4 B4 IC 4850: 80 86 G4 44 49 19 16 08 GO OB IC 18 18 18 IC 08 4BF0: 68 G8 62 86 88 2A 14 2 86 08 BO Be GG 88 88 7F 4908: 28 28 28 28 28 28 28 88 G0 98 G8 IC 18 IC IC 88 4916: BB 88 64 1C 14 14 IC 68 BG 68 BE IC B4 84 IC 86 4928; 08 8B 18 1C 14 14 1C 8 O8 88 66 IC IC 84 IC 86 4930: 88 £2 18 88 OC OB OG 68 86 G8 BB tC 14 IC 18 IC 4940; 88 08 84 IC 14 14 14 66 B8 8 88 38 88 08 08 06 4958: 08 86 GE G2 68 08 B4 48 G2 Be A4 14 BC BC 14 8B 4968: 88 88 BC 48 88 88 IC 68 84 88 HO 3E 2A 2A 2A 08 4978: 06 88 GB 1C 14 14 14 66 06 88 68 IC 4 iC 08 4988 48 BB 1C 14 14 1C 64 08 88 86 IC 4 1C 10 88 88 1C 44 84 64 88 82 BA G8 18 @ OC ae 4900: 08 08 88 18 88 88 10 86 66 8 88 14 4 1C 86 4980: 68 86 62 14 14 14 BB BB BB BB BB 2A 2A 2A 14 06 141 141 a4 1 141 4908: G4 86 88 14 08 88 14 88 BB Bd B68 14 14 IC 18 18 4908: BG 88 88 IC 18 AC IC 68 86 BB 88 86 28 62 GO 80 4960: 04 88 88 66 80 08 B60 08 86 08 G6 48 08 80 08 88 49FO: BG 88 G8 G6 G8 GA BA B6 8 3E SE 3E 3E 3E 3E 7F OF98 C406 S1SC 8008 FRF3 Votre bibliotheque INFORMATIQUE © ARBRES, TABLES ET ALGORITHMES (Eyrolles) les auteurs sont francais et ingé- nieurs : Jacques Guyot est docteur en analyse numérique et Christian Vial docteur en informatique. Sans doute en déduisez-vous qu'ils sont on ne peut plus qualifiés pour traiter le sujet de cet ouvrage, et vous avez raison. Il est vrai que les auteurs sont également enseignants-chercheurs... d’ou un livre parfaitement structuré, constituant un cours magistral sur des points souvent négligés par les programmeurs en herbe : — Résolution informatique d'un pro- bléme (analyse et modélisation) ; — Langage algorithmique (schéma de résolution) ; — Structures des données (piles, files, arbres, graphes) ; — Diverses méthodes de tri ; — Gestion de tables, etc. Uexplication des diverses méthodes de tri, notamment, est particuligrement claire. Des schémas la rendent méme attrayante. En conclusion : sujet(s) aride(s), mais dont l'étude sérieuse devrait permettre aux lecteurs de mieux maitriser la programmation. ¢ EXERCICES DE BASIC (Eyrolles) Nous avons déja eu l'occasion de parler des ouvrages de Claude Delannoy, dont on connait notam- ment Apprendre 4 programmer en Basic et Initiation & la programma- tion (méme éditeur). Comme le rappelle fort justement Vavant-propos de ce nouveau recueil, la maitrise de la program- mation ne s‘obtient que par la prati- que. Je suis tenté d’ajouter : et par \'étude d’exercices similaires 4 ceux du livre de Claude Delannoy. Certes, le Basic utilisé n'est pas \'Applesoft, mais les lecteurs de Tremplin Micro se retrouveront néanmoins en terrain connu, méme s'ils n’ont pas la possibilité d'utiliser le “IF... THEN... ELSE” que connais- sent actuellement la plupart des Basic. Claude Delannoy leur montre en effet comment remplacer cette instruction par deux lignes. J'ai beaucoup aimé !a présentation de ces Exercices de Basic. Pour cha- que exemple, l'auteur donne d’abord Vénoncé du probleme a résoudre (pardon : & programmer), les don- par Clément RENARD nées éventuelles, les résultats, un tableau obtenu 4 Ia suite d'un run, le programme lui-méme, un autre tableau regroupant la liste des varia- bles, puis une discussion du pro- gramme avec des conseils pour modi- fier ou remplacer telle ou telle instruc- tion. A conseiller aux débutants, © DEBUTER EN C (Eyrolles) Nous devons a Christian Le Bras cette traduction francaise du livre du Califor- nien F. Richard Moore. L'auteur nous signale que son ouvrage ne devait constituer, 4 l'origine, que I'un des chapitres d'un. manuel de musique par ordinateur... mais n'en déduisez pas qu'il ne s‘adresse qu'a des lecteurs musiciens. Par contre, pour réellement en tirer profit, il est bon d’étre motive pour la programmation et surtout d'avoir accés 4 un ordinateur équipé du systéme d'exploitation Unix. Débuter en C ne concerne sous doute qu'un petit nombre de lecteurs de Tremplin Micro... encore que l'on parle sérieusement d'un langage C sur nouvel Apple //GS. Pua oeeeAseserosssseREsSEEESeesseUaEeeRaeEEsENESOsEeaEeeeeree ses OseeeAEeeeEseeeeeeeeeeeeeesTeNE Eee 10 GUY-HACHETTE Marcel COTTINI UTILITAIRE EEE PROGRAMME DEMANDE PAR DE NOMBREUX LECTEURS, TRES ATTACHES A LEUR VIEUX DOS 3.3 ! Sass Visualiser l'occupation d'une disquette DOS 3.3 ne sera plus un probléme pour le lecteur | de T.M. Le programme BIT MAP, écrit en langage Basic AppleSoft, occupe 15 secteurs sur la disquette. II permet la visualisation de l'occupation des secteurs de chaque piste | au niveau de la disquette, ainsi que du nombre de secteurs libres, donc disponibles 4 l'utilisateur. Ces renseignements sont fournis par I'intermédiaire d'un graphique simu- lant la surface de la disquette 4 considérer. Les secteurs occupés seront matérialisés par le symbole X, tandis que les secteurs libres seront laissés vierges. Au bas du graphe sera inscrit le nombre total de secteurs libres. Certains modules composant le corps du programme pourront étre intégrés dans vos réalisations futures comme sous- programme appelé par un GOSUB par exemple. utilisation méme du programme est trés simple. Aprés avoir lancé son exécution, |'uti- lisateur pourra opter soit pour Ia lecture des instructions, soit poursuivre le déroulement des opérations. Dans le premier cas, un certain nombre de renseignements seront four- nis 4 l'utilisateur, afin de lui donner tous les moyens d'une utilisation rationnelle. Dans le second cas, il vous sera offert d’étre renseigné sur l’occupation de la disquette venant d'étre lue, ou sur une éventuelle disquette de votre choix. A ropos du rogramme | Les lignes 760 4 800 implantent le sous-programme Pp P Pp g | machine 4 partir de l’adresse $0300 par la routine | de S.H. LAM qui mérite quelques explications. La technique retenue consiste 4 placer dans une Vodresse de la liste des poramatres pour la gestion chaine de caractéres des commandes 4 destination ‘i : moniteur. || sera alors possible d'installer en des commandes, ainsi que l'adresse d’appel 4 du_monite Forcier pe RWIS. A partir de I'adresse $0308 (776) débute la | mémoire un court programme en langage machine table IOB interne au programme. | avec une relative facilité. L'installation en mémoire P DA £803. Ch ; i is baled s‘effectue en trois étapes. 100: LDA £$03 Charge l'accumulateur avec le byte de a 1 silk ‘ poids fort dela table 0B, La chaine est d'abord scindée en caractéres qui sont : . placés dans le tampon du clavier (IN - $0200) les 2 SOE ai celica pois uns @ la suite des autres. Cette opération occupe le tampon clavier a partir de l'adresse $0206 (512 en Le programme implante a partir de l'adresse $0300 un petit sous-programme pour la recherche de Sianakts saneccg ae vcaromme oppelont en | d&cimal). Dans un deuxiéme temps, le CALL ~ 144 : I | prog Anh i appelle un sous-programme résident qui met en CERT Ee ESO vs Ea ceuvre les routines examinant le tampon clavier et Au retour du sous-programme machine (appel par vérifiant l'exécution des commandes inscrites dans CALL 768) il sera nécessaire de mettre a zéro le con- la chaine de caractéres. tenu du registre d'état (statut byte). Cette opération En dernier lieu, il faut revenir au langage Basic. est effectuée a la ligne 240 (POKE 72,0). Pour ce faire, il suffit de se brancher 4 |'adresse A chaque consultation d'une nouvelle disquette, $D9C6, ce qui correspond 4 un retour au mode RUN, la VTOC (Volume Table Of Contents) sera lue, suite de I'exécution du programme Basic AppleSoft. ome une conversion numérique réalisée aux Le POKE 72,0 a Ia ligne 800, met le registre d'état & ignes 710 4730. zéro (statut byte -- adresse $48). TREMPLIN MICRO W 13 148 158 16@ VTAB 16: HTAE 5S: PRINT " NUMERD SLOT: 178 18 198 208 218 POKE I0B + 4,17: REM PISTE @ LIRE 228 238 248 258 JER U EEE EEES * SECTEURS LIBRES * + TRACE LA BITMAP * * COPYRIGHT AVRIL 2S + * MARCEL COTTINI (H-H) # 7 REM ctdctuctd 18 SOSUB 748: REM MET EN PLACE SOUS-PROG RAMME MACHINE INVERSE : PRINT © neon 48 VTAB 6: HTAB 16: PRINT " “DISH FREE & PACE “"" 66 VTAB 8: HTAB 1@: PRINT " AFFICHE LA B IT MAP * 78 VIAB 9: HTAB 18: PRINT " “">>>™7>">™™ *: NORMAL 88 IF PR=1 THEN GOTO 156 98 VTAB 11: HTAB ts PRINT "VOULE2 YOUS L ES INSTRUCTIONS (O/N) "; 188 GET A$: PRINT A$: IF AS = “O" THEN G OSUB 828: GOTO 128 116 IF AS < > "N® GOTO 98 126 VTAB 13: PRINT "ESPACE LIBRE DU DISK QUI VIENT* VTAB 14: PRINT "D’ETRE LU PAR LE “DOS 72 OND 3; GET A$: IF AS = "DO" THEN UTC = 46811: GOTO 218: REM VTC = ADRESSE MéMOIRE 8 IT MAP UTC = 26864: REM ADRESSE $9008 "3s GET A$: PRINT A$:S = YAL (AS): IF § {1 OR S > 7 THEN GOTO 168 VTAB 18: HTAB S: PRINT “NUMERO DRIVE: "3: GET A$: PRINT A$:D = VAL (AS): IF BD ¢ 10RD) 2 THEN GOTO 178 10B = 776: REM TABLE i0B POKE 10B + 1,S # 16: REM NUMERO DU SL ft POKE T0B + 2,D: REM NUMERO DU ORIVE POKE 108 + 5,8: REM SECTEUR a LIRE CALL 768: REM APPEL A RWTS POKE 72,6: REM MET A @ REGISTRE D’ETA TES ER = R PEEK (IOB + 13>: REM CODE ERREU 268 IF ER = @ THEN VTC = 36844: GOTO 318 1B4D 1C5A FaDA BiC2 Fa13 S198 DCI 3136 E26A 82¢8 E348 £933 7C4E 713C DSFD 1823 3cec 3331 Ad7E CORR 3649 278 288 296 386 318 326 338 348 356 368 378 388 398 408 418 428 438 448 458 468 4768 528 536 546 558 578 588 598 VTAB 20: HTAB 5: PRINT "UNE ERREUR A ETE RENCONTREE" VTAB 21: HTAB 5: CTURE DU DISK." VTAB HTAB 5: PRINT “PENDANT LA LE PRINT "LE CODE ERREU REM ctJctuctJECRITURE \TOCctUctuctd HOME SOSUB 410; REM CHARGE LA TABLE EQSUB 78¢: REM CHARGE LA TABLE NUMERI QUE SOSUB 588: REM CODES INVERSES FOR 1 = 8 0 34 X= VIC + 5é + 1 + 4: REM ADRESSE BIT MAP PISTE I X@= INT ¢ PEEK (X) / 160sXt = PEEK (X) = XB # 16:X2 = INT ( PEEK (X #1 )/16X9 = PEER OX + 1) - x2 # 16 PSS = TTS(X8) + TTS(XE) + TTS(X2) + T T$(X3) FOR 11 = 150 @ STEP - 1 VTAB 26 - II: HTAB 4+ I: PRINT MIDS (PS$,11 + 1,1) NEXT IT FS = FS + NNCXB) + NNCKL) + NN(X2) + NNGX3) NEXT I VTAB 21: HTAB 4: INVERSE : PRINT * ~~ --) “"FS" SECTEURS “LIBRES*: NORMAL VTAB 24: HTAB 25: INVERSE : PRINT “CO NTINUER (O/N)*5: NORMAL GET A$: IF A$ = "O" THEN CLEAR :PR = 1: GOTO 28 IF AS < > "N" THEN 468 HOME : END VTAB 1: PRINT " ~""""~""PISTES* NS = "SECTEURS*: FOR X = 1 TO 8: VTA B é + X: HTAB 1: PRINT MIDS (NMS,X,! ys NEXT X CAS = " BBBBRGAGOGL111111111222222222 233333 " VTAB 3: HTAB 3: INVERSE : PRINT CAS CAS = " 812345678901234567898 1 2345678 901234 " VTAB 4: HTAB 3: PRINT CAS VTAB 5: FOR 1 = @ TO 9: HTAB 3:: PRIN T CHR$ (48 + 1): NEXT I VTAB 15: FOR I = @ TO 5: HTAB 3: PRIN T CHRS (65 + 1): NEXT I VTAB 5: FOR I = @ TO 16: HTAB 39: PRI 1289 C2FB 787E 4714 B3FC 90CB ECAL 8777 B8ESt 5583 BESC 93D ca7s 15c8 25¢c8 6CB2 GUY-HACHETTE NT" ": NEXT Tr NORMAL PA7? | 94g 688 RETURN 6381 618 REM ctUctJCHARGE LA TABLEctuctJ 950 628 DIM TT$(15) 0689 $38 FOR 1 = 4 TG tS: READ TT$(1): NEXT I BALD | gga 648 RETURN 6381 658 REM c 668 DATA "Xx 678 DATA *X DONNEES DE LA TABLEctJctJ 878 "OC OC XE HK“ 888 WX IX XB 688 DATA " XX", XK" K XH KH 698 DATA " “XK"." °X "8 Xa 986 58D? BED 918 4381 928 7037 938 948 68 88 6@ @1 68 61 EF De” C76E 958 778 HEX$ = HEX$ + " ND9C6G": REM RE i RUN’ PROCHAINE LIGNE 5499 968 788 FOR 1 = 1 TO LEN (HEX$): REM LONGUEU R DE LA CHAINE bic 976 798 Pi Sil + 1, ASC ¢ MIDS CHEX$,1,1)) 988 REM STOCKE LA CHAINE DANS BUFF 996 ER CLAVIER 888 NEXT : POKE 72,0: CALL - 144: REM AP PEL SOUS PROGRAMME BUFFER 7062 | 1008 818 RETURN 6381 828 J 10:8 8368 UT ae5 | 1028 comprend le mieux — est proprement stupéfiante. Une edition a ne pas manquer ! N'attendez plus et plongez-vous dés maintenant dans l'étude du langage machine. Ce n'est pas aussi difficile que vous le pensez et l'on obtient rapidement, a partir de routi- nes simples, mais efficaces, des résultats surprenants. La rapidité du langage machine — celui que votre Apple ede Seca PRINT "CE PROGRAMME LIT LA TABLE 0’0C CURATION" PRINT *(VTOC) OU DISK ET LA RESTITUE A L’ECRAN" PRINT “EN SECTEURS OCCUPES “MARQUES P AR DES x) PRINT PRINT "LE PROGRAMME AFFICHE LES $ (DE 6" PRINT “A 34) ET LES SECTEURS DES PIST ES (DE F* PRINT "A @).LES SECTEURS OCCUPES SONT sMATERTA~ PRINT ° LIBRES, PRINT "PAR DES PRINT PRINT "POUR UNE DE CELLE- PRINT "CI, METTE2-LA D’ABORD EN PLACE pyTS" : PRI REPONDE2 “N’ @ LA PROCHAINE QU ESTION." RETURN VTAB 24: HTAB 1: INVERSE : PRINT " <C ONTINUE OU <ESC> POUR QUITTER..... " ISTE S PAR DES ’X’ ,LES SECTEURS ETTE DIFFERENTE 32 NORMAL GET A: IF ASC (A$) = 27 THEN HOME : NORMAL : END UTAB 1: HTAB 1: CALL - 958 RETURN 488E 2021 ESE 6381 DE L'APPLE grammes inédits. Une disquette est fournie avec (utiliser le bulletin de commande, a la fin de la CLINS D'OEIL au 6502 DE L'APPLE | regroupe les principales routines publiées dans les premiers numeéros de TREMPLIN MICRO, mais aussi plusieurs pro- le livre revue). TREMPLIN MICRO ASSEMBLEUR 1. Routine 4 plusieurs entrées. Si VAR prend, selon l'entrée, les valeurs $00, $40, $80 et $CG vous pouvez écrire : ENTREE] LDA £$00 JMP COMMUN ENTREE2 LDA £$40 JMP COMMUN ENTREES LDA £$80 JMP COMMUN ENTREES LDA £$C0 STA VAR Vous gagnerez de la place en écrivant : VAR EQU $810 ENTREE] LDA £$00 DFB $2C ENTREE2 LDA £$40 DFB $2C ENTREES LDA £$80 DFB $2C ENTREES LDA £$CG STA VAR Une fois assemblé, ce code vous donnera (avec vos entrées respectivement en $820, $823, $826 et $829) : 820: AY OO LDA £$00 822: 2C AY 40 BIT $40A9 825: 2C AY 80 BIT $80A9 828: 2C AI CO BIT $COGA9 82B: 8D 10 G8 STA $0810 820: AI GO 2C AY 40 2C AD 8G 828: 2C AY CO 8D 10 G8 INITIATION LINSTRUCTION BIT UTILE ET MAL CONNUE Supposons une routine commune 4 4 parties de votre programme. Chacune de ces 4 parties a une entrée particuliére, qui positionne une variable VAR. La routine se compose : ¢ de fonctions exécutées dans tous les cas ; © de fonctions qui peuvent étre modifiées ou sautées pour certaines valeurs de VAR. Il s‘agit la d'un schéma courant, que l'on trouve dans presque toutes les analyses. II illustre deux utilisations simples et commodes de I'instruction BIT : Aprés chaque entrée, sauf la derniére, une ou plusieurs instructions BIT s'interposent. Elles peuvent modifier la retenue ou le bit V du regis- tre d'état. Mais comme vous ne testez immédia- tement ni l'une ni l'autre, le déroulement de votre programme n‘en sera pas perturbé. 2. Tester une variable sans modifier les va- leurs de Ac, de X ou de Y. Nous avons donné 4 VAR des valeurs qui prépa- rent le test par l'instruction BIT. En effet, avec ces valeurs, si vous écrivez BIT VAR, BMI vous branche sur les deux valeurs négatives $80 et $C (entrées 3 et 4). Entre elles, BVC vous bran- che sur la valeur $80 (bit 6 clear, la valeur $80 s'écrit sur son octet avec le bit 7 41 et les autres 4 @). Parallélement, BPL vous branche sur les deux valeurs positives $06 et $40, entre lesquel- les BVC vous départage. Le test complet de VAR, pour choisir par exem- ple entre 4 sorties, s'écrira : BIT VAR | (CCC * BMI NEGATIF NEGATIF BVC SORTIE3 BVC SORTIE] JMP = SORTIE4 JMP SORTIE2 | ....... Recommandation importante : aprés le test d'une variable par BIT, faites vos branchements uniquement avec BMI, BPL, BVC et BVS. Si vous avez des “bugs” pensez 4 vérifier que vous avez bien tenu compte de cette recommandation. Madeleine HODE, auteur de GRIBOUILLE 14 GUY-HACHETTE NE Roland JOST sur Apple Dans le numéro 6 de Tremplin Micro, un lecteur demandait un programme trans- formant le clavier de I'Apple en orgue. En voici un pour tous les lecteurs qui n'ont pas un ENSONIQ dans leur micro. La dis- position des touches rappelle celle d’un piano (cf. figure). Le haut-parleur de l'Apple, s'il est mis sous tension a intervalles judicieux, permet de géné- rer des notes sur plusieurs octaves : FREQUENCE PROGRAMME : 300: 20 53 D5 AA EO OD DO O1 NOTE: | Seve? | Octavels 308: 60 AG 50 84 G7 BC 30 03 déc. | hexa. | déc. | hexa. | dec. | hexa. 310: FO EE 84 06 2C 30 CO 88 318 : DO 04 C6 O7 FO E2 CA DO Sol 128 | $80 | 64 | $40 | 32 | $20 320: F6 A6 G6 4C 14 03 OO OO Faf£/Solb 136 | $88 68 $44 34 $22 7 a Westen saat ae TABLE DES FREQUENCES : Mi 152 | $98 | 76 | sac | 38 | $26 328 : 00 00 00 G0 G0 00 00 GO - — + : | 330: 00 00 00 Go Go GG Go GG Ref£/Mib 162 | $A2 81 $51 40 $28 338: 0G GG OO GG OO GO OO OG = = ar 340: 00 00 00 0G GO 00 00 oO |__Re W22i| SAG] SE | $58 | 48s | S28. 348 : 00 00 00 00 00 G0 00 GG Do£/Reb -| 182 | $86 | 91 | $58 | 45 | $20 350: 00 36 5B 00 00 00 OG 51 Bree Bia biel 358: 00 28 19 00 66 00 72 66 Do 192 | $co 96 $60 48 $30 360: 2D 0G GO 5B 51 OO 44 3C ———S TT 368 : 36 00 56 60 CC 4C 00 00 = 204 | SCC | 102 | $66 | 51 | $93 370: 2D 66 80 98 A256 00 88 al eile | 378: 79 33 6C 00 5B 51 73 30 La£/Sib 2 8 108 aaah ee] S08, | AGE | 968 |. 4. 888 380: 2B GG 4c B6 48 39 91 CO La 20 | se6 | 115 | $73 | 57 | $39 388: AC 40 60 28 00 44 26 OO ai 390: 00 00 00 G0 GO GO Go oO Sol£/Lab 242 | $F2 121 | $79 60 $3C 398 - G0 GO OG OO OO GG ad aa : = ie 3A0: 0G 1B G0 1C 1D 1E G0 OG Sol 255 | SFF 128 | $80 64 $40 3A8: 0G IF GO 00 20 3C 00 22 Ces valeurs se retrouvent dans la table des fréquences. | Sauvegarde par BSAVE ORGUE.0,AS300.L980 secenagenecsensansesesscesesscsssrenernnannsanesesssaeeeeseseseseeeneeseeesseneaceussscesseseneesorneEs TREMPLIN MICRO 15 Comment utiliser ORGUE ? Contentez-vous de taper le petit programme ci- 10 contre. Il se chargera d’appeler la routine en lan- 20 gage machine (ORGUE.@) et l'image du clavier... 30 si vous avez eu le bon godt de la composer. Vous 40 pouvez évidemment utiliser ORGUE sans le dessin mais c'est moins facile. ORGUE.IM figure sur la disquette Tremplin Micro (33 sec- teurs). Notez que la frappe de RETURN décon- 60 necte immédiatement le clavier musical. du clavier, TEXT : HOME : PRINT CHR$ (21): HGR POKE 49234,0: REM PAS DE TEXTE PRINT CHRS (4)"BLOAD ORGUE.6" PRINT CHR$ (4)"BLOAD ORGUE.IM, A$2000" 50 CALL 768 TEXT : HOME Extensions possibles pour programmeurs courageux : Ce programme pourrait étre modifié ou amélioré de plusieurs fagons. Gageons que les Lectrices et les Lecteurs de TM vont s'y essayer ! 1. Changement d'octave par pression d'une 3. touche POM ou TAB ; 2. Possibilité de changer de tempo ; possibilité de rappel (intéressant) ; Sauvegarde du morceau interprété avec 4. Affichage des notes en mode graphique. @300: 26 83803: AA 6304: E@ 6306: DB @368: 48 8309: AG @30B: 34 9360: BC @310: FO @312: 84 @314: 2C 6317: 88 6318: DB 831A: Cé @31C: FG @31E: CA @31F: DB @321: Aé @323: 4C 53 @D a1 56 a7 36 EE a6 36 a4 E2 Fé 86 14 oS 43 ca 63 Dee ee ee te eee SVCDVAMRWON-TVONRULYN® NNNNNNN NOUB ON OWNN -oun Assemblage par ProCODE * Source du programme de * * ORGUE * DUREE EQU $07 FREQU. EQU $06 * INCHR EOU $0553 SPKR EOU $c830 * ORG $300 * ORGUE JSR INCHR TAX CPX £800 BNE 01 RTS o1 Loy £950 STY DUREE LDY $330,x BEG ORGUE STY FREQU. 02 BIT SPKR 03 DEY 04 BNE ORGUE2 DEC DUREE BEQ ORGUE ORGUE2 DEX BNE 03 LOX FREOU. UMP 02 génération de sons: 3 Entrée d’un caractére Active le haut-parleur saisie d’une touche au clavier. est-ce un <RETURN>? non , on continue. oui , retour au BASIC. durée d’une note recherche dans table si 8 , attente touche. active le haut-parleur et on boucle boucle obligée. GUY-HACHETTE Dos ProDOS Marcel COTTINI MMUTATEURS LOGIQU Avertissement au lecteur Le but de cet article est de lever le voile sur l'aspect souvent flou de la programmation de la mémoire vive, principale ou auxiliaire. Tous les ingrédients sont donnés pour que le programmeur averti puisse avoir accés 4 ce type de programmation sans pour autant rentrer dans des détails complexes et souvent mals acceptés par le lecteur. Pourquoi une memoire auxiliaire ? UApple // dans sa version de base intégre sur sa carte mére des "chips" ayant une capacité de mémoire vive de 64 Ko, disponi- bles & l'utilisateur. Le micropro- cesseur de la premiére généra- tion, un 6502, ne permet d’adres- ser que 65536 (2'*) adresses de la mémoire, les 64 Ko se trouvant sur la carte mére. Trés vite, le concepteur s'est apercu que sa “machine” manquait de place pour implanter des programmes devenant de plus en plus perfor- mants. L'évolution dans le domaine informatique s'effectue suivant une courbe ascension- nelle trés accentuée, par le fait du boum technologique mis au service du grand public. C'est ainsi que l'on trouve des cartes interfaces d'extension mémoire de toutes les tailles (64 Ko, 128 Ko, 512 Ko, etc.). Une question vient alors 4 lesprit: si le microprocesseur 6502 (ou le 65C02 de l’Apple /ic) ne peut adresser que 64 Ko, a quoi servent les 64 Ko de la mémoire —auxiliaire? Une deuxiéme question, plus perti- nente que la précédente pose le probléme du procédé devant étre mis en place pour atteindre cette mémoire auxiliaire. Le mécanisme est en fait trés sim- ple. Il suffit d'imaginer que les deux mémoires sont alignées l'une en face de l'autre et sépa- rées par une ligne fictive et ima- ginaire, comme deux rangées de maisons séparées par une rue. Pour passer d'une rangée de mai- sons 4 celle d’en face, il suffit de franchir la rue qui les sépare. Pour permettre au processeur de dialoguer soit avec la mémoire principale, soit avec la mémoire auxiliaire, il suffit d'actionner ce qu'on appelle un commutateur logique. Pour ceux qui pratiquent Apple {1 depuis un certain temps, ces commutateurs sont souvent appelés des “switches”. U'Apple II est pourvu, de par sa conception d'origine, de toute une série de commutateurs, dont les différents aspects seront abor- dés dans cet article. Ces commu- tateurs sont implantés dans la ROM (mémoire morte) et placés en paralléle sur la RAM (mémoire vive). Un commutateur logique permet de sélectionner ou commuter un endroit déterminé de |'espace mémoire (RAM — mémoire vive — ou ROM — mémoire morte). C'est ainsi que votre Apple Ile avec une carte 80 colonnes éten- due en place ou le /Ic, possédent 128 Ko de mémoire vive (RAM). La RAM se répartit en 64 Ko de mémoire principale et 64 Ko de mémoire auxiliaire. Chaque zone de cet espace peut étre program- mée par |'utilisateur averti soit en lecture, soit en écriture, ou encore en lecture/écriture, par le simple fait d'activer des commu- tateurs logiques. Ces différents modes sont sélectionnés en écri- vant ou en lisant a certaines adresses qui servent de point d'entrée aux commutateurs logiques. La plupart de ces commutateurs ont trois points d'entrées : 1. un pour les connecter ; 2. un autre pour les débrancher ; 3. un troisiéme pour lire |'état du commutateur. Ces commutateurs permettent de “switcher” (commuter) la mémoire principale ou la mémoire auxiliaire partir d'une interface qui pourra étre soit un (suite page 18). euseousnsnaennsesescessccesoansccenenunennassesesesssesesosnsnessnsseeeueesesessssescuseseeseesseseess TREMPLIN MICRO 7 programme Basic, soit un pro- gramme assembleur. Le fait d'écrire (par POKE en Basic, STA en binaire) ou de lire (par PEEK en Basic, LDA en binaire) dans cer- taines adresses mémoire, rensei- gne le systéme sur ce qu'il doit afficher @ |'écran et ot il doit lire ‘ou écrire les données qui lui sont nécessaires : mémoire principale et/ou mémoire auxiliaire. Lutilisation de ces commutateurs logiques est cependant réservée aux programmeurs avertis. Cer- tains logiciels du commerce ont été développés et concus pour ce genre de manipulation. Une mau- vaise utilisation ou un manque de pratique peut rendre |'exécution d'un programme aléatoire et méme lui faire perdre des données. Il existe deux types de commu- tateurs : 1. les commutateurs d'affichage ; 2. les commutateurs affectant la mémoire. Ces différents modes de commu- tation sont activés en lisant ou en écrivant & certaines adresses de la mémoire servant de point d'entrée aux commutateurs logi- ques. En temps normal, les com- mutateurs sont gérés par les ins- tructions et commandes 4 partir ‘dun programme implanté en mémoire centrale ou @ partir de la ROM résidente (AppleSoft ou Moniteur). En effet, certaines rou- tines internes de la mémoire morte par exemple, utilisent ces commutateurs pour leurs propres besoins. Les sous-programmes MLI de PRODOS, logés dans les 16 Ko de la mémoire haute, utilisent ce mode de commutation pendant l'exécution d'un programme, pour écrire ou lire des données soit dans la mémoire principale, soit dans la mémoire auxiliaire. Tableau des zones mémoire Texte 40 colonnes 1 $0400 ou 1024 $Q7FF ou 2047 Graphique basse résolution 2 $0800 ou 2048 $08FF ov 3071 Texte 80 colonnes 1 $0400 ov 1024 $O7FF ou 2047 Graphique haute résolution 1 $2000 ou 8192 $3FFF ou 16383 - 8Ko 2 $4000 ou 16384 SSFFF ou 24575 Graphique haute résolution - 16Ko 1 $2000 ov 8192 $3FFF ou 16383 Tableau des commutateurs d’affichage TEXT Ecran texte $cos1 - 16303 | on Ecran graphique $CO50 - 16304 | off Lecture de I'état de TEXT SCOIA - 16358 lire MIXED Texte au bas du graphique $cos3 - 16301 | on Graphique pleine page $CO52 - 16302 | off Lecture de MIXED $Cco1B - 16357 lire PAGE2 Affichage de la page 2 $co5s - 16299 | on Affichage de la page 1 $C054 - 16306 | off Lecture de PAGE2 $COIC 16356 lire HIRES Graphique haute résolution $CO57 - 16297 on Graphique basse résolution $CO56 - 16298 | off Lecture de HIRES $CO1D ~ 16255 lire BoCcoL Texte 80 colonnes scoop - 16371 | on écrire Texte 40 colonnes $COOC - 16372 | off écrire Lecture de 88COL $COIF = 16353 lire BOSTORE | Accés page 1 auxiliaire $coo1 - 16382 | on écrire Retour mémoire principale $co00 - 16384 | off écrire Lire l'état de 8USTORE $Co18 ~ 16360 lire " GUY-HACHETTE AU Th Tableau des commutateurs memoires , ‘ RAMRD Lecture mémoire auxi $coo3 - 16381 on écrire ' Lecture mémoire principale $COO2 ~ 16382 off écrire 5 Lire le commutateur RAMRD $Co13 - 16365 lire ‘ RAMWRT | Ecriture en mémoire AUX $coas - 16379 on i Ecriture en mémoire MAIN $COG4 ~ 16380 off : Lire le commutateur RAMWRT $CO14 ~ 16354 j ALTZP Commute pile, page @ AUX $caa9 = 16373 on écrire Commute pile, page @ MAIN $coos ~ 16374 off écrire ' Lire le commutateur ALTZP $CO16 ~ 16352 lire r BGSTORE | Accés page 1 AUX $coo) - 16383 on écrire 1 Pour utiliser RAMRD/RAMWRT $CcoGo ~ 16384 off écrire t Lire le commutateur 8STORE $CG18 - 16360 lire PAGE2 Accés mémoire AUX $COs5s - 16299 on Accés mémoire MAIN $CO54 = 16300 off Lire le commutateur PAGE2 $CO1C - 16356 lire HIRES Accés page 1 graphique AUX $CO57 ~ 16297 on Pour utiliser RAMRD/RAMWRT $CO56 - 16298 off Lire le commutateur HIRES $CO1D - 16355 lire AUX = Mémoire auxiligire — MAIN = Mémoire principale. Remarques MIXED et HIRES n'ont d’effet sur la visualisation que lorsque TEXT est “off”. La fonction PAGE? est diffé- rente si 8OSTORE est "on". Lors- que 80STORE est connecté, PAGE2 n‘a plus d'effet sur la visualisation, il permet au proces- seur d'adresser, soit la page 1 de la mémoire principale (MAIN), soit la page 1 de la mémoire auxi- liaire (AUX), Pour actionner PAGE2 et 80STORE, il est nécessaire de pas- ser par un programme, car Apple /I utilise ces commuta- teurs logiques lorsque celui-ci est en mode 80 colonnes. La page 1 texte de la mémoire principale (MAIN), a sa copie en mémoire auxiliaire (AUX) aux mémes adresses. Pour stocker des informations en page 1 AUX, il faut connecter 8GSTORE en écri- vant @ I'adresse $CQQ1 (-16383), puis actionner PAGE2 en écrivant ou en lisant @ I'adresse $C055 (- 16299). Les premiers caractéres qui apparaissent en colonnes impaires sont en mémoire princi- pale, les suivants, colonnes paires, sont en mémoire auxi- liaire aux mémes adresses. Les commutateurs d’accés aux pages d'écran ont priorité sur les commutateurs RAMRD et RAMWRT. La ROM AppleSoft est en paral- léle avec la Bank switched memory. Son activation est indé- pendante de la position des com- mutateurs (voir le tableau des commutateurs mémoires). En mode graphique haute résolu- tion 16 Ko (560 points horizon- taux), on visualise 40 paires de 14 points par ligne de graphique, les 7 premiers de chaque paire étant en mémoire auxiligire, les 7 sui- vants en mémoire principale. Ainsi les points 0 4 6, 14 4 20... 545 & 552 d'une méme ligne sont implantés en page 1 AUX, tandis que les points 7 4 13, 21 a 28... 553 & 560 d'une méme ligne sont implantés en page 1 MAIN. Pour placer des informations directement dans la page | haute résolution AUX, — branchez BOSTORE et HIRES, puis PAGE2. La haute résolution 8 Ko utilise la visualisation normale, 4 savoir la mémoire principale (HGR — adresses $2000 $3FFF ou HGR2 — adresses $4000 a $5FFF). Le texte 80 colonnes et la haute résolution 16 Ko utilisent 4 la fois la mémoire principale et la mémoire auxiliaire. Ce type de graphique désigne les cing modes de visualisation avec |'utilisation d'une carte couleur du type chat mauve éve. En mode d’affichage 80 colonnes, les caractéres en colonnes impaires sont inscrits en mémoire principale et ceux des colonnes paires en mémoire auxiliaire. Commutation de la Bankswitch sous ProDOs ~ 16 Ko du haut de la mémoire (RAM) Le fichier PRODOS, une fois la dis- quette systéme bootée, se loge dans la carte langage d'un Apple Il, ou en haut de la mémoire vive d'un Apple Ile ou Iic. Il occupe alors les 16 Ko du haut de la mémoire vive. Comme les adres- ses $DQG0-SFFFF ne comptabili- sent que 12 Ko, on pourrait se (suite page 20). aetna ladle allele lela E TREMPLIN MICRO Ww demander ot se logent les 4 Ko manquants. C'est la bank 2 qui est utilisée conjointement avec la bank 1 par simple commutation alternée des deux banks. L'action des commutateurs logiques per- | met, entre autres, deffectuer soit | une lecture, soit une écriture, soit | encore une lecture et écriture de l'espace mémoire du haut de la RAM. ROM: $D0G0-SFFFF * Bank 1 : $D000-$DFFF Bank 2 : $D000-$DFFF * (AppleSoft + Moniteur) Situation typique de la mémoire auxiliaire (64 Ko) RAM: $DQ00-$FFFF * Bank 1 : $D000-$DFFF* Bank 2 : $DG00-$DFFF* * (Disponible 4 I'utilisateur) Activation des commutateurs $D000-SDFFF Bank | avec 4 Ko $D0G0-SDFFF Bank 2 avec 4 Ko $EGQO-SFFFF Bank | et 2avec8 Ko Modes de commutation de la Memory Bank Commutateurs | Bank! | Bank2 | ROM 2 LDA $cosB R/W 2x LDA $co83 R/W 2x LDA $ca89 w R 2 x LDA $c@81 w R Légende : R/W = Lecture/écriture = Lecture W = Ecriture Adresses de controle : $C080 (- 16256) Sélectionne la RAM en lecture et commute la Bank 2. Protége la RAM contre |’écriture. $C081 (- 16255) Sélectionne la ROM en lecture et commute Ia Bank 2. Autorise l'écriture sur la RAM si la commutation est effectuée deux fois (Ex.: LDA $C081, LDA $C81). $C082 (- 16254) Sélectionne la ROM en lecture et commute la Bank 2. Protege la RAM contre I'écriture. $C083 (- 16253) Sélectionne la RAM en lecture et commute la Bank 2. Autorise |'écriture sur la RAM si la commutation est effectuée deux fois. $C088 (- 16248) Sélectionne la RAM en lecture et commute la Bank 1. Protége la RAM contre l'écriture. $C089 (- 16247) Sélectionne la ROM en lecture et commute la Bank 1. Autorise |'écriture sur la RAM si la commutation est effectuée deux fois. $COBA (- 16246) Sélectionne la ROM en lecture et commute la Bank 1. Protége contre l'écriture sur la RAM. $CO8B (- 16245) Sélectionne la RAM en lecture et commute la Bank 1. Autorise I'écriture sur la RAM si la commutation est effectuée deux fois. TRUCS et ASTUCES PROGRAMME : |< Boite aux idées (Tremplin Micro n°8) QUESTION : Comment imprimer les lignes dans lesquelles se trouve le mot cherche:?. REPONSE : En gjoutant ces 3 lignes au programme. Pour obtenir Iimpression, taper CTRL-I au lieu de l’option 2. 156 IM = @: IF R$ = CHR$ (9) THEN R$ = “2":IM = 1 541 IF IM THEN PRINT D$”PRE1”: PRINT : PRINT CHR$ (9)"96N": PRINT CHR$ (27)"E"; CHR$ (27)"L010": PRINT IF IM THEN PRINT : PRINT D$”PREG”: PRINT D$”PRE3": PRINT : GOTO 125 Attention ! Supprimer deux lignes de REM (190 et 200) pour que la longueur du programme ne dépasse pas 5500. 546 saeneseesesesensessecussezerseennaannnsseeeesesoReeenesseseeEeaEAsaeeeRAneseeeEEecesEeeEoesEseEEEEEES =— awe ad GUY-HACHETTE TRE Marcel COTTINI LE 65€816 Nous publions, dans ce numéro, la suite et la fin de notre étude sur le 65C816, microprocesseur qui équipe |’APPLE //GS. LES REGISTRES DU MICROPROCESSEUR 65C816 Différentes fonctions du 65C816 | Unite decontrole temps | (Timing Control Unit — TCU) Généralités Le circuit horloge maintient en ligne chaque instruc- Le 65C816 (ou 65C802) est un microprocesseur aux tion et lui attribue un certain temps évalué en cycles possibilités trés variées. C'est ainsi qu'il permet la machine. C'est ainsi que linstruction RTS (retour de gestion de regisires 16 bits tout en ayant la capacité Sous-programme) nécessite un temps de 6 cycles diadresser 16 Mo de mémoire vive (compteur ordi- pour arriver & terme. Pour chaque instruction, le nal sur 24 bits). Une configuration matérielle inté- facteur temps (TCU) est nul au départ, le code grant ce type de processeur permet une program- machine est recherché puis exécuté suivant un cer- mation plus rapide, tout en gardant l'accés aux pro- tain nombre de cycles temps. Un ou plusieurs cycles grammes existants pour le 6502. La sélection entre machine sont requis pour chaque instruction l'un ou l'autre mode (émulation ou native) s'effectue machine. Chaque transfert de données est lie d une par l'adressage du bit E du registre d'état. Cette part au décodage de l'instruction, puis 4 son exécu- opération est réalisée par |'instruction XCE, tion via un registre suivant une notion de temps échange du bit de retenue (C) et du bit d'émulation (cycle machine). (E). C'est en somme un excellent produit pour la gamme des 16 bits grand public. Le bus de données Unité arithmétique et logique est de 8 bits de large, tandis que les registres inter- (Arithmetic and Logic Unit — ALU) nes sont de 16 bits. Toutes les opérations arithmétiques et logiques sont traitées par l'intermédiaire d'un module interne du Description des fonctions du 65816 microprocesseur, d'une taille de 16 bits (ALU — 16 Instructions relatives aux registres et décodage. Les bits). Lors d’opérations additionnelles de données, instructions machine, suivant le mode d’adressage le module ALU calcule l'adresse effective pour les requis, sont traitées en codes machine, avant d'étre adressages des modes relatifs et indexés. Le résul- véhiculées vers l'entrée du microprocesseur. Plu- tat de cette opération sur ce type de données est sieurs instructions sont reliées entre elles et rangé soit G une adresse mémoire spécitiée au envoyées sur le bus de données par I'intermédiaire préalable, soit dans un registre interne du proces- du registre concerné. Cette instruction est alors seur. La retenue, Carry Flag, sera positionnée sui- décodée suivant une référence temps (horloge du vant le résultat de l'opération effectuée par le processeur) et une référence de procédure (circuits module ALU. Elle pourra étre soit négative ou posi- d'interruption du processeur). tive, soit déborder. (suite page 22) TREMPLIN MICRO 21 Registres internes du 65C816 Registres internes (Internal Registers) Ils se différencient du 6562 par leur nombre, leur taille et leur organisation. On peut scinder la struc- ture des registres en trois parties, chacune ayant une taille de 8 bits de large. La taille équivalente de chaque registre sera celle déterminée par le mode actuel (native : E = 0, ou émulation : E = 1). Le 65C816 comporte un registre supplémentaire par rapport au 6502 (Direct Register). Il est du format 16 bits. Deux registres annexes, Program Bank Regis- ter et Data Bank Register, autorisent respective- ment une extension du registre compteur ordinal (PC) et des registres d'index X et Y. Program Bank Register, associé au compteur ordinal (PC) permet alors de traiter une adresse mémoire sur 24 bits ($000000 4 $FFFFFF). Data Bank Register, associé aux registres 16 bits X ou Y, permet de pointer une zone mémoire sur 24 bits ($0000G0 4 $FFFFFF). Registres de programmation du 65€816 (ou 65802) 8 bits 8 bits 8 bits Data Bonk Reg. DBR Registre X High ‘i Registre X Low XH i | XL >= Registre Y High tei , Registre Y Low YH i YL 00 Pointour de pile i Pointeur de pile SH | SL Accumulate High I Accumulateur Low AH (8) I ALIA) Program Bonk Reg. || Compteur ordinal RE Compteur ordinal PRR | PCH PCL 00 Registre Direct di Registre Direct DH | DL (P) Registre d'état Détail du registre d'état P du microprocesseur : Status Register (P) 1/8 re | x [n[v[m[x[o]i]zfe 22 1 Toujours 41 siE = 1, B Break : Remise 4G de la pile aprés interruption si E=1. E Mode émulation : @ = Native ou 1 = Emulation. N_ Négative Bit du signe = I sirésultat est négatif. V_ Overflow = 1 si le résultat est celui Débordement attendy. M_ Mémory/Accumulator Select = 1 si commuté en mode 8 bits. Sélection de la mémoire oude A = 0 si commuté en mode 16 bits. X Index Reg. Select = 1sicommuté en 8 bits. Sélection du registe dindex = 0 si commuté en 16 bits. D_ Décimal Mode = 1 si commuté en mode Mode décimal décimal. 1 IRQ Disable Inhibition des interruptions = | si interruption inhibée, Z léro Résultat nul = Isile résultat est nul. C Carry = 1 si le résultat est celui Retenue attendu. Accumulateur (Accumulator —C(A + B)) Uaccumulateur est un registre & usage général uti- lisé pour effectuer des opérations arithmétiques ou logiques : charger (LDA), ou sauvegarder (STA) une donnée ou comme opérante (ROL, ROR, etc.). Mode native (E = @). Lorsque le bit M du registre d'état, sélection de la mémoire (Memory Select) est nul (M = Q), l'accumulateur travaille sur des don- nées de 16 bits de large. Mode émulation (E = 1). Lorsque le bit M du regis- tre d'état a comme valeur un (M = 1), l'accumula- teur travaille sur des données de 8 bits de large. Dans ce dernier cas, la partie poids fort de |'accumula- teur (Acc, High — B) sera sauvegardée momentané- ment en liaison avec une instruction interne du proces- seur (SWAP Accumulator — instruction SWA). En mode 8 bits (émulation — A) I’accumulateur est dénommé registre A. || est alors compatible avec le mode du 6562. En mode 16 bits (native — C), c'est sous registre C qu'on le retrouve, avec comme octet de poids faible (A — Acc. Low) et comme octet de poids fort (B — Acc. High). Registre page de données (Data Bank Register — DBR) Cest un registre annexe d'une taille de 8 bits, utilisé en association soit avec le registre d'index X (16 bits), soit avec le registre d'index Y (16 bits), pour GUY-HACHETTE oon TRE 1si elyi elui uti- ou une itre est on- gis- dla- ula- iné- res: est cle ‘est ctet de lisé (16 ‘our ome TTE adresser par multiplexage une page mémoire sur 24 bits. Dans ce cas, DBR contient l'octet de poids fort (8 bits) et les registres X ou Y les 16 bits les plus a droite (YH + YL pour le registre Y et XH + XL pour le registre X). U'adressage des 16 Mo de la mémoire vive (RAM) disponible se fait d'une maniére similaire au micro- processeur 8086, c'est-d-dire par fragmentation de la RAM en zones de données appelées "Bank" ou pages sur le 65C816. Chaque page (Bank) est for- mée d'un bloc de 64 Ko dont I'adresse partielle, codée sur 8 bits, se trouve dans le registre 8 bits Data Bank. Cette adresse partielle représente le poids fort de l'adresse complete sur 24 bits. En mode native (E = @), le registre de page de don- nées (DB) de 8 bits de large, mémorise l'adresse par défaut de la page (bank address) pour le transfert de la zone mémoire. L'adressage sur 24 bits se com- pose alors des 16 bits de l'adresse effective (index X ou Y) et des 8 bits du registre page de données (DBR). Le contenu du registre DB est multiplexé avec la valeur de la donnée se trouvant 4 une adresse mémoire et a donc la possibilité de gérer simultané- ment une donnée et |'adresse de ladite donnée. Cette provesse de Ia technique est réalisée durant la premiére phase du cycle de transfert de la don- née vers la mémoire centrale. Le registre page de données (Data Bank Register — DBR) est initialisé & la valeur zéro pendant la phase du Reset. Registre adressage direct (Direct Register — D) Le registre adressage direct 16 bits est pourvu d'une structure lui permettant d'adresser toutes les ins- tructions du processeur, en mode adressage direct, Uadressage effectif de la page zéro est réalisé en ajoutant le deuxiéme octet de |'instruction au regis- tre direct. Le registre direct est adressable soit en mode 8 bits (émulation — DL), soit en mode 16 bits (native — D). Cest un faux 24 bits dont les 8 bits les plus & gauche sont toujours positionnés a zéro. Les 16 bits les plus 4 droite forment deux groupes. Les 8 bits les plus a gauche font partie de l'octet de poids fort (DH), les 8 bits les plus droite représentant |'octet de poids faible (DL). Ce registre autorise un accés plus rapide @ la mémoire. C'est en somme une extension de la page zéro du 6502. La page zéro peut étre placée ot l'on veut avec les microprocesseurs 65C816 et 65C802. Le registre direct (D) est initialisé 4 la valeur zéro pendant la phase du Reset. Registres d'index X et Y (Index — X and Y) Le microprocesseur 65C816 intégre deux registres d'index (X et Y) dont le réle est double : une utilisa- tion générale et une utilisation comme index d'une TREMPLIN MICRO Sune euennemennosss senses eee e ees eeses ese Eas ee eeeEES ose eose sees EeE Pee soe eoeeeeseeneesansnaseecesEs adresse effective de la mémoire par exemple. Dans ce dernier cas plusieurs modes d'adressages indexés sont offerts au programmeur. Les registres d'index X et Y sont utilisés lors de l'exécution d'une instruction relative & un adressage indexé. Le microprocesseur recherche alors le code de |'ins- truction et |'adresse de base, puis modifie l’adresse initiale en lui additionnant la valeur de l'index du registre concerné (X ou Y). Uadressage indirect indexé comporte deux modes : l'adressage préindexé et |'adressage postindexé. Ils sont sélectionnés dans le mode native avec le bit E du registre d'état égal 4 zéro. Pour effectuer des opérations sur des adresses indexées sur 16 bits de large, il est nécessaire de positioner le bit X du tegistre d'état (Index Register Select) a la valeur zéro (X = @). Dans le cas d'un calcul sur une adresse partielle de 8 bits de large, le bit X du registre d'état devra avoir comme valeur un (X = 1). Le registre d'index X (X — Index Register X) est adressable soit en mode 8 bits (émulation — XL), soit en mode 16 bits (native — X). En mode 16 bits, il se compose d'un octet de poids fort (XH) et d'un octet de poids faible (XL). Le registre d'index Y (Y — Index Register Y) est adressable soit en mode 8 bits (émulation — YL), soit en mode 16 bits (native). II se compose d'un octet de poids fort (YH) et d'un octet de poids faible (YL). Registre d'état du processeur (Processor Status — P) Le registre d'état du microprocesseur intégre 8 bits destinés 4 renseigner le systéme (et le program- meur) sur diverses situations (Status) lors des opé- rations en cours. Ces différents bits sont des dra- peaux (Flags) de situation et de modes (status flag and mode flag). La retenue (C), le bit du signe (N), le bit de déborde- ment (V) et le bit du résultat nul (Z) sont des dra- peaux (flags) de situation servant a effectuer un report sur le module de I'unité arithmétique et logi- que (ALU) du processeur. Les drapeaux de situation effectuent un test de branchement pour la poursuite éventuelle de l'instruction en cours d’exécution (si la condition posée est remplie). Le bit du mode déci- mal (D), le bit d'inhibition de l'interruption (I), le bit de sélection de la mémoire/accumulateur (M) et le bit de sélection du registre d'index (X) sont des dra- peaux autorisant une sélection d'un mode déter- miné. Ces bits flags sont utilisés pour annoncer au microprocesseur un changement d'opération dans \'exécution d'un programme en cours. La sélection du mode émulation (E) et du Break (B) est accessible en positionnant certains bits du regis- tre d'état du processeur. Ce sont en somme des bits fictifs dont |'état est conditionné par la valeur d'un ou de plusieurs bits réels du registre d'état. (suite page 24) 23 Le processeur gére et modifie ces bits internes (E et B). Le mode émulation/native est sélectionné en permutant les bits de la retenue (C) et de |'émula- tion (E). Cette opération est effectuée grace @ une instruction machine (XCE) propre au microproces- seur (voir & cet effet la table de comparaison des différents mode (native : E = 0 ou émulation : E = 1)). Les bits M et X sont toujours positionnés 4 la valeur un (M/X = 1) en mode émulation (8 bits). Lorsqu’une interruption survient pendant le mode émulation, le bit B (Break flag) est sauvegardé sur la pile comme valeur du bit 4 (X) du registre d'état du microprocesseur. Registre page programme (Program Bank Register — PBR) Le registre page programme (Program Bank) est de 8 bits de large. I! contient I'adresse partielle (High Byte) lors de la recherche de chaque instruction au niveau d'un programme. Le registre PB mémorise Vadresse de E ligne oW I'instruction du programme en cours d'exécution a été recherchée. Uadresse de 24 bits de large consiste en une asso- ciation de l'adresse 16 bits du compteur ordinal (ins- truction en cours d’exécution) avec l'adresse de poids fort sur 8 bits contenue dans le registre page proamme (PBR). Le compteur ordinal (PC) contient jes 16 bits les plus 4 droite de l'adresse de I'instruc- tion en cours d'exécution. Le contenu du registre PB est multiplexé avec les données du programme et a donc la possibilité de gérer simultanément une ins- truction et l'adresse de la ligne ou I'instruction en cours d'exécution a été recherchée. Cette provesse de la technique est réalisée durant la premiére phase du cycle de lecture de la mémoire. C'est le compteur ordinal (PC) qui gére les instructions pas- 4-pas (cycles machine) pendant la lecture des don- nées du programme implanté en mémoire centrale. Le registre page de données (PB) est initialisé 4 la valeur zéro pendant la phase du Reset. Comme pour le registre page de données (DB), l'adressage des 16 Mo de la mémoire vive (RAM) disponible se fait par fragmentation. C'est ainsi qu'un programme implanté en mémoire centrale, est vu par le processeur comme des pages (Bank). Ce sont des blocs de 64 Ko dont I'adresse partielle (8 bits les plus @ gauche) est codée sur 8 bits. Cette adresse partielle représente le poids fort de l'adresse compléte. Le registre PB est complémen- taire au registre PC. Associé avec le registre PC comme octet de poids fort d'une adresse sur 24 bits, ils forment ensemble le pointeur de la ligne de I'ins- truction d'un programme en cours d’éxécution. Compteur ordinal (Program Counter — P¢) Le registre du compteur ordinal gére une adresse sur 16 bits de large au fur et 4 mesure de l'exécution des instructions du microprocesseur. II renseigne ce dernier, séquence par séquence, de l'adresse actuelle durant toute la phase d'exécution d'une ins- truction machine. Le registre est incrémenté au fur et & mesure lors de chaque cycle machine (Timing) de l'instruction en cours ou de l'opérante recher- chée au niveau de la mémoire (programme). Le compteur ordinal (PC) est adressable soit en mode 8 bits (émulation — PCL), soit en mode 16 bits (native — PC). Il se compose d'un octet de poids fort (PCH) et d'un octet de poids faible (PCL). Associé au registre PB, il permet de pointer une adresse sur 24 bits (adresses $000000 4 $FFFFFF) a l'intérieur d’un programme. Dans ce cas, l'association des deux registres forme une adresse sur trois octets. En mode native (E = @), le pointeur de pile est un registre de 16 bits de large et pointe la prochaine adresse disponible sauvegardée dons l'espace mémoire de la pile. A chaque fois qu'on empile, S est décrémenté et, a tout moment, $ pointe vers le prochain emplacement libre de la pile. Uopération empiler (Push) permet de placer un élé- ment au sommet de la pile. L'opération dépiler (Pull) consiste en un transfert du contenu du som- met de la pile vers le registre déclaré. Le pointeur de pile a deux fonctions essentielles : d'une part gérer des pointeurs pour mémoriser des adresses de retour d'un sous-programme (RTS ou GOSUB) ; d'autre part pointer vers une adresse aprés une interruption. Le pointeur de pile pointe simplement vers une adresse de retour de sous- programme ou suivant le niveau d’interruption ren- contré. Le registre pointeur de pile (S) est adressa- ble soit en mode 8 bits (émulation — SL), soit en mode 16 bits (native — $). C'est un faux 24 bits dont les 8 bits les plus & gauche sont toujours 4 zéro. Les 16 bits les plus 4 droite forment deux groupes de 8 bits. Les 8 bits les plus 4 gauche font partie de l'octet de poids fort (SH), les 8 bits les plus 4 droite repré- sentent l'octet de poids faible (SL). Registre pointeur de pile en mode native (E = 0) sits FIE/DIC/BIA/9{/8/7/6/5/4/3/2) 1/0 * x = x x * x * x ix S = Stack Pointer Les bits marqués par des x SH = Stack High Byte — sont disponibles comme bits SL = Stack Low Byte du pointeur de pile. GUY-HACHETTE so ceeeconnansnasuusssenaeeseeE Esse EeEeRoeseseascEssseeesEenC NEE TseRseseseReseEesNSEeReESaNeeNeEES- ons | EET En mode émulation (E = 1), l'octet de poids fort du pointeur de pile (SH) est toujours égal 4 1, ce qui le met au méme niveau que le processeur 6502 : 8 bits disponibles (bits 0-7) avec le bit 8 toujours a1. Registre pointeur de pile Bits en mode émulation (E = 1) = $= Stack Pointer SH = Stock High Byte SL = Stack Low Byte SH st Les bits marqués par des x sont disponibles comme bits Flelpol|c|Blal9 716]514]3] 211 | 0 du pointeur de pile, le bit 8 étant alors a | tandis que viviele | C les bits F 49 sont nuls. ue CODES OPERATIONS DU MICROPROCESSEUR 65C816 Symboles et différents modes d’adressage £ adressage immédiat (a) adressage absolu indirect (a,x) adressage absolu indexé indirect (d) adressage direct indirect (d),y adressage direct indirect indexé avec Y (d.x) adressage direct indexé indirect (rs),y adressage indirect indexé relativement 4 la pile a adressage absolu a,x adressage absolu indexé avec X ay adressage absolu indexé avec Y A opération effectuée sur l'accumulateur al adressage absolu long al,x adressage absolu indexé long d adressage direct dix adressage direct indexé avec X dy adressage direct indexé avec Y i adressage implicite r adressage relatif au compteur ordinal ns adressage relatif la pile rl adressage long relatif au compteur ordinal s adressage de la pile — empilement/dépilement xyo adressage "block bank” source vers “bank” de destination <d> adressage long direct indirect <d>y adressage long direct indirect indexé avec Y GG BRK implicite:i G6 ASL direct : d ou page zéro : 00 G1 ORA direct indexé avec le registre X : d,x 07 ORA direct indirect long :<d> G2 COP implicite:i G8 PHP la pile (empilement/dépilement) : s G3 ORA relatifalapile: r,s 09 ORA _ adressage immédiat : £ G4 TSB direct : dou page zéro : 00 QA ASL — accumulateur : A G5 ORA direct : dou page zéro : 60 OB PHD la pile (empilement/dépilement) : s seenanneeenecmmsneseeueaneosersnnEEseReeeseeoEeZsooeeeeaDoeseeensEnEsEEsAanseUsnauoEcenEsEEEETECeEES TREMPLIN MICRO 25 oc TSB GD ORA GE ASL 10 «~BPL 11 ORA 12 ORA 13° ORA 14 TRB 15 ORA 16 ASL 17. ORA 18 CLC 19° ORA 1A INC 1B = =TCS 1C TRB 1D ORA 1E ASL 1F ORA 26 «JSR 21 AND 22 0 ISL 23> AND 24 BIT 25 AND 26 ROL 27 AND 28 =PLP 29 AND 2A ROL 2B «PLD 2C BIT 2D AND 2E ROL 2F AND 36 «BMI 31 AND 32 AND 33. AND 34 BIT 35 AND 36 = ROL 37° AND 38 = SEC 39 AND 3A DEA 3B TSC 3C_ OBIT 3D AND 3— ROL 3F AND 40-—sORTI 41 EOR 42. WDC 43 EOR absolu : a absolu : a absolu : a relatif au compteur ordinal : r direct indirect indexé : (d),y direct indirect : (d) indirect indexé relativement la pile : (r,s), direct : d direct indexé avec X : d,x direct indexé avec X : d,x direct indirect long indexé :<d>y implicite : | absolu indexé avec Y: a,y accumulateur : A implicite : i absolu : a absolu indexé avec le registre X : a,x absolu indexé avec le registre X : a,x absolu long indexé avec X : al,x absolu : a direct indexé indirect : (d,x) absolu long : al relatif dla pile : r,s direct : d, ou page zéro : 00 direct : d, ou page zéro : 00 direct : d, ou page zéro : 00 direct indirect long :<d> la pile: s immédiat : £ accumulateur : A lapile:s absolu : a absolu : a absolu : a absolu long : al relatif au compteur ordinal : r direct indirect indexé : (d),y direct indirect : (d) indirect indexé relativement 4 la pile : (r.s),y direct indexé avec le registre X : d,x direct indexé avec le registre X : d,x direct indexé avec le registre X : d,x direct indirect long indexé :<d>y implicite : i absolu indexé avec le registre Y : a,y accumulateur : A implicite : i absolu indexé avec le registre X : a,x absolu indexé avec le registre X : a,x absolu indexé avec le registre X : a,x absolu long indexé avec le registre X : al,x lapile:s direct indexé indirect : (d,x) implicite : i (utilisation future avec le 65€832) relatif 4 la pile: r,s MVP EOR LSR EOR PHA EOR LSR PHK JMP EOR LSR EOR BVC EOR EOR EOR MVN EOR LSR EOR CLI EOR PHY TCD JMP. EOR LSR EOR RTS ADC PER ADC STZ ADC ROR ADC PLA ADC ROR RTL JMP ADC ROR ADC BVS ADC ADC ADC STZ ADC ROR ADC SEI block bank source vers banck de desintation (Move) : xya direct : d, ou page zéro : 06 direct : d, ou page zéro : 00 direct indirect long <d > lapile:s immeédiat : £ accumulateur : A lapile:s absolu : a absolu : a absolu : a absolu long : al relatif au compteur ordinal : r direct indirect indexé Y : (d),y direct indirect long :<d> indirect indexé relativement 4 la pile : (r,s),y block bank source vers bank des- tination (Move) : xya direct indexé avec X : d,x direct indexé avec X : d,x direct indirect long indexé : <d>,y implicite : i absolu indexé Y : a,y lapile: s implicite : i absolu long : al absolu indexé avec X : a,x absolu indexé avec X : a,x absolu long indexé avec X : al,x la pile: s direct indexé indirect : (d,x) lapile: s relatif ala pile: r,s direct : d, ou page zéro : 00 direct : d, ou page zéro : 00 direct : d, ou page zéro : 00 direct : indirect long :<d > lapile:s immédiat : £ accumulateur : A la pile: s absolu indirect : (a) absolu : a absolu : a absolu long : al relatif au compteur ordinal : r direct indirect indexé : (d),y direct : d indirect indexé relativement a la pile : (r,s),y direct indexé avec X : d,x direct indexé avec X : d,x lexé avec X : d,x direct indirect long indexé :<d>y implicite : i aan Guy-HACHETTE = TRE seuaneoeneesseora se ssosnossesesoeeses sess suns sassnescesessesssEaesEsoEsssSRaNsaANOANOnEeDEDeEeSSsoeeaeS 79 ADC absolu indexé avec Y : a,y BG BCS ___relatif au compteur ordinal : r 7A PLY lapile:s Bl LDA direct indirect indexé avec Y : (d),y 7B TDC _ implicite : i B2 LDA | direct indirect : (d) 7C JMP absolu indexé indirect : (a,x) B3 LDA __ indirect indexé relotivement @ la pile : (r.s),y 7D ADC absolu indexé avec X : a,x B4 LDY — direct indexé avec X : d,x JE ROR absolu indexé avec X : a,x B5 LDA direct indexé avec X : d,x 7F ADC absolu long indexé avec X : al,x B6 LDX direct indexé avec Y: d,y 806 BRA relatif au compteur ordinal : r B7 LDA direct indirect long indexé avec Y :<d>y 81 STA direct indexé indirect : (d,x) BB CLV __implicite : i 82 BRL relatif au compteur ordinal, long : rl B9 LDA absolu indexé avec Y: a,y 83 STA relatifalapile: r,s BA TSX _ implicite :i 84 STY direct: d, ou page zéro : 00 BB TYX__ implicite :i 85 STA direct: d, ou page zéro : 00 BC LDY — absolu indexé avec X : a,x 86 STX direct: d, ov page zéro : 00 BD LDA _ absolu indexé avec X : a,x 87 STA _ direct indirect long :<d> BE LDX absolu indexé avec Y:a,y 88 DEY _ implicite : i BF LDA absolu long indexé avec X : al,x 89 BIT —immédiat : £ CQ CPY — immédiat : £ 8A TXA _ implicite : i Cl CMP __ direct indexé indirect : (d,x) 8B PHB lapile:s C2. REP —immédiat : £ 8C STY absolu:a C3. CMP — relatifalapile: r,s 8D STA absolu:a C4 CPY — direct: d, ou page zéro : 00 8E STX absolu:a C5 CMP direct: d, ou page zéro : 00 8F STA absolu long: al C6 DEC — direct: d, ou page zéro : 00 99 BCC relatif au compteur ordinal : r C7 CMP direct indirect long:<d> 91 STA _— direct indirect indexé avec Y : (d),y C8 = INY __ implicite : i 92 STA direct indirect : (d) C9 CMP _— immédiat: £ 93 STA _ indirect indexé relativement a la pile : (r,s),y CA DEX _ implicite : i 94 STY — direct indexé avec X : d,x CB WAI __ implicite : i 95 STA direct indexé avec X : d,x CC CPY — absolu : a 96 STX direct indexé avec Y:d,y CD CMP absolu:a 97 STA direct indirect indexé avec Y : (d),y CE DEC absolu:a 98 TYA _ implicite : i CF CMP absolu long: al 99 STA absolu indexé avec Y : a,y DG BNE _ relatif au compteur ordinal : r 9A XS __ implicite:i D1 CMP __ direct indirect indexé avec Y : (d),y 9B TXY — implicite:i D2 CMP _ direct indirect : (d) 9C STZ absolu:a D3 CMP __ indirect indexé relativement 4 lo pile : (r.s),y 9D STA _ absolu indexé avec X : a,x D4 PEI lapile: s 9— STZ absolu indexé avec X : a,x D5 CMP direct indexé avec X : d,x 9F STA absolu long indexé avec X : al,x D6 DEC direct indexé avec X : d,x AQ LDY — immédiat : £ D7 CMP direct indirect long indexé avec Y <d>y Al LDA | direct indexé indriect : (d,x) D8 CLD __ implicite:i A2 LDX __ immédiat: £ D9 CMP absolu indexé avec Y: a,y A3 LDA relatifalapile: r,s DA PHX lapile:s A4 LDY — direct: d, ou page zéro : 00 DB STP ___ implicite : i AS LDA direct: d, ou page zéro : 00 DC JML — absolu indirect : (a) A6é LDX direct: d, ou page zéro : 00 DD CMP _ absolu indexé avec X : a,x A7 LDA. direct indirect long :<d> DE DEC _ absolu indexé avec X : a,x A8 TAY _ implicite: i DF CMP absolu long indexé avec X : al,x AQ LDA _ immédiat : £ —G CPX — immédiat: £ AA TAX _ implicite : i 61 SEC direct indexé indirect : (d,x) AB PLB _iapile:s —2 SEP immédiat : £ AC LDY absolu:a —3 SBC __ relatifalapile:r,s AD LDA absolu: a —4 CPX direct: d, ou page zéro : 00 AE LDX absolu:a —5 SEC direct: d, ou page zéro : 00 AF LDA _ absolu long: al —6 INC direct: d, ou page zéro : 60 TREMPLIN MICRO 27 ———. E7 SBC direct indirect long :<d> F4 PEA lapile:s | E8 INX__ implicite : i F5 SEC direct indexé avec X : (d),x E9 SEC _ immédiat : £ F6 INC direct indexé avec X : (d),x EA NOP implicite : i F7 SBC direct indirect long indexé avec Y :<d>y EB XBA__implicite: i F8 SED _ implicite:i EC CPX absolu:a F9 SEC _ absolu indexé avec Y : a,y ED SEC absolu:a FA PLX lapile:s EE INC absolu:a FB XCE ___implicite : i EF SBC _ absolu long: al FC JSR absolu indexé indirect : (a,x) FG BEQ relatif au compteur ordinal ; r FD SBC __ absolu indexé avec X : a,x Fl SEC _— direct indirect indexé avec Y : (d),y FE INC absolu indexé avec X : a,x F2 SBC direct indirect : (d) FF SBC _ absolu long indexé avec X : F3 SBC __ indirect indexé relativement a la pile : (r,s),y ADRESSAGE SOMMAIRE DU 65C816 Modes c’adressage 6502 65cC816 Cycles Bytes Cycles Bytes 1. Immédiat 2 2 2(3) 2 (3) 2. Absolu 4 (5) 3 4(3 +5) 3 3. | Absolu long vs _ 5 (3) 4 4. Direct 3 (5) 2 3(3+4+5) 2 5. Accumulateur 2 1 2 1 C 6. Implicite 2 1 2 1 - 7. Direct indirect indexé 5 (1) 2 5(1+344) 2 8. Direct indirect indexé long a se 6(3 + 4) 2 9. Direct indexé indirect 6 2 6(3 + 4) 2 19.| Direct indexé avec X 4(5) 2 4(3+4+5) 2 MW. Direct indexé avec Y 4 2 4(3 +4) 2 12. Absolu indexé avec X 4(1 +5) 3 4(1+34+5) 3 13. Absolu long indexé = ae 5 (3) 4 4, Absolu indexé avec Y 4(1) 3 4(1 +3) 3 1s. Relatif 2(1 + 2) 2 2 (2) 2 16.| Relatif long aes = 3(2) 3 17. Absolu indirect (JUMP) 5 3 5 3 18. Direct indirect = = 5(3 + 4) 2 19, Direct indirect long = ee 6(3 + 4) 2 20. Absolu indexé indirect i -_ 6 3 21. Pile 3-7 1-3 38 1-4 22. Relatif 4 la pile = = 4 (3) 2 23. Indirect indexé relativement 4 la pile —_ -—; 7 (3) 2 24.| Déplacement d'une page de données (X,Y,C) — source/destination/longueur faa = 7 3 Légende des indices du tableau : 1 Ajouter 1 cycle si une limite de page mémoire est dépassée (bytes ou expression désignant une adresse). 2 Ajouter | cycle si le branchement est réalisé. 3 Ajouter 1 cycle et 1 byte pour l’adressage immédiat. Régle valable pour des opérations réalisées sur 16 bits avec M = G et X = G (Met X = bits du registre d'état). 4 Ajouter | cycle si le résultat est différent de zéro : Registre direct, octet de faible poids (DL) différent de zéro. 5 Ajouter 2 cycles si le bit M = 1 et 3 cycles si le bit M = @ (M = bit du registre d'état). Régle valable pour les routines utilisant les fonctions Read/Modify/Write. . oe 28 GUY-HACHETTE TR UTILITAIRE | Frooos | sours | HORLOGE Francois GALLET Voici un utilitaire dont une premiére approche avait été réalisée par Claude AUBRY dans le numéro 5 de Tremplin Micro et qui, j‘en suis cer- tain, rendra un service inestimable aux heureux possesseurs de |'Apple lic ou de |'Apple Ile avec 65C02 et carte souris. Que fait donc ce programme ? ll vous permettra d’avoir en permanence la date et l'heure a |'écran (en 80 colonnes), ainsi que la possibilité d’horodater vos ceuvres. De plus, vous pourrez 4 tout moment, modifier ces paramétres, en utili- sant simplement l'Ampersand. Comment fonctionne-t-il ? Ce programme, utilisable sous ProDOS, prend environ 1,4 K de mémoire et se loge 4 partir de l'adresse $9000, juste sous les buffers CAT.E/S débutant en $9600. HIMEM a été repositionné & $9000, ce qui place les buffers d'ouverture de fichiers sous HORLOGE (en protégeant ainsi la routine et en vous permettant de disposer d’environ 60 octets pour y apporter d’éventuel- les modifications). U'horloge proprement dite débute 4 l’adresse $9390 par un SEI, qui inhibe toute nouvelle interruption de type IRQ, ceci de maniére a pouvoir initaliser le systeme. On teste bien sor la présence de la carte SOURIS, et on place ‘adresse de saut effective en $3FE-$3FF, adresse qui sera celle du comptage et du trai- tement, débutant 4 $941D. Pour vous permettre d'apprécier cet utilitaire, voici un petit exercice : * Tapez RUN HORLOGE.BAS puis (Return). * Tapez & puis (Return) Un cadre doit apparaitre au milieu de I’écran. Indiquez la date puis répondez par : * (Non, encasd'erreur. © (O)ui, pour continuer. TREMPLIN MICRO Enfin, si vous travaillez relativement tard et qu'un jour nouveau vous surprenne, vous n‘aurez pas 4 vous inquiéter du changement de date, car celui-ci se fera automatiquement, méme s'il faut pour cela changer d’année. Ainsi, vos fichiers seront correctement horodatés. Dans le cas d'une réponse affirmative, la date s‘inscrit en haut 4 gauche, dans le cadre prévu 4 cet effet. Puis, la mention Mise a l'heure de Vhorloge apparait. Réagissez de la méme facgon que précédemment, mais en indiquant l'heure actuelle, puis répondez 4 la question : Etes-vous d'accord ? Si vous tapez (O)ui, I'heure se met @ jour, le cadre disparait et vous retrouvez |'écran tel qu'il était avant cet exercice, 4 la différence que vous disposez de la date courante et d'une horloge. Si vous tapez (N)on, le cadre reste, mais vous retournez 4 la mention concernant la date. Le fait de taper sur (FLECHE-BASSE) vous permet de revenir 4 la partie Mise 4 I'heure de I'hor- loge. Dans tous les cas, vous pouvez abandon- ner en tapant sur la touche Esc. Deuxiéme exercice : * Faites CATALOG * Mettez la date et l'heure 4 jour, par exemple : JJ/MM//AA ——» 31/12/85 HH:MMSS ——» 18:30 00 (Suite page 30) 29 seneeussseseneseseseseeeeoessesesseeeE sso se seeecomEToeTecereeTsEeosUessoseNEEesosSSEsoeTEsoEsesoeNeEoee Le cadre a occulté une partie de I’écran, mais * Si vous déplacez HIMEM, il faut qu'il soit vous retrouverez ce dernier dés que vous inférieur a l'adresse $9000, car c'est 14 que aurez terminé la mise 4 jour. se loge HORLOGE. © Tapez ce programme Basic : * HORLOGE na pas de calendrier perpétuel et 10 REM «** NUL «e« donc, ne gére pas le 29 février. * Faites SAVE NUL, puis CATALOG. * Si vous exécutez un programme en page Que constatez-vous ? texte, assurez-vous de placer des tabula- Votre programme est maintenant horodaté. tions de ligne supérieures 4 2. Vous remarquez une date identique dans les * N’essayez pas d'exécuter un programme uti- deux rubriques CREATION et MODIFICATION. lisant les pages graphiques, mais rien ne Ceci est di au fait que votre programme vient vous empéche de l'écrire. Si vous voulez d'étre créé. l'horodater, faites la séquence suivante : couche-tard. Ne chargez pas HORLOGE. - Dernier exercice pour les — Ecrivez et testez votre programme, puis * Faites & sauvegardez-le. * Modifiez seulement l'heure en mettant — Chargez HORLOGE par RUN HOR- 23:59 50 LOGE.BAS et mettez a jour la date et Dés que l'heure atteint 24:00 00, elle se remet 4 I'heure. zéro (RAZ), et — 6 joie ! — la date passe du — Rechargez votre programme. 31/12/85 au 01/01/86. Essayez de retaire SAVE — Faites DELETE programme (permet NUL puis CATALOG. Que constatez-vous ? | d'effacer le SANS DATE dans la rubrique Voila | vous savez tout. Rien ne vous empé- CREATION). chera, pour vos propres besoins, d’apporter — Sauvegardez & nouveau votre pro- une touche personnelle 4 ce programme. Sree: J'allais oublier : il existe quelques restrictions Aprés ces quelques remarques, je n‘ai plus 4 l'emploi de cet utilitaire : qu'une chose 4 vous souhaiter : bon travail ! © Un Reset le perturbera définitivement. Si cela arrive, faites PRE3, sauvegardez votre programme s'il y en a un, tapez RUN HOR- i i P.S. : Ce programme est protégé contre toute entrée patente puis rechargez le fruit de vos as pepscrsstony es 95/03/06 ew OUHIAMORS: 24/24/86 ou encore 33/00/86 voire 31/11/86, ou une * Si vous voulez effacer |'écran, faites HOME heure du type 25:00 00 ov 12:60 00 ov 12:00 60 etc ou la séquence Esc Shift-4, et non pas PRE3. = HORLOGE.BAS 10 REM *** HORLOGE.BAS *** 20 D$ = CHR$ (4) : REMCTRL-D 30 POKE 1014,132: POKE 115,144: REM $3FE-3FF ——» Saut en $9084 40 PRINT D$ ; "BLOAD HORLOGE.C” 50 CALL 37776 60 HOME: PRINT TAB (2); "Date "; TAB (9) ; “Aucune” ; TAB (61) ; “Horloge 70 PRINT CHR$ (27) : INVERSE : FOR C=@ TO 79 : PRINT CHR$ (76) ; : NEXT 80 VTAB1: HTAB 1 : PRINT CHR$ (95) ; : HTAB 18 : PRINT CHR$ (90) ; : HTAB 59 : PRINT CHR$ (90) ; : HTAB 80 : PRINT CHR$ (90) : NORMAL : PRINT CHR$ (24) 90 POKE 34,2: VTAB2: HTAB 1: NEW 20 GUY-HACHETTE snem ase ba Atami nden TRE. FOGG: bi: 7020: 7030: 7040: 7058: 9058: 9876: 9088: 7098: PGAG: 9GBa: 9OCa: 9GD6: GEG: FOF: F100: PIIG: 9120: 7130: 9140: 9150: 91568: 9170: 9180: 9198: FLAG: PiBG: F1CO: PLDG: PLEO: PIFO: 9206: 9216: 9220: 9236: 9248: 9250: 9260: 9270: 9280: 9290: 9206: 92B6: 92C8: 92D8: 92E6: 92FO: 9308: 9316: 9320: 9330: 9346: Oemaoacn: F7T0O= Le programme source se trouve sur la disquette de Tremplin Micro n°12. cD ES cD FS 66 EF CE Ba 1£ 8s 11 24 92 ca Fa 98 a? 24 FF 20 98 ec FF 94 99 85 ar 85 85 Ay 37 23 84 a5 37 57 FD 85 ec BA 68 cy FA ce ce ag 86 45 4E 69 BF F3 Eq @13E cp BEF EF E1BA Aa AG AG = AFDE FZ AD FS $042 AS CF AF F834 BG BG AG (7877 16 1F 1F 5682 93 a9 40 «~DDFF 85 43 28 «A474 ay 18 85 F24Aa 32 A? OC = —FPABL DB 2@ 6D 0892 @1 30 19 8569 AD 74 96 3E4E 58 4c as) = (7 8BF os 85.24 C83F ag a9 2a FB7D 3A DB AG = =BCDA 1C A@ 9@ «83146 93 AD 76 «7 98F ce 3c 10) «= 9885 78 20 3A) «2375 a9 Ba 99 =6DF7E @5 a? AG OOF 6B 3D a9 43 «4ES6S 44.85°-3D 7475 FC A? 81 = =BSFC FD AY 4C 3FBS 20 28 92 «~—B31é 85 19 Ay = 7ABD 22 48 A5 SE? Ad 1F C8 D3FD 85 22 68 C38A 85 1C Aa «= FSEE 85 1£ 26 4 6SFO 19 20 Fe 8788 FO AS 1D ADS AGB Bo AR DIES ec FD ce) = EBC 07 7A FA 1AS8 4C 93 91 A246 Fo FD cg 7204 06 88 BS —B24F 64 98 C8 LDF 1B 84 24 FCEF FC A2 35 C408 68 68 4c 480C 91 BF 26 11F6 AD 91 BF F49F BF 8D 9@ =E873 ce es pe) = S218 68 A? 88 SAC? (SUITE ET FIN PAGE 32) TREMPLIN MICRO 31 8D 76 94 A2 BA 18 AD 76 94 79 64 99 BD 76 98 CA 2704 D@ F4 CS 79 64 98 28 88 8S 88 8D 76 94 68 AY 28 3CDD 85 42 85 3C AY @4 85 3D AP DB 85 3E AP O7 85 3F BCA7 60 AP 28 85 42 85 3C AP O4 85 43 AP DG 85 3E 4H 34CA 78 26 CS 93 AF 1D A2 94 BD FE G3 8E FF 83 AB 19 46BCS é F287 4658 29EC 67 CA 30 20 AB GC B1 46 C9 26 DO F3 AG FB B1 a6 8882 C? Dé DB EB AS @7 8D C4 53 SD CO 93 BA BA GA BA = 84F2 8D C1 #3 60 20 5@ FC 20 3A FF AS BC 85 25 20 24 B2B1 FC A? 14 85 24 A OC AD 95 20 3A DB AP BC 85 25 Baza 26 24 FC AP 3A 85 24 20 OC FD 4C 88 C4 78 48 DA ASAI 54 Aa 13 20 AC 73 EE 85 95 AD 85 95 C9 3B DB 48° 6c57 A? 66 8D 85 95 A2 47 FE 94 95 BD 94 95 CS BA 9G) EAID 19 AY BA FD 94 95 CA FE 94 95 BD 94 95 C9 BS DB B4SE 9 A BB 9D 94 95 CA CA 19 DD AD 94 95 C9 B2 DB BicA 17 AD 95 95 CS B4 DG 10 AB G7 BF 8B 95 99 94 95 EBD 88 CO 66 18 FS 20 DF 94 42 63 AB G7 AD 54 CB 20 3AeD B8 94 88 AD 55 CG 20 BB 94 88 CA 14 EF AD 54 CH E314 AG 66 BS 94 95 49 BB 99 86 95 C8 CO G5 DA FZ AQ GEIF 83 20 BF 94 AD 93 95 8D 92 BF 20 BF 94 AD 93 95 coa7t 8D 93 BF 7A FA 68 58 46 BY 94 95 9D 23 64 68 AP SFO2 9@ 8D 93 95 AZ BA 18 AD 93 95 79 86 95 8D 93 95 B297 CA D@ F4 C8 79 86 95 88 88 88 B88 8D 93 95 66 AG ASBF 07 BY 6D 96 49 BB 99 54 94 88 16 FS AB G3 26 4E aaeEt 73 AC 76 96 BP 77 98 48 AG 6 26 4E 93 EE 76 90 7EE2 68 38 ED 76 94 36 43 4C 44 95 AB 43 26 4E 93 EE 3F7D 76 98 AD 76 9G CP BD 16 83 40 3A 95 AB 6 26 4E cCiD1 7520: 93 EE 76 90 AD 76 96 C9 44 34 65 AP BO BD 76 90 B2DEs 7530: AB’ O7 26 6C 95 AS 1 BD 76 94 AB B4 20 6C 95 AP 7273 7540: 61 8D 76 94 AB 81 26 SC 95 24 32 93 AP BO 20 24 F428 755@: FC AP G8 85 24 AP 6D AB 9G 26 3A DB 20 63 93 AP F430 7560: 17 26 24 FC AP B1 85 24 26 FG FD 66 AZ 68 AD 76 BcDC 7570: 9@ 38 EP BA 34 63 ES 18 FS 19 69 BA 99 64 90 88 7D7E 7580: 84 99 64 94 60 86 BE BA AG BG BG BG BG BA BG BA >sA51 Lt 7590: AG BG BA BG BG BG BA BB BG AG BG BA DB E1 F3 AB AZEE — 75AG: E4 ES AG ES E1 F2 F4 ES AB D3 EF FS F2 E9 FZ AB SSBD 9586: AD AD BE A’ D2 ES E4 FB ED Ei F2 F2 E1 E7 ES AG 954D 75CO: Al 88 CAL Pour terminer : BSAVE HORLOGE.C,A$9000,L$5C2 ic (SUITE ET FIN DE LA PAGE 31) Ne soyez pas en retard d'une génération... INITIEZ-VOUS AU LANGAGE MACHINE et offrez-vous les deux éditions de TREMPLIN MICRO : ° Le 6562 et le 65C@2 PAS & PAS © CLINS D'CEIL AU 6502 DE L'APPLE (voir bulletin de commande) 32 oon GUY-HACHETTE TRE 7 Dos ProDOs Guy HACHETTE Si vous avez déja essayé de concevoir vos propres caractéres graphi- ques, vous avez pu constater qu'il s‘agit d'une ceuvre de longue haleine — certes captivante, mais non moins fastidieuse. C'est pour vous que j'ai mis au point cette éniéme version d'un utilitaire de création de caracté- res. Son utilisation est simple, mais avant d’en arriver la, je vous pro- pose de revenir sur quelques notions préliminaires indispensables. La représentation d’un caractere Chargez un set (ou police) classique de caractéres ASCII a GO) OPE VIEL | Ste Todreese $4006 (on pest le trouver sur les disquettes TOOL KIT, 0} G/1|@0/a\a/ 1) a] $22 mais aussi sur bon nombre de disquettes francaises et américai- nes... et vous en avez un exemple plus loin). Tapez CALL - 151, GO} GO} 1] GO] a} o/ 1| a) $22 puis 4110.4117 et l'indispensable RETURN. Votre écran vous ren- GO} G/G}1/1]1]1/G] SIE verra probablement la ligne suivante : 4110 - 1E 22 22 1E 22 22 1E 09 G9} G| 1} G/G/0/1| a) $22 Ce sont les huit octets capables d’afficher un B en mode graphi- G} 0/1} a0\/G/0]1/ a] $22 que. En les représentant sous leur forme binaire, vous obtenez le dessin matérialisé ci-contre. Il s'agit bien d'un B... mais Oo] OO 111/71] 1] oO] SIE regardé dans une glace. Contrariant non ? D’ou la raison core d'un utilitaire qui vous autorisera 4 tracer normalement chacun | 9] G} O} GG} ola} a} $o9 de vos araciores ! _ Le programme travaille pour vous ! UNEMATRICE? x 8 Vous allez vous contenter d'une grille de 7 Ololololo cases de large (on négligera le 8° bit, réservé 4 la couleur, et qui sera automatiquement mis 4 @) sur 8 de haut (8 lente) o|Oo octets). A I’écran, le tracé sera matérialisé par des O majuscules et les olo olo blancs par des accents circonflexes. Compatibilité oblige : je n’ai fait que quelques clins d’ceil au langage machine et je n’ai pas utilisé les loukeonronrenre) caractéres souris disponibles sur les derniéres machines, du moins olo olo dans cette version (un programme plus élaboré figurera dans ROUTI- NES LM pour 65C02 et 6502, ouvrage 4 paraitre au début de janvier). o|Oo o/|o CARACTERES POUR LACOULEUR Si vous désirez créer une police (oR Tonren rene) capable de donner de bons résultats sur un

Showing the first 100000 of 194204 characters.

mp.ls