Skip to main content

tremplin micro newsletter issue 08

  • PublicationApple Periodicals
  • Pages66
  • Sourcetremplin_micro_newsletter_issue_08.pdf
← Magazines tremplin micro newsletter issue 08
/ 66
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
N°@ . Bimestrie! - Deuxiame année 3 Mal - 2 Juillet 1986 maro-ne- 33 F Editiors JIBENA ‘Guy: HACHETTE Lo Petite Motte — Senillé 86100 CHATELLERAULT. Téléphone : 49-93-66-66 Joelle (mame numéro) Plus loin avec votre Apple L parait — ce sont les stotistiques qui le prétendent — que des tas dordinateurs familioux font une fin peu glorieuse dans les placards, 00 ils voisinent avec d'autres gadgets plus ou moins cofteux. Cela ne me surprend pos outre mesure : comment employer utile- ment ces petites "merveilles” berate on a son content de jeux du style “envohisseurs”... et quand les possibilités de programmation sont limi- tées par une notoire insuffisance de la mémoire, ov encore por !a lenteur de lo lecture-écriture sur cassette (souvent aléatoire par-dessus le marché) ? Votre Apple — dont les premiéres versions seraient ossurément considérées comme des micros familicux — figure heureusement dans une autre catégo- tie, celle de I' informatique Personnelle. Ce qui ne |'empéche pas d’avaler, si vous le lui demandez, les logiciels de jeux. Qui peut le plus peut le moins. Si son vieux 6502 fait aujourd'hui figure d'ancétre, il reste — y compris dans sa nouvelle version de 65C@2 — I'un des microprocesseurs les plus faciles 4 pro- mer, Les différences de rapidité que l'on note d'un Basic & un autre, se révélent beaucoup plus difficiles 4 évaluer (méme si elles existent) quand elles mettent en jeu des routines en langage machine. On accomplit, notamment en matiére d’atfichage, de remorquables perfor- mances si l’on choisit de s‘adresser directement au microprocesseur, dans le langoge qu’il connait le mieux. Ce n'est peut-étre pas une méthode trés conviviale, mais c'est indiscutable- ment efficace... pour la grande satistaction du programmeur. Je n’en suis que plus 4 I'sise pour répondre par un oui sans aucune restriction & la question que nous posent des centaines de Lectrices et de Lecteurs ; "Faut-il encore apprendre 4 programmer en assembleur alors que les tétes pensantes de chez Apple nous annoncent des machines copables de nous obéir au doigt. dleeil,.. et dla parole ?”, Oui, le jeu — car c'est bien d'un jeu qu'il s‘agit — en vaut Io chondelle. Ne lais- sons pos l'avenir de |'intormatique individuelle aux mains d'une poignée d'ini- tiés. Nous les aimons bien, et nous apprécions comme il convient les excel- lents logiciels qu'ils nous mijotent, mois de grace, qu’ils permettent & nos tes cerveoux de fréquenter, au moins pour s‘amuser, les sentiers non bonalisés dans lesquels ils évoluent — souvent porce qu'ils disposent de docu- mentations plus complétes que les nétres — en terrains connus, Oui, plus loin avec votre Apple, pour le ploisir | GUY-HACHETTE, Sommaire 8 © Variables dimensionnées ............, * Ecran-damier... ou les énormes possibi- lités du longage machine ............. 13 * AND.DEMO ........ Festintetaseeune iA? © MIROIR Toutes les lignes de I'écran inversées en un clin dail. sanihehs Reiss eomaasay: 19 © TEEEN BAS) <i s3sce.etvecesin ssn 20 © VBUMEM craeneenee er ty! Portree . 30 * MIXAGE— Page 1 plus page 2 Comment méler vos pages graphiques ? ' Tema cancsot an mbeenerea Neuvantedoyin 3 LA BOITE AUX IDEES ® Potite base de données ................... 7 ®@ Bloc-notes ou pense-béte ...............,- = CATALOGUE par Guy DESENFANT ... 34 TRANSLIST par Dominique LUGAT Ou comment créer un fichier source 3 partir d'une simple routine en langage machine... 23 APP: TION * Organisation d'un tournol Une routine qui pourra aider certains organi- sateurs 4 mettre au point leur calendrier ... 37 DIMDEL par Yvan KOENIG Ou comment changer la dimension d'un tableau en cours de programme ....,.. ha MT UTILITAIRE — 65CO2 et IMAGEWRITER 1!|] ® HISTO, TEXT Vos graphiques en mode "Text" ..... 4] A CONNAITRE * Codes ASCII, HEXA et BINAIRES .. 61 —62 MASTERMIND par Michel DEVAUX Une version pour Apple I/.... 10 DES TRUCS ® Pour vous souvenir de la signification des mnémoniques (LDA, STA, etc.) ... 7 ® Quelques idées de LABELS ........-. m4 LISEZ AUSS} : * $DB3A (STROUT) et $FDED (COUT) Pi ley e Re TOC eo 7 © Bite wavele dian vicweseriey awe 16 * Apropos de BPL............... 20 * Votre bibliothéque informatique . 29—40 (AOS a Gearon acernatine mane’ 53—56 * Questions — Réponses ......... 46 — Contrdle-X — Guillemots — Les 4 lignes de texte on HGR? — Virgule et DATA — CALL — 151 * Rappel sur les tableaux en Apple- SOUT Pact lnrein piss tainieineieeie 48 * Chasseurs de bogues 54 — Miss Mouse et la Scribo — Caleuls imprécis — Catalogue thématique * Le courrier des lecteurs -...... 3 — Compatibilité le — Et la Scribe ? ae, 58 — Tabulations W 59 — CAO en 30 59 — Et Seikosha 59 — Toujours imageWriter 60 * Mésaventure (lettre d'un lecteur mécontent) . . 60 * Votre fiche n°8 ..........4..45- 6) —62 * Votre bulletin de commande et COPOMANDE so o.c40 pee 63 TREMAPLIN MICRO bo numéco 9 parattra le 3 juillet, GUY-HACHETTE LA BOITE aux idées * Petite base de données * Bloc-notes ou pense-béte Vous n’aurez que l’embarras du choix Seba vous priver plus longtemps du plaisir de mémoriser — en vrac — les plus farfelues de vos élucubrations ? LA BOITE AUX IDEES est la pour vous servir, et d'une maniére on ne peut plus simple, avec : — BOITE-BAS, programme en Basic BOITE-BAS — fonctionne sur tout Apple Ile ou lic équipé d'une carte 8¢ colon- nes. Une adaptation sur 40 colonnes est possi- ble, mais l'affichage sera moins bon. La version cloprés est destinée aux Apple Ile normoux. Pour Apple ile ou He équipés du 65CG2, on modifiera seulement la ligne 295, Pourquoi avoir préféré le fichier BIN au fichier TAT ? D'une part, en raison de la rapidité de son écriture sur disquette et de son charge- ment, d’autre part parce que le programme ‘utilise sans faire appel 4 une varioble, LIMITE be longueur du fichier est limitée 4 la taille-mémoire de votre Apple. Ici, LOMEM a été fixé & 26060, ce qui autorise lécriture de 255 données. Chaque enregistre- ment exigeant 80 caractéres, 160 données Sup- plémentaires vous obligeront 6 donner & LOMEM Ia valeur 34009. Veillez 4 ne pas dépas- ser la taille de la mémoire disponible... et Woubliez pas de réserver quelques milliers dioctets pour le fonctionnement du programme (peu gourmand d‘gilleurs), — BOITE, fichier binaire de données. PREMIERE UTILISATION RUN BOITE.BAS... puis option 1 du menu, Pour qu'une ligne de données (pas plus de 78 caractéres) soit validée, il est indispensable de répondre par (1) D'ACCORD... sinon c'est & refoire. Consultez le tableau de la page 4 avant foute uti- lisation. || comporte des indications qui ne figu- rent (volontairement) pas dans le programme. = CREATION DU FICHIER Le eréation du fichier BOITE est automatique, Ne pos verrouiller ce fichier car il est entidre- ment réécrit lors de chaque mise & jour. Pour le copier sur une autre disquette, taper successivement : * RUN BOITE-BAS ....puis changer de disquette * 1 (option saisie du menu} * RETURN (immédictement aprés le numéro de la donnée} * 4 (vers menu général)... et le fichier BOITE est écrit sur votre seconde disquette (préalablement initiali- se, bien sir}. _ Assen Eee SSRN RR EEE SEES SSSR TES SERE SSS SeTETREEEETEEEEEeEsenneeersnessessewesessaseressneenss TREMPLIN MICRO 3 UTILISATION DE BOITE.BAS SAISIE DES DONNEES Aprés avoir choisi l'option 1 (menu général), tapez normalement votre phrase (signes de ponctuation autorisés). A vous de savoir si les minuscules seront ‘ou non utilisées, de méme que l’accent circonflexe. La longueur de chaque donnée est limitée 4 78 caractéres. Plusieurs commodités vous sont offertes (en Basic) : CTRL-D : Curseur au début de la ligne CTRL-F : Curseur & lo fin de la ligne CTRL-E : Effocement dela ligne CTRL-S : Récupération d'une ligne effocée por erreur DEL __ ; Effacement du coractére précédont le curseur Pour insérer, se contenter de revenir en arriére, puis toper le caroctére & insérer. Il prendra place derriére Ia lettre recouvrant le curseur. RETURN ; Pour terminer fo soisie d'une ligne... (Pour terminer la saisie, RETURN sur une ligne vide), FLECHE DROITE et FLECHE GAUCHE : Autorisent les déplocements vers la droite et vers la gauche LECTURE DES DONNEES (& partir du Menu général) CTRL-L ... comme Liste vous permet d’accéder BOTTE-BAS UTILISEES 120 GOSUB 68@: GOSUB 465 125 INVERSE :TS = “: TO 140 ETURN ALE>* OINS GENIALE" 15@ TEXT > "¢: CALL - 198: GET R®: PRINT 168 R = VAL (RS) 100 LOMEM: 26008: REM POUR 255 DONNEES ENVIRON 105 L$ = “*:RS = **:R = O:H = @: REM VARIABLES LES PLUS 11@ TEXT : NORMAL :D$ = CHRS (4): PRINT D8*PR£3": PRINT 115 BA = 550: REM ADRESSE DU FICHIER "BOITE* :": VTAB 1: PRINT Ts: PRINT " LA BOITE AUX IDEES *: PRINT TS: NORMAL 199 T9 = “*: FOR I = 1 TO 20:TS = TS + * *: NEXT : GO 195 POKE 1483.48: VTAB V: INVERSE : PRINT V;: NORMAL : R 148 V = 1: GOSUB 135: PRINT " SAISIE D’UNE... 145 V = 2: GOSUB 136: PRINT “ RECHERCHE D’UNE IDEE NON M 155 V = 3: GOSUB 195: PRINT " TERMINE POUR AUJOURD’HUI - 165 PRINT TS: POKE 34,5: VTAB 22: PRINT TS: POKE 35,21 au fichier de données, ligne par ligne... & partir du numéro de votre choix, Une ligne de com- mandes vous guide (possibilité de lire Ia ligne suivante avec RETURN... ou de corriger aprés un CTRL-C). RECHERCHE C'est évidemment le point fort du programme. Vous pourrez rech er un mot, un groupe de mots... voire une simple lettre, mais pas la ponctuation (le mot & chercher est en effet saisi por un INPUT normal... les programmeurs peu- vent s‘en donner 4 ccaur joie et modifier cette partie de BOITE-BAS !). Si vous cherchez “qui”, toutes les phrases com- portant ces trois lettres vont instantanément s'atficher, y compris quand “qui” sera inclus dans acquitter ou Squilibre. Par contre, si vous cherchez “qui” (qui suivi d'un espace), vous n'obtiendrez que les phrases comportant "qui “, suivi d'un espace, Les possi- bilités sont nombreuses. (La disquette de Tremplin Micro comporte un fichier de proverbes qui en donne une bonne idée). Et maintenant, & vous de jover ! Clément Renard. Ligne 115: Si vous modi- tiez les commentaires en les allongeont, votre pro- gramme sera trop long et sera “écrasé" por le fichier de données {installé 4 par- tir de 5500). Alors, soyez prudent ! IDEE (GENI POKE 1493, valour remplace HTAB (qui, ov-dessus de 49, n'est pas supporté por tous les Apple). GUY-HACHETTE SAISIE Elle est classique, avec GET, en Bosic. Il serait ible de l'optimiser en remplogant par une rou- tine en langoge machine (une boite de disquettes vierges & l'auteur de lo meilleure |). * Le foit d'ovoir décloré jes variables L$, R$, R et H au début du pro- gromme en améliore sensiblement Ja ra- pidité. * Sur les onciens Apple tie, la touche ESCAPE ne doit pos étre utili- sée... cor elle permet de se promener 6 tra- vers l'écran (avec les flaches, bien sGr). Pro- blame inexistont sur les licet leavec 65092 * Avec I’ lie et lApple lle + 6592, lo ligne 295 sera rempla- cde par : 295 FR = 21 THENH = H + 1: GOTO 225 MEMORISATION A portir du moment ov vous avez accédé a Ia rou- tine de saisie, le fichier BOITE sera automatique- ment réécrit lorsque vous sere cigs rou- saisie pour l'option MENU GENERAL. 178 176 188 185 198 195 208 205 2108 215 % Bh 8 248 245 B23 RBHIRTRB 388 305 318 Ad a 1 SSSISR8H8E E8888 IF R® = CHR® (12) THEN 580 HOME ON R GOTO 218,528,708: GOTO 15@ 3 REM HHENRH ORME He REM * SAISIE DU TEXTE . REM FHHHHOHHHEHHRH HEH HOME :N = N + 1: INVERSE : PRINT N: NORMAL le=** L = LEN (L8) - 1:H = L + 3: IF L > 78 THEN CALL - 19 6:L® = LEPTS (L$.L - 1): GOTO 228 IF H-1>LTHENH=L-1 PRINT : VTAB 9: HTAB 1: PRINT L®;: CALL - 958: POKE 1403,H: GET RS R = ASC (R®) IF R > 19 THEN IF R = 8 AND H THEN H = H - 1: GOTO 238 IF R = 4 THEN H = 1: GOTO 230 275 >1 IF R = § THEN S$ = L8: GOTO 215 IF R = 19 THEN L® = S$:S$ = **: GOTO 228 IF R = 13 THEN 335 IF H - 1 = L THEN 315 IF R < > 127 THEN 295 IF H > 1 THEN LS = LEFT@ (LS,H - 1) + RIGHTS (L$,L + 1 - A):H = H - i:L = LEN (LS) - 1 GOTO IF R = ASC ¢ MIDS (L9,H + 1,1)) THEN H = H + 1: GOTO 238 IF R < 32 OR R > 126 THEN 238 IF L > 77 THEN 220 LS = LEPTS (L8,H) + RS + RIGHTS (L8,L + 1 - H):H =H + 1:L = LEN (L$) - 1: GOTO 238 IF R = 127 AND L > @ THEN LS = LEFTS (L8,L): GOTO 22 8 IF R < 32 OR R > 126 THEN 230 IF L > 78 THEN RS = ** Ls = L® + R$: GOTO 228 PRINT : PRINT : PRINT LS VTAB 17: PRINT "<1> D’ACCORD <2> CORRECTION <3> ANNU LATION <4> MENU GENERAL ";: CALL - 198: GET RS: PRIN T R = VAL (R$): IF R < 1 OR R > 4 THEN 348 ON R GOTO 395,230,215,355 IF NM THEN N = NM:NM = @: RETURN N=N-1 GOSUB 425: GOTO 158 g REM HHMENHHHERRH ERR RR RHE REM © ECRITURE DU FICHIER “ REM CFeeeHHEHETHHT EERO R RENE HERR : BOITE-BAS 395 IF L9 =" " THENN = WN - 1: GOTO 210 40@ AD = (BA - 8@) + 6@ * N:AL = AD + L:AP = AD + 79:M = (suite) e 405 FOR I = AD TO AL:M = M+ 1: POKE 1,128 + ASC ¢ MIDS ¢L9,M,12): NEXT 410 FOR I = AL + 1 TO AF: POKE 1,@: NEXT 415 IF NM THEN N = NM:NM = @: RETURN 42@ GOTO 218 425 L=N * 88 43@ PRINT CHRS (4)*BSAVE BOITE,A" BA" ,L*L 435 RETURN 448 : 445 REM setae ati iia aera a 450 REM * LECTURE DU FICHIER . 455 REM NIE eH HIE Ene eae 468 : 465 ONERR GOTO 498 47@ PRINT CHR® (4)"BLOAD BOITE* 475 L = PEEK (43616) + PEEK (43617) # 256: REM 48848-41 , AVEC PRODOS 480 N=L/ 68 485 RETURN 49@ POKE 216,8: GOTO 125 495: SOO REM Keke HHHEEHHHEH HNMR RHE M Re 5@5 REM * RECHERCHE ” 510 REM sve IO IO ER 515 t 52@ AR = 848: REM STOCKAGE DU MOT CHERCHE 525 VTAB 6: INPUT "VOTRE MOT-CLE EST -> ";MS 53¢ IF MS = ** THEN 158 535 L = LEN (M$): POKE 252,L: POKE 8,(N - 1) ~ INT (N / 256) * 256: POKE 9, INT ((N - 1) / 256):M = 8 540 FOR I = AR TO AR + L - 1:M = M+ 1: POKE 1,128 + ASC ¢ MIDS (MS,M,1)): NEXT 545 PRINT : CALL 768: CALL - 198 55@ CALL - 198: POKE - 16368,0: WAIT - 16384,128,127: PO KE ~ 16368,@: PRINT : HOME : GOTO 525 555 : SEO REM esate acaba at se ate ae eae eae ee 565 REM « LECTURE ET CORRECTION * 57 REM t-te ab te te ate aa iat ae ave at ae ae ae dea aE 575 : 58@ HOME : CALL - 196: PRINT : VTAB 7: INPUT "NUMERO DE DEPART DEMANDE -> *;R$:RE = VAL (R®) 565 PRINT : IF RE < 1 OR RE > N THEN 645 59@ VTAB 7: CALL - 868: INVERSE : PRINT RE: NORMAL : VTA B 9: CALL - 868 LONGUEUR DU FICHIER Calcul élémentaire, puis- que chaque enregistre- ment est limité 4 80 carac- teres. Ono L = 80 * N * Notez (ligne 410) que les lignes sont complé- tées por outant de 0 qiil y a doctets libres... jusqu’d 86, le premier caractére de chaque donnée est un espace (ce n’était pas indispensable). ONERR GOTO lors de la premiére créa- tion de fichier, il évite de se planter. ProDOS Sous ProDOS, ne pas oublier de modifier lo ligne 475, comme indiqué par lo REMarque... RECHERCHE On poque en 252 (SFC} lo longueur du mot cherché (de 1 & FF... si vous vou- lez !), et en 8-9 le nombre actuel de lignes de données (qui peut donc déposser SFF... ov 255, puisque deux octets lui sont réservés). Quant aux caractéres du mot, ils sont également poqués 4 partir de 848, Cest-d-dire @ la suite de lo routine en langage machine... qui soit les lire a cette adresse C.Q.F.D, ‘Sneeaeeneweseesnreereney GUY-HACHETTE ONS CERES EOERSATE NTA T ESAs ces ensAsersss nd ss SASSEETSANN NOSES SHS SSSON OESSSOREATS SSS eT Sse reeeeeeUEEAeTES CORRECTION Les copieurs de disquettes ne souront jamais com: ment relire leur fichier... at le corriger, sauf s'ils ont le courage de lire le pro- gromme pour comprendre comment il fonctionne, Cest élémentaire, non ? ft maintenant, pour en savoir plus la-dessus, lisez tout de méme !'explication de cette toute petite rou- tine de recherche. (ci-dessous et ou verso) A SAVOIR * $DB3A (STROUT) affiche la chaine dont vous lui indiquez I’adresse (Y et A), mais atten- tion | elle doit obligatoirement se terminer por un @ ou par des guillemets ("). La partie basse de |'adresse est mise dans |’occumula- teur A et la partie haute dans le registre Y. Cela est obtenu par LDA et LDY (LD comme LOAD). * $FDED (COUT) permet d'afficher le caractére qui est dans laccumulateur A. (eneeeeETeSTES 3s vee wUSAESSOUUSSSESUEETERUUUETSSS TEES SES TREMPLIN MICRO 595 680 605 618 615 695 788 AD = (BA - 8@) + CRE * 80): POKE 6,AD - INT (AD / 25 6) * 256: POKE 7, INT CAD / 256) POKE 8,0: POKE 9,0 CALL 633: REM SORTIE DE LA PHRASE VTAB 18: PRINT “SUITE = <RETURN> -- CORRECTION = <CT RL-C> -- AUTRE OPTION = <UNE AUTRE TOUCHE> *;: CALL - 198: GET RS PRINT :R = ASC (RS): IF R = 13 THEN RE = RE + 1: GOT 0 585 IF R = 3 THEN NM = N:N = RE: GOTO 630 GOTC 580 Le = “*: FOR I = AD + 79 TO AD STEP - 1:R = PEEK (1) : IF R < > @ THEN LS = CHRS (R - 126) + L® NEXT : GOSUB 228 CO = 1: GOTO 588 IF CO = 1 THEN CO = 0: GOSUB 425 GOTO 15@ t REM HRREHHMHHHHAHEH ERK OHH REM # ROUTINE DE RECHERCHE “ REM KeNMEHHHEEHEHEH OPH U HR FOR I = 768 TO 647: READ R: POKE 1,R: NEXT : RETURN DATA 169,044,133,6,169,21,133,7,198,8,165,8,201,255, 208,9,198,9,165,9,201,255,208,1,96,24,165,6,105,88,! 33,6,144,2,23@,7,168,255,162,255,232,228,252 DATA 24@,20,200,177,6,240,214,221 ,80,3,240,241,134,2 53,152,56,229,253, 168, 76,38,3,165,6,164,7,32,58,219, 169,13,32,237,253,76,8,3 TEXT : HOME ° Si vous étes néophyte, utilisez des trucs pour vous souvenir de la 5) des mnémoniques (LDA, STA, ete.) PAR EXEMPLE : LDA, LDX, LDY comme LoaD A, X, ¥ STA, STX, STY comme 8Tocke A, X, ¥ CMP, CPX, CPY comme ComParer A, X, ¥ ADC comme ADditionner SBC comme Soustraire DEC comme DECrémenter DEX, DEY comme DEcrémenter X,¥ INC comme INCrémenter INX et INY comme INerémenter X,Y JSR... de Saute et Reviens IMP... Je Me Perds... et je ne reviendral pas... bref, du délire | NESTOR 020.6 See @¢) #1678 (© LA BOITE AUX IDEES Voici, pour terminer, l'explication de la routine de RECHERCHE (lignes 685 et 699), qui permet de trouver une lettre ou un groupe de lettres... et d’afficher la ou les lignes concernées. a) 0 report pour un tour | (suite et fin) DEUX POINTS D’ENTREE * 768 ($300) pour la recherche proprement dite © 833 ($341) pour le sous-progromme "Routine et correction”. On utilise les odresses $6 - 7-8 - 9- FC - FO de la poge 0. $152C = 5500-80 Lo partie basse de l'adresse est stockée dans la mémoire $6, Ia partie haute dans la mémoire $7 En $8-9, on a le nombre de lignes de données moins un (poqué depuis le Basic). On le décrémente. Quond les deux valeurs passent au-dessous de 0 (@ — 1 = $FF), on a terminé la lecture des n lignes RTS renvoie ou Basic Annulation de la retenve pour ajouter $50 (80) & l'adresse contenue dans $6-7, Quand il n'y a pas de retenue, BCC évite d'incrémenter la mémoire $7 Registre Y 4 $FF Registre X & SFF X = X + 1 (@noter que SFF + 1 = @) X est-il égal & SFC, (longueur du mot) ? Si oui, on passe 4 l'affichage... Non : olors ¥ = Y +1 On lit octet contenu 4 I’adresse $6-7 + Y Si c'est un G@, lo ligne a été lue... dune autre ! Comparaison avec le coractére cherché S'il est identique, voyons le suivant éventuel Valeur de X stockée dans FD Y posse dans A Retenve 4 1 pour soustraire $FD (autrement dit X) de A (autrement dit Y). A repasse dans Y @300- Ae 20 LDA £87C @302- 85 06 STA 306 @304- Ao 15 LDA £815 @306- 95 07 STA $07 @308- cs 08 DEC $08 @30A- AS 08 LDA $08 @3ec- co FF CMP = £SFF @30E- D0 09 BNE $0319 @318- ce a9 DEC $09 @312- AS 29 LDA $09 @314- co FF CMP = £8FF @316- De 21 BNE 90319 @318- «6e RTS @319- 16 CLC @31A- AS 26 LDA $06 @31C- 69 52 ADC £850 @31E- 85 a6 STA $06 @328- 90 02 BCC $0324 @322- BS 07 INC $07 @324- Ag FF LDY £8FF @326- Az FF LDX £9FF 0328- £56 INX @329--E4 PC CPX 9FC o32B- Fe 14 BEQ $0341 @32D- ce INY @32E- Bi 06 LDA ¢$06),¥ @330- Fe DS BEQ $0398 @332- pDSe eS CMP $8358,x @335- Fe Fi BEQ $0328 @337- 86 FD STX 9FD @339- 98 TYA @33A- 38 SEC @33B- ES FD SBC $FD @33D- AB TAY @33E- 4c 2603 JMP 90326 @341- AS 06 LDA $06 @343- A407 LDY $07 0345- 2¢ 3A DB JSR SDB3A @348- A? OD LDA £80D @34A- 20 ED FD JSR $FDED @34D- 4c 88 03 JMP = 80308 Lisez l'explication page précédente Retour & lo source | 2 GUY-HACHETTE LANGAGE MACHINE VARIABLES dimensionnées On saisit cing données alphanumériques et on affiche la premiére QUESTION 10 HOME Pourquoi $843 - $851 ? 20 FOR I= 1 TOS A$(x) est une variable 30 INPUT AS<I> 40 NEXT I 50 PRINT AS¢1) (ci-dessous) dimensionnée (tableau) On lira successivement la longueur puis l'odresse de SRUN Dons la mémoire de l'Apple, le début de chaque mot dans : ?TOTO la zone réservée aux variables dimen- $843- 44-45 ?NATHALIE sionnées est pointé par les octets 107 et $846- 47 - 48 ?LILi 108 ($6B et $6C), mais les octets 13) et $849-4A-4B ?RENE 132 fournissent le méme renseigne- $84C-4D- 4E ?Z0E ment... sur la derniére variable utilisée $84F - 50-5) TOTO {ici, il s’agit de A$(1)). Notez que les mots sont stockés les uns a la suite des autres, 0083- 43 08 = 6843 al'endroit a partir du sommet SCALL-151 #93.84 “seit de la mémoire, en ASCII 0843- 04 (fc 76) 08 F4 0848- 95 04 FO 95 04 EC 95 03 | 0850- #9S5E9. OSFF Ev 95 = $95EP 9SE9- SA 4F 45 52 45 4E 45 OSFF = 9SFC+84 (longueur? 95FO- 4C 49 4C 49 4E 41 54 48 95F8- 41 4C 49 45 54 4F 54 4F TT oo Te * par NESTOR TREMPLIN MICRO 3 MASTERMIND Version pour Apple // ETTE adaptation du fomeux Mastermind ne décevra certainement pos les (nombreux) amateurs de jeux de logique. Elle a le mérite d'utiliser, sans aucune modification, la FONTE.LM parue dans le numéro 5 de Tremplin Micro (sous la signature du méme auteur), PROGRAMME BASIC LOMEM: 18108: TEXT : INT CHR® (21): HOME PRINT : PRINT CHR® (4)*BLOAD FON TE.LM" PRINT : DFORM* POKE 232,@: POKE 233,3: SCALE= 1 : ROT= 1 GOSUB 648 REM #¥#e#ee0%4# ECRAN «exe HeHMH NORMAL : PR PRINT CHR® (4)*BLOAD MIN : AD = 16384 HGR : POKE - 16382,0 HCOLOR= 7 FOR I = @ TO 7 STEP 2 HPLOT @,1 TO 118,1 HPLOT 162,1 TO 279,1 NEXT HPLOT 8,191 TO 279,191 HOME HTAB 19: PRINT "MIND" Ls Js = 4 FOR I= 1 TO 24 =L+ 2: IP L > 17 THEN L = 3: =C +3 CHRS (I + 64) 3 HTAB C: PRINT Cs 7:¥ = (L- 1) # 8 - 1:F a «aire a = I 228 225 238 235 248 245 258 255 268 265 278 275 288 285 : 298 295 : 308 305 318 315 328 325 330 335 348 345 Michel DEVAUX GOSUB 560 NEXT CALL AD FOR I =1T02 J= (I - 1) *# 24 + 141 HPLOT 3,J TO 59,J TO 59,J + 15 T 03,J + 15 T0 3,J NEXT HPLOT 65,8 TO 65,191 FOR I = #704 77+ (K-1 REM s##e#HHHHHY JEU shee MEMO FOR I =1T05S NCI) = INT ¢ RND (1) * 24 + 1) NEXT L=1:C = 11:CO=8 L=L+ 3: IF L > 19 THEN L = 4: C=C+ 198 B = @:M = @:CO =CO+1 FOR I = 1 TO S:AACI) = @:NNCID = @: NEXT FOR I = 1 T05 VTAB 1: HTAB 1: GET As ACI) = ASC (AS) ~- 64: IF ACID < GUY-HACHETTE 1 OR ACI) > 24 THEN PRINT CHRS ¢ 7): GOTO 348 3exX=C#7+¢1-1) *# 12-4 36@ F = ACID 365 GOSUB 568 37@ IF ACI) = NCI) THEN B = B+ 1:AA (1) = 2:NNCI) = 1 375 NEXT see J = 8 385 J = J + 1: IF J = 6 THEN GOTO 41 5 399 FORT = 1T05 395 IF AACJ> = 1 OR NNCI> = 1 THEN G OTO 485 400 IF ACJ) = NCI) THEN M = M + 1:AA (J) = I:NNCI) = 1 405 NEXT 41@ GOTO 385 415 VTAB L: HTAB C 42@ IF M = @ AND B = ® THEN PRINT * Rien": GOTO 430 425 PRINT "B.*;B;" M.";3M 430 CALL AD 435 IF CO < 16 AND B < > 5 THEN GOTO 320 448 VTAB 22: HTAB 11 445 IF B < > 5 THEN GOTO 470 450 PRINT “Vous avez GAGNE en ";CO;* coup"; 455 IF CO > 1 THEN PRINT ‘s* 46@ IF CO = 1 THEN PRINT 465 GOTO 475 47@ PRINT “Vous avez perdu :" 475 CALL AD BR NEXT VTAB 19: HTAB 2: PRINT “Quitter" VTAB 22: HTAB 2: PRINT *Rejouer* CALL 16384 VTAB 1: HTAB 1: GET AS 535 IF AS < > "GQ" AND AS < > *R" THE N GOTO 530 540 IF AS = "R" THEN RUN 138 545 TEXT : HOME : END 5508 END 555 : 568 REM #Hee¥eeeN PORMES Shenneeened 565 : 57@ IF F = 16 THEN DRAW 12 AT X + 4, Y: GOTO 638 FO = INT (CF - 1) / 8) + 1 DRAW FO AT X,Y IF F = 2 OR F = 10 ORF S75 588 56S 4 n+3* orm 2 4 F xaxany oN og se g: _ niet axa ~m+" — PRINCIPE DU JEU ordinateur choisit une sélec- tion de 5 formes graphiques (la méme peut étre sélectionnée AD 10 8 BO JD RO cH Ke so OH L® TS EQ) MS UD FQ NO VO 6B) 0S We HE P@ x@ plusieurs fois). Quitter It s'agit de découvrir cette sé- lection, par déductions succes- |ReJouer sives, en un minimum de coups. _ PEORS SPORR OGTR? OSES BP ese £2°%S BOTs SEARS SPoRe PROFS BPOGS LEORH PEGS 2PO%% : 68090 PPO PPORa 2PO%% EF°%% Vous avez perdu TREMPLIN MICRO MASTERMIND (suite et fin) 685 618 615 620 625 638 635 648 645 658 655 668 665 678 675 688 685 698 695 708 785 If F = 13 OR F = 15 THEN DRAW 7 ATX +3,Y +3 IF F = 14 OR F = 15 THEN DRAW 18 ATX +5,Y +3 IF F = 21 OR F = 23 OR F = 24 TH EN DRAW 8 AT X + 2,Y + 2 IF F = 22 OR F = 23 OR F = 24 TH EN DRAW 11 ATX + 6,Y + 2 IF & = 6 THEN FORJ =X TOX+8 : HPLOT J,Y TO J,Y + 8: NEXT J RETURN REM ####HHe PRESENTATION x4 HHH t TEXT : HOME HTAB 13: INVERSE : PRINT " MASTE R.MIND *: NORMAL PRINT : PRINT : PRINT : PRINT " L’ordinateur choisit une sélect ton de" PRINT “S formes graphiques parm! les 24 propo-" PRINT “sées .* PRINT : PRINT " Votre but ? Déc ouvrir cette sélection* PRINT “en un minimum de coups ." PRINT : PRINT " A chaque coup, l‘ordinateur vous Indi-"; PRINT “queca combien votre propo sition comporte*; PRINT *de formes BIEN placées et MAL placées ."— CALL - 196: VTAB 23: PRINT *APPU YEZ SUR UNE TOUCHE POUR COMMENCE R";: GET AS RETURN e Pour fonctionner, le programme en Basic doit &tre accompagné, sur sa disquette par : © FONTE.LM (Tremplin Micro n°5) © MINDFORM (ci-dessous) Adresses : Fonte.LM : 16384 ($4000) Mindform ; 768 ($308) Pour enregistrer les codes de MINDFORM, passez d'abord en mode moniteur (CALL — 151 .., RETURN), puis tapez chaque ligne en remplacant le tiret par deux points (:). lorsque vous aurez terminé, tapez CTRL-e, puis BSAVE MINDFORM, A$300, LSA8 Si vous attendez de nous un renseignement... un conseil, joignez toujours un timbre-poste pour la réponse. Si vous fous adressez une disquette, conservez |'original de vos programmes et n’oubliez pos de joindre une enveloppe affranchie pour son retour. Nous n'examinerons votre programme que s'il a 616 recopié sur une disquette. GUY-HACHETTE Rien ne vous oblige 4 recopier la totalité de ce court programme de démonstration, encore que les premiéres lignes, empruntées & Beagle ros _soient fort origina- les (ourlez-vous pensé & utiliser lo fonction PLOT... en mode TEXT... pour transformer votre écran en damier ?) Por contre, ne négligez surtout pas DAMIER.O : alfiche des coractéres & I'écran. II est lent, DAMIER.1 : écrit directe- ment dons la mémoire- écron. || est trés rapide. qqnquusseesanseccesssses TREMPLIN MICRO 10@ 118 128 130 148 158 160 170 160 198 208 218 220 238 248 258 268 278 288 298 _[Prepos | INITIATION ECRAN-DAMIER ES démonstrations sont destinées & vous montrer les énormes possibilités du langage machine, utilisé pour de courtes routines. Vous constaterez notamment, en comparant DAMIER.@ et DAMIER.! (page 14), qu'il est souvent facile, en traitant le probléme d'une autre maniére, d’accélérer considérablement la vitesse d'exécution, r—— DAMIER.BAS 40 COLONNES ——, TEXT : PRINT CHRS (21): HOME : COLOR= 2 VTAB 12: HTAB 5: INVERSE : PRINT * DAMIER EN BASIC ¢ BEAGLE BROS) *: NORMAL GOSUB 298: HOME FOR X = @ TO 39 STEP 2: FOR Y = 1 TO 47 STEP 2:2 = 2 = @: PLOT X + 2,¥: NEXT Y,X: POKES 37,255 GOSUB 298: HOME PRINT : PRINT : LIST 100: LIST 13@: GOSUB 29@: HOME VTAB 12: HTAB 2: INVERSE : PRINT " DAMIER EN LANGAGE MACHINE, VERSION @ * NORMAL : GOSUB 298 PRINT : PRINT CHRS (4)"BLOAD DAMIER." FOR I = 1 TO 3: GOSUB 298: CALL 768: GOSUB 298: HOME : NEXT VTAB 12: HTAB 2: INVERSE : PRINT " DAMIER EN LANGAGE MACHINE, VERSION 1 “ NORMAL : GOSUB 298 PRINT : PRINT CHRS (4)"BLOAD DAMIER. 1* FOR I = 1 TO 3: GOSUB 298: CALL 768: GOSUB 298: HOME : NEXT VTAB 22: PRINT “<1> ENCORE <2> MENU DISQUETTE <3> FI N "3: GET RS: PRINT IF RS = "1* THEN RUN IF R$ = “2* THEN PRINT CHRS (4)"RUN MENU" IF R$ < > *S3* THEN 248 HOME : END CALL - 198: POKE - 16368,@: WAIT - 16384,126,127: PO KE - 16368,0: RETURN — 3 @300- 20 58 FC JSR s$FCSB | Gn state Pecron @303- Ag 18 LDA £918 i 18 (2 lo: mammal e3e5- 8S @6 STA oec puis on stocke $18 (24) dans la mémoire $6 @307- A? AG LDA £SAO ‘| COUT) ($FDFG) envoie un espace @309- 20 F@ FD JSR SFDF@ @3eCc- Ad a0 LDY £908 ‘ = : — i = been a ie on ees Lecture de la mémoire $6 (par A) @312- co @1 CMP £901 On compare le contenu de Ad} @314- De @4 BNE S@31A Si ce n'est pas égal, saut 4$31A 0316- Ce 13 CPY £913 ¥ est-il gal & $13 (19) ? @318- Fe 1 BEQ S@31B Oui : alors on saute 6 $318 @3tA- E8 INX X=X+1 @31B- Ag LDA £820 $20 (espace inverse) mis. dans A @31D- 20 JSR SF94C PRBL3 ($F94C) envoile A + X — | espace(s) @320- ce INY Y=Y+) @321- ce CPY £914 Y est-il & $14 (20) ? @323- 90 BCC $O30E Si oui (C = G), on revient & $30E @325- AS LDA $24 Lecture de CH (position horizontale du curseur) @327- 48 PHA A stocké sur la pile @3286- 38 SEC Retenue 4 | pour soustraire a. 4 4 ont ‘| Position HOR. moins 1 @32D- cé DEC 906 Et moins | pour le nombre de lignes @32F- Fo BEQ $0336 Si on est 4 zéro, terminé | @331- 68 PLA On récupére A sur la pile 8332- De BNE $830C S'il est différent de G, ligne impaire @334- Fe BEG 30307 ou, au contraire, ligne paire @336- 68 PLA Ne pas oublier de dépiler A oo ae a picts Retour du curseur en haut de I'écran... et SoS7- bod STA #25 retour au Basic @335- 6a RTS DAN ae «an & 6303- AQ LDY £801 = @305- 20 JSR SFBCI BASCALC colcule l’adresse de base 0308- A? LDA £920 Espace inverse dons A @30A- 91 STA ($28),Y Stockoge de A 4 !'adresse lue dans $28/29 + Y e30Cc~- ce INY ‘| Y incrémenté deux fois (damier |) @3eD- cs INY @30E- Ce 28 CPY £828 Est-il & $28 ? O318- 98 FS BCC SO30A S'il est ou-dessous, un autre tour @312- E6 25 INC $25 Sinon on incrémente CV (VTAB) @314- AS 25 LDA $25 Puis on en fit la valeur 0316- cs 23 CMP $23 Que l'on compare & $23 (ou il y a $18) @318- Fo @8 BEQ 30322 Si A = $18 (24), c'est fini @31A- ce 28 CcPY £928 Y est-il égal 4 $28 (40) ? @31C- Fe ES BEG 28333 Si oui, un espace pour commencer ic ligne @31E- A® 60 LbY £309 Non: alors ¥ = 1 (pas d’espace) @320- Fe ES BEQ $0395 GOTO $305 @322- A? FF LDA £9FF @324- 85 25 STA $25 Voir DAMIER.G @326- 68 RTS . 14 GUY-HACHETTE Passons maintenant sur 80 colonnes VERSION MIXTE Si vous étes courageux (bien sir que vous I'étes !), reco- piez les 47 octets de cette version mixte. Elle a le mérite (?) de donner le méme résultat sur 40 ou 80 colonnes. 300: 20 58 FC AG @)I ce 8D 54 CO CO 28 WW FO 20 «Cl FB AD 20 91 28 8D 55 CO 91 28 CB —€6 25 AS 25 C5 23 FO G8 CO 28 Fo DD AG GG FG DB AP FF 85 25 66 Pour terminer : BSAVE DAMIER.80cp, AS3@@, L$2F Utilisation CALL 768 (aprés un PRE£3... si vous désirez le damier sur 80 colonnes). La gestion de votre écran 80 colonnes est plus com- lexe que celle de 'éran 49 colonnes. En effet, un coractére sur deux est en mémoire ouxiligire, & Ia méme odresse qu’en mémoire normale (dite résidente). Ainsi, pour lire ou écrire chaque caractére, il faut d'obord toper un : POKE 49237,0 ($C@55) qui dofne accés @ ila MEM.AUX., puis un POKE 49236,0 ($CO54) qui roméne en mémoire vive. En langage machine, on ne procéde pas autrement {voir page suivante). écron (valable en 40 ou en 89 colonnes), DAMIER.BAS 80 COLONNES 10@ PRINT CHR® (4)"PR£3": PRINT : HOME 118 P = ABS (P - 1): POKE 49236 + P,@ 12@ READ A: IF NOT (A) THEN POKE 49236,0: GOTO 15¢ 138 B= A+ 39 148 FOR I = A TO B: POKE I,92: NEXT : GOTO 11@ 158 GOSUB 31¢: GOSUB 320: PRINT : PRINT : PRINT “ ET MAI NTENANT PASSONS A LA ROUTINE EN LANGAGE MACHINE, EVI DEMMENT PLUS RAPIDE": GOSUB 310 168 PRINT CHR® (4)"BLOAD DAMIER. 8@cp* 178 CALL 768: GOSUB 318 168 GOSUB 328: LIST 198,210: GOSUB 318: CALL 768: GOSUB 31e 198 PRINT CHR® (17): GOSUB 318 20@ PRINT CHR® (18): GOSUB 31@ 218 PRINT CHR® (17): GOSUB 318 228 CALL 768: GOSUB 31@: GOSUB 320: LIST 238,25@: GOSUB 31@: CALL 768: GOSUB 318 238 PRINT CHRS (18>: CALL 768: GOSUB 318 248 PRINT CHRS (21>: CALL 768: GOSUB 318 25@ PRINT CHRS (4)"PR£3*: PRINT : CALL 768: GOSUB 31¢ 268 GOSUB 32@: PRINT : PRINT : PRINT “<i> A REFAIRE <2> MENU GENERAL DE LA DISQUETTE <3> FIN-PROGRAMME EN MEMOIRE *;: GET R®: PRINT = "1" THEN RUN = "2" THEN PRINT CHR® (4)"RUN MENU" RS = "3" THEN HOME : END 268 LL - 196: POKE - 16368,0: WAIT - 16384,126,127: PO ~ 16368,8: PRINT : RETURN E 37,18: CALL - 958: RETURN TA 1024,1152, 1280, 1408, 1596, 1664,1792,1920,1864,11 92,1328 ,1448, 1576, 1784, 1832, 1968, 1104,1232, 1368, 1468 +1616,1744,1872,2080,0 ~~ $383 : pope $8 Bane ECRAN-DAMIER 8300- 20 56 FC @305- 20 Ci FB 0308- AS 28 @312- ce 28 9314- 98 FY @316- 48 @317- 98 0318- i8 @319- 69 57 @31B- AB @31C- BD 54 CO @31F- 68 9320- 91 28 @322- ce @323- ce AB @325- 90 F9 6327- E6 25 @329- AS 25 @32B- CS 23 @32D- De D4 @32F- A? FF @331- 85 25 JSR LDY JSR LDA INC STA STA INY CPY BCC PHA TYA cLe ADC TAY STA PLA STA INY CPY BCC INC LDA CMP BNE LDA STA RTS BSAVE DAMIER.8G cp, AS3O0, L$34 (suite et fin) sFCS8 £900 SFBC1 £920 $25 $Cass ($28),Y £328 S030F £357 $COS4 ($28) ,Y £8A8 $8320 $25 $25 $23 $8383 £9FF $25 ] Home y=9 BASCALC colcule l'adresse de base Espace inverse mis dans f'accumulateur CV (VTAB en Basic) = CV +1 Pour lire ow écrire en MEM. AUX. (page 2) A copié & l'adresse lue en $28/29 + ¥ yY=¥+1 ¥ est-il dgal 4 $28 (40) ? S'il est plus petit, ligne inachevée Contenu de A empilé Y¥ est mis dans A Annulation de la retenue A = A+ $57... lire en bas de page Nouvelle valeur de A dans ¥ Pour lire ou décrire en MEM. normale On récupére A sur le pile ($20) On I'écrit 4 l'adresse lue en $28/29 + ¥ Y=Y¥+1 Y est-il égal 4 $A8 ?... (lire en bas de page) Non : on n'a pas écrit toute la ligne cv = CV + 1 (VTAB) Valeur de CV dans A Est-elle égale 4 celle contenve dans $23 ? Non : ona encore des lignes 4 écrire Curseur 6 lo ligne G... et retour ou Basic BASCALC ($FBC1) calcule, on le sait, l'adresse de base de chaque ligne de I’écran, & partir de la valeur (@ 4 $17) contenue dans $25 (CV). On trouve cette adresse de base dans BASLet BASH ($28 et 29). A noter que la mémoire $23 contient le numéro (1 4 24) de la derniére ligne de I'écran. Si elle n'a pas été modifiée, on sait donc y trouver $18 (24). 128 octets ($80) séparent l'adresse de base de Ia ligne G... de celle de Ia ligne 1... et ainsi de suite, de 2 en 2 (paire-impaire, paire-impaire, etc.)... d'ou les étranges additions obser- vées dans la routine ci-dessus ($28 + $57 = $7F). De méme, plus loin, SA8 = $28 + $80. Et voild | j'espére, avec ces quelques démonstrations, vous avoir donné envie de faire, vous aussi, quelques courtes incursions dans le “ténébreux” (en apparence) langage machine. C'est un jeu de logique qui vaut bien le Mastermind et ses nombreux dérivés ! NESTOR % GUY-HACHETTE INITIATION cegzzemq AND.DEMO UIT bits constituent un octet... du moins avec le 6502 (ou 65CG2) et quelques autres. Les signes H cabalistiques NVBDIZC sont des indicateurs qui prennent la valeur @ ou | suivant le mode ou I'état du processeur. Ainsi, C = 1 quand la retenue est 61; Z = 1 si le dernier résultat est nul (sil y a eu égalité dans une comparaison). Il est bon de savoir que le bit de signe est N (a 1 quand le dernier calcul a donné un résultat négatif). Mais l'objet de cet article est autre ; comment forcer un ou plusieurs bits 4 @... avec I'instruction AND ? Avont d’aller plus loin, signalons qu'il est impossible de comprendre les opérations sur les bits sans avoir sous les yeux un tableau des codes HEXA et (surtout) binaires des 255 premiers nombres. C'est l'objet de la fiche de ce numéro. AND @st une opération logique (comme ORA et EOR) et opére bit par bit, trés simplement ; 1 — | = —— 1,1—@ = G,@—1 = G. Mais plusieurs exemples valent mieux qu'un long discours (LDA signifie que l'on place dans |‘Accumulateur la valeur indiquée) : LDA so41111111 $FF VVV11001 SFF VVVTVIN) SFr i AVOUEZ > oe n — t=] 9 AND <GocGga000 $a G00GGG01 $G1 1G0G0001 $8) QUE C’EST RESULTAT + GG9GG0G0 $0 GoGoGaG! $01 10000001 $81 PRATIQUE! LDA 11111111 SFF 1010101 $55 QUESTION : AND 11101111 SEF 11107111 SEF Comment forcer 4G le seul bit 4? Comme ceci; RESULTAT 11101111 SEF G1IGGGQ1G1 $45 APPLICATION _ Etvoici un petit programme d’opplication, entiérement en langage machine. OO Objet: afficher les caractéres de l'alphabet en mode inverse... mais seulement si leur valeur est impaire. Consultez notre FICHE. Vous constaterez que le bit 0 de tous les coractires impairs... est 1, d'ou l'intérét de AND. Passons donc & la routine (lancée par CALL 768). AND.DEMO 0300- 20 SB FC JSR $FC58 Home 0383- A? 60 LDA £300 A=90 @305- 85 @6 STA 306 Adresse 600 @307- E6 06 INC 806 Mémoire 6 + 1 9389- AS 66 LDA 306 Mémoire 6 dans Accumulateur @30B- 29 @1 AND £301 ET VOICI AND... @3eD- FO 11 BEQ $9322 Sionobtient@, pas d’atlichage 930F- A2 82 LDX £902 Autrement X = 2 pour envoyer | espace $311- AS 06 LDA S06 Relecture de lo mémoire 6 @313- 2@ 4C F? JSR SF94C = PRBLS affiche A + X — 1 espoce 9316- A6 06 LDX 306 Mémoire 6 dans X 9316- A? oo LDA £900 A=@ as TREMPLIN MICRO 7 Ree en raes ens sen neers ee SESE OSES A SEONEE SSR SOUESE LATION TT orc eess ee ees es SSEE Te SRESESSS ESSE ILTT cae eae TOS AND.DEMO (suite) @31A- 20 24 ED JSR $ED24 On offiche les deux octets de X, A @31D- 20 62 FC JSR $FC62 Retour chariot @320- AS 06 LDA $06 On récupére la valeur de A @322- co iA CMP £91A Est-elle égale 4 $1A (26) ? @324- De £1 BNE 9%0387 Non : encore un tour @326- A? 6 LDA £806 A= $06 POKE 32,6 e328- 85 20 STA $20 — en $20 @32A- Ag 21 LDA £921 ot OKE 33.33 ($21 @32C- 85 21 STA $21 $21 stocké en $21 J , im 2) ] @32E- 2@ SB FC JSR $%FCS8 HOME poral ros 4 on Load | Curseur en hout de I'écran @335- Ao ee LDA £900 ] @337- 85 3A STA $3A On place en $3A et $38 l'adresse de départ | @339- AY @3 LDA £903 de cette routine et dans A le nombre d’ins- 933B- 85 3B STA $38 tructions 4 désassembler, puis $FE63 fait le @33D- A? 10 LDA = £910 reste 033F- 20 63 FE JSR %FE63 _ @342- A 16 LDY £916 ¥ = $16 (za) @344- 89 8D 86 LDA se6ED,y lecturedelamémoire$6s0 + ¥ 0347- C9 AG CMP £9A0 Est-ce un espace ? @349- Fe @2 BEQ $034D Si oui on ne le transforme pas... on saute ! @34B- 29 3F AND £93F Non ; avec AND, coractére mode inverse @34D- 99 8D 86 STA S068D,Y _ ‘lest réécrit 8350- 88 DEY yay] | 0351- De Fi BNE $0344 Sion n'est pas 4G, encore un tour | 353- A? 00 LDA £300 7] ¥ étant 4G, on pouvait économiser une ins- @355- 85 28 STA $20 _} truction en utilisant STY $20 @357- A? 28 LDA = £928 7] A = $28 (49) pour rétablir lo fenétre d'écran @359- 85 21 STA $21 _} normale @35B- A? 12 LDA £912 7 @35D- 85 25 STA $25 |, LEAVERS) @35F- 26 62 FC JSR %FC62 Retour choriot 8362- 28 22 FC JSR $sFC22 VTAB ploce le curseur en CV @365- A2 08 LDX £908 “ ra @367- 20 4A F9 JSR SF94A _| X= Spourenvoyer...Bespoces @36A- 2@ B® FE JSR SsFE8@ SETINV affichage en mode inverse @36D- A®@ @3 LDY £883 7 eens —— — J STROI je Message iresse cont: oH 4 DB = oan est mise dons Y et A (il se termine par @) @374- 20 64 FE JSR $FE84 —— SETNORM... mode normal @377- 20 E4 FB JSR SFBE4 BELL2 se foit entendre @37A- 20 88 FB JSR 9FB88 KBDWAIT attend une touche @37D- 20 S8 FC JSR $FC58 HOME o380- Ge RTS BASIC De 38] & 397 ; message IMPAIR OU PAIR AVEC AND : 381: 49 4D 50 41 49 52 20 4F 55 20 4E 4F 4E 20 41 56 45 43 20 41 4— 44 00 | Pour terminer : CTRL-C RETURN, puis BSAVE AND.DEMO, ASI00. L896 e J 1 GUY-HACHETTE LANGAGE MACHINE EESEEMIZ INITIATION Toutes les lignes de I’écran inversées en un clin d’oeil ! 100 TEXT : PRINT CHR® (21): HOME 118 GOSUB 250 = 12@ ONERR GOTO 190 13@ FOR I = 1 TO 24: PRINT I; 14@ IF I = 11 THEN PRINT “ “;: INVERSE : PRINT " CONTROL E-C POUR INTERROMPRE ";: NORMAL 18@ IF I < 24 THEN PRINT ** 168 NEXT 178 VTAB 1: CALL 768 168 CALL - 198: POKE - 16368,@: WAIT - 16364,128,127: PO KE - 16368,8: GOTO 178 198 HOME : POKE 58,@: POKE 59,3: CALL - 418: GET R@: PRI | SMPILER-DEPILER NT Lo derniére valeur empi- 200 PRINT : HOME : VTAB 22: PRINT *<i> ENCORE <2> MENU D lée va devenir la pre- __ISQUETTE <3> FIN ";: CALL - 198: GET R®: PRINT miére dépilée... ce qui 210 HOME : IF R® = *1* THEN GOTO 120 permet de retourner faci- 22¢ IF R$ = "2" THEN PRINT CHRS (4)"RUN MENU* lement les 40 octets de 23@ IF R@ < > "3" THEN 208 chaque ligne. 24@ END 258 FOR I = 768 TO 768 + 33: READ R: POKE 1,R: NEXT : RE TURN 268 DATA 162,23, 198,32, 193,251, 160,8,177,40,72,200,192,4 | Ne ‘apex pos lo routing Poa altel aan et tela schsvelie deh connect 229, 169,255, 133,37,96 dans Ia ligne 260. e300- A2 17 LDX £917 X = $17 (nombre de lignes d'écran - G- 23) 0302- 8A TXA X passe dans A (sans &tre modifié) 0303- 2@ Ci FB JSR SFBCi BASCALC donne I'odresse du premier octet Q386- AW 88 LDY £308 Y = @ pour la boucle 0386- Bi .28 LDA €$28),Y Lecture de la mémoire dont l'adresse est en $28-29 + Y @38A- 48 PHA Contenu de A empilé 030B- ce INY vY=Y¥+) @3eC- ce 28 CPY £328 Y est-il egal 6 $28 (40) 7 @3@E- De Fe BNE 30308 Non : encore un tour (on va 6 $308) 6310- As ee LDY £300 Y = @ pour seconde boucle 9312- 68 PLA On récupére une valeur de la pile 0313- 91 26 STA €$28),Y On''écrit 4 l’adresse lue en $28-29 + ¥ @315- cB INY Y=Y+1 0316- ce 28 cPY £328 Y est-il égal & $28 (4G) ? 0318- De FS BNE $0312 Non : on recommence O31A- CA DEX X = X—1 (nombre de lignes) O31B- 1@ ES BPL 30302 Si on est positif, encore un tour ! 631D- Ag FF LDA £SFF O31F- 85 25 STA $25 | Curseur en haut de I'écran et retour au Basic. 6321- 62 RTS (esureserrececereseaneeresseess tue sseuE Zerg ls 208s RSEE Ee OSES TEST TO UE sees Sees VUE IT TT ae see ES UESSELSESED TREMPLIN MICRO 9 LANGAGE MACHINE [EQSEE) TETE EN BAS T maintenant, renversons les lignes de I'écran... comme cela, simplement pour le plaisir, en attendant qu'une (bonne) occasion d'utiliser la routine se présente. INITIATION 108 165 118 115 120 125 138 135 148 145 158 185 168 165 178 175 188 185 TEXT : PRINT CHR® (21): HOME : GOSUB 175 ONERR GOTO 145 E = 35: FOR I = 1 TO 24 PRINT I; SPCC EDI; IF I = 9 THEN HTAB 8: INVERSE : PRINT " CONTROLE-C P OUR STOPPER *;: NORMAL :E=E- 1 IF I < > 24 THEN PRINT “* NEXT VTAB 1: PRINT “* GOSUB 170: CALL 768: GOTO 135 HOME : VTAB 22: CALL - 198: PRINT "<i> ENCORE <2> ME NU DISQUETTE <3> FIN ";: GET RS PRINT : HOME : IF R$ = "1* THEN 110 IP R® = "2" THEN PRINT CHRS (4)"RUN MENU* IF RS < > *3* THEN 145 END CALL - 198: POKE - 16368,0: WAIT - 16384,128,127: PO KE - 16368,0: RETURN FOR | = 768 TO 852: READ R: POKE 1,R: NEXT : RETURN DATA 169,@,133,6,169,32,133,7,162,23,138,32,193,251, 168 ,@,177,48,145,6, 208,192, 48,208,247,165,6,24,105,4 8,133,6,144,2,238,7,202,16 DATA 227,169,32,133,7,169,0,133,6,162,0,138,32,193,2 51,160,0,177,6,145,48,288,192,40,208,247,165,6,24,10 5,40,133,6,144,2,230,7,232,224,24,288,225,169,255,13 3,37,96 Dans Ia routine en langage machine (lignes 180-185) expliquée ci-contre, on recopie I’écran & partir de l'adresse $2009, puis on le réécrit en commencant por la ligne du bas. On pourrait utiliser la pile (un peu comme on I'a fait avec MIROIR) de la maniére suivante : * Lire et empiler lo ligne @ * Lire et empiler Ia ligne 23 * Dépiler pour écrire la ligne @ ° ra ea pour écrire la ligne 23 .. et ainsi de suite, jusqu’d 11 et 12 (voir page 22). Si, aprés le CALL — 151 bien connu, vous tapez ces 5 instructions (uniquement ce 300: A? @2 LDA £$02 jemmmmeem qui est en gras), puis * 300 G.., RETURN, 302: 85 06 STA $06 vous constaterez que la mémolre $6 con- 304: C6 06 DEC $06 tient $FF. En effet, BPL renvoie l'odresse $304 tant que 306: WW FC BPL $0304 le résultat est égal ou supérieur 49. 308: 60 RTS GUY-HACHETTE TETE EN BAS (LIGNES 180-185) @300- A? 20 LDA £300 @302- 85 06 STA $06 initialisation des pointeurs $6-7 avec $2000 ir 2384- A? 2¢@ LDA £820 mémorisation de Pécron) sia @306- 85 07 STA $07 @308- A2 i7 LDX £817 initialisation nombre de lignes ($17 = 23) Q30A- 8A TXA X passe dans A (ovate n'est pas modifié) O30B- 2@ Ci FB JSR $FBC1i BASCALC calcule l'odresse de base O38R- Aa 08 LDY £900 Y = @ pour la boucle a rt be oan ‘ pe ; i. | Lecture écran et mémo, & partir de $2000 @314- ce INY yY=Y+1 0315- ce 28 CPY £$28 A-t-on lu 40 caractéres ? @317- D@ F7 BNE $8310 Non : encore une lecture @319- AS @6 LDA $06 Contenu de la mémoire $6 dons A @31B- 18 CLC Annulation de la retenve @31C- 69 28 ADC £928 A =A + $28 (40) @31E- 85 66 STA 206 Aremis dans le pointeur $6 @320- 90 a2 BCC $0324 S'il n'y a pas eu de retenue, on saute @322- E6 07 INC $07 Sinon iI faut incrémenter le pointeur $7 @324- CA DEX x=XxX-—1 @325- 10 E3 BPL 030A Voir bas de page précédente @327- = AD 28 LDA £%20 i] @329- 85 07 STA $07 " @328- Ao @@ LDA £900 Nouvelle initialisation des pointeurs $6 et $7 @32D- 85 26 STA $06 a 932F- A2 0@ LDX £990 Puis de X (cette fois, on part de G) @331- 8A TXA —] Le déroulement est rigoureusement 8332- 20 Ci FB JSR $FBC1 le méme que dons la premiére partie, @335- AG oO LDY £800 si in ihe aus sis incrémente X = ou lieu ie décrémenter... ao. a a6 nos ¢ Leos + et que l'on lit & adresse 1 28 ($28),Y indiquée par les pointeurs... @33B- cB INY pour écrire & celle indiquée par BASCALC, @33C- ce 28 CPY £828 @33E- De F7 BNE %@337 @340- AS 06 LDA 206 @342- 18 cLc 0343- 69? 28 ADC £928 @345- 8S 06 STA $06 @347- 98 02 BCC $034B 0349- E6 07 INC $07 ie ag we RAPPEL: L'a: met ire (ou Soe 4 18 pase £918 scr) a fadrene indguse + ¥! ainsi quond Y — 5 et que 7 contionnent 0020, O34E- De Ei BNE $0331 | Seotenw dolomémotre $2000 + yo $2005 @350- A? FF LDA £SFF “| vee @352- 85 25 STA $25 a 1 @354- 60 RTS Retour ou Bosic = — 300- A917 LDA £917 TETE.EN.BAS version 2) | 302. os 0c STA $06 304- Az oe LDX £908 3@6- 8A TXA A routine de retournement d'écran va 307- 20 Ci FB JSR = SFBC1 de $300 4 347 (L$48) et correspond aux post m4 Hi ad rnd y lignes 175-18@ du programme DEMO. ae me PHA : La partie $348-360 remplit I'écran de lignes 30F- ae DEY de coractéres. 310- 18 FA BPL $830C 100 TEXT : PRINT CHR® (21): HOME a Se LOR, eo pd TR 314- 20 Ci FB JSR 9FBCi ot eee ateses B17- A@ 27 LDY £927 Hace ae 319- Bl 28 LDA ($28),Y 115 ‘ 31B- 48 PHA 128 VTAB 24: INVERSE : PRINT “PRESSE | 3/0. 3° aoe 2 UNE TOUCHE (CTRL-C POUR PIND*; | Sin OO Mer. esis je Vine ie PRinr'** oe cee “saan 198 CALL - 198: POKE - 16968,0: waIT | 3207 20 Cl FB JRE gene ~ 16384,128,127: POKE - 16968,0 | S32 38 Sta t CALL 768:X = ABS (X - 1): GOTO 326- 31 28 STA ($28), 190 328- cB INY 135 X = X + 1: INVERSE : PRINT X:: N 329- ce 28 cPy £328 ae TF X THEN CALL 768 — =e — ao 32D- AS 06 LDA 06 145 VTAB 24:X = @: GOSUB 135: PRINT ak oe cae Seon * ENCORE ";: GOSUB 195: PRINT * aaa. /e ae ra Ree MENU DE DISQUETTE *;: GoSUB 136: | 332° 5 re PRINT " FIN > "3: CALL - 198: G 335- 91 28 STA ¢928).Y } ag re ai 337- cB INY 150 VIAB t: PRINT **: IF RO = "1" TH | S77 CO oF case PR = 03. OTD Aah . | 33A- De Fe BNE $0334 155 IF R$ = "2" THEN PRINT CHRS (4) = wae a mae RON MENU ae INK i) 160 IF R¢ < > "3" THEN 145 — ie op saaee 165 HOME : END 341- De cs BNE $0306 170 FOR I = 768 TO 864: READ R: POKE | 343° D8 C3 ix “aa I,R: NEXT : RETURN : REM LA ROU | 342° 8° FE on Sa5 TINE "TETE.EN.BAS* NE COMPRENDO | 345° = 8° oe UE LES va vemerees cererg cveaa'| SO SS See were 175 DATA 169,23,193,6,162,0,138,32,1 | 34B7 82 90 laa ee Se ee 50,165,6,92,193,251,160.39,177.4 | Ser oe er 0, 72,136, 16,250,138,92,199,251,1 | S25. Bf a eas 60,0, 104,145, 48 ne ray peor 180 DATA 200, 192,40,208,248,165,6,32 | See 3? 2? cra. Caca tie 193,251, 168,8,104,145,40,200,19 | See- o% oer =~ 2,40 ,208,248,198,6,292,224,12,28 | Seo OO pepe. 4 eeese 8,195, 169,255, 133,37,96 i. i ae 185 DATA $2,88,252,162,0,198,32,193, | See ER coe et7 251,138,185, 193, 168,39,145,48,13 | See> BO IP a Sanas 6, 16,251,232, 224,23, 208, 237,96 cc. Oo pre I 22 GUY-HACHETTE Dominique LUGAT UTILITAIRE | TRANSLIST Ou comment créer un fichier source a partir d’une simple routine en langage machine ? RENONS un exemple précis : celui de TETE.EN.BAS (ci-contre). Tremplin Micro publie le désassemblage des N instructions de cette petite routine, _ Mais sans passer par un assembleur. C’est donc la réplique exacte du listage que vous pouvez obtenir sur votre écran. La méme routine, présentée par un Assembleur (type ProCODE) permet de situer les différents branchements (boucles), d'identifier les labels et, éventuellement, grace 4 I'indication de l'adresse de départ (ORG), de modifier facilement toutes les adresses. D'oi l'intérét présenté par TRANSLIST qui désassemble — tout seu! et comme un grand — n'importe quelle routine binaire (installée 4 l’adresse $300 et de longueur inférieure & $DG), pour la mémoriser sous forme de fichier-texte... accepté par les assembleurs. Installez l'ensemble des programmes sur une disquette spéciale ProDOS. Ceux-ci sont en Basic, et au nombre de trois (plus un fichier) : * TRANSLIST (le gros morceau), @ partir de la page 25 * LABELS.CREER (court), page 24 * LABELS.LIRE (plus court encore !), page 28 * LABELS (le fichier créé par vos soins) Création des labels Pour fonctionner convenablement, TRANSLIST doit pouvoir consulter un fichier LABELS conte- nant av moins un label, Bien sdr, plus le nom- bre de labels sera grand et plus le fichier- source généré par TRANSLIST sera documenté (par contre, le temps de traitement augmentera d'autant}. Bonc ; RUN LABELS.CREER... et & vous de soisir VO5 lobels (nous vous suggérons, page 24, une premiére liste), dans la limite de... 300. Si vous désirez relire votre fichier LABELS. utili- sez UT.LABELS, POUR LES CONNAISSEURS Charger le fichier LABELS @ partir d'un Assemblour ne pose aucun probléme si colvi-ci n'utilise pos le type binaire pour ses fichiers-sources, IMPORTANT : n’oubliez pas de modifier le PRE- FIXE (ligne 110) pour qu'il corresponde 4 celui de votre disquette (variable PF$), Dés que TRANSLIST est lancé, il vous demande de lui indiquer le... ...nom du programme bingire Ou, ledit programme figure sur la méme dis- uette que TRANSLIST... et il suffit d’en toper Guactenan) le titre... ov il se trouve sur une autre, et vous devrez alors indiquer le nouveau préfixe, suivi du titre (Exemple: TOTO ou /TRUC/TOTO). En cas de faute de frappe, utili- sez la touche DEL pour effacer. Pour le reste, observez ce qui se passe sur votre écran, et tricotez un cache-col pour votre grand-mére... si vous trouvez le temps long ! Quand le nombre de labels est dlevé et que le a eee SESS eee S NSS ESS RSS SRSTTST SS SESE TRREETRRENESERREREEERESEEEeNEEEES TREMPLIN MICRO 23 Quelques idées de LABELS... ADRESSES $ | LABELS COMMENTAIRES a INDEXB Adressage indexé 07 INDEXH Partie houte 068 VARI Variable(s) poge & oF VAR2 "9 VARS 1A VAR4 1B VARS ic VAR6 1D VAR7 1E VARB 1F VAR? 20 WNODLFT Marge gauche 21 WNDWODTH | Largeur fenétre 22 WNDTOP Hout de fonéire 23 WNDBTM =| Basdetenétre 24 CH Position curseur horiz. 25 cv Position curseur vertt, 30 HMASK Masque bit/point g3D0 VECDOS Met le ProDOS en ligne G3EA INTDOS Reprise des E/Sorties O3F5 AMPER & Ampersand ($4C) G3F6 AMPERB & Partie basse O3F7 AMPERH & Partie haute cooo KBD Saisie touche sans écho cole KBDSTRB Nettoie le bit 7 $C000 co30 SPKR Activation HP DB3A STROUT Affiche une chaine par ¥ A pBSC OUTDO Aifiche Foccumyloteur F3p8 HGR2 Etfocement des pages FBC! BASCALC Catcul odresse écran C22 VTAB Déplace curseur en CV FC42 CLREOP Eff. jusque bos écran FCS8 HOME Efface Fécran FC62 cR Envoie retour chariot FCA8 WAIT Boucle dattente (Acc) FDIB KEYIN Entrée coroc, avec écho FOeC RDKEY Fait clignoter curseur FDDA PRBYTE Alf. occ. héxa sur 2 octets FDED COUT Sortie accumulateur 3 FF3A BELL Bilip 4 programme atteint la limite maximum ou’ sée, on a le temps de faire la pause-café. C’ un peu comme avec un compilateur, mais ce n'est pas une raison pour se priver des (bons) services de TRANSLIST ! Suivant la version de votre Apple, certaines instructions (et notamment les nouvelles, propres au 65C02 ... du lic) ne seront pas reconnues par TRANSLIST... et seront rempla- cées por DFB (code non interprété). Votre assembleur vous permettra de remettre de ordre dans tout cela. Et maintenant, @ vous de jouer ! Naturelle ment, si vous imaginez des améliorations capa bles de rendre cette version plus attrayante et plus performante, écrivez 4 son auteur... LABELS.CREER 100 TEXT : PRINT CHR® (21): HOME :D# = CHR® (4):CMS = "LABELS": PRIN T DS"OPEN"CMS: PRINT D$" READ" CHS Toe SqCNERR GOTO 118 1@5 FOR NB = 1 TO 30@: INPUT Lis: IN |” pur Las: INPUT L339: NEXT 1110 PRINT DS*CLOSE"CMS:NB = NB - 1: REM NB=NBR.LABELS POUR AJOUTS HOME : HTAB 5: VTAB 1: INVERSE : PRINT ": CREER OU COMPLETER ‘LA BELS’ :*: HTAB 1: VTAB 8: PRINT *ADRESSE*;:: NORMAL : PRINT * 3° : INVERSE HTAB 1: VTAB 11: PRINT "LABEL": HTAB 1: VTAB 14: PRINT “COMMENTA IRE": NORMAL : HTAB 1: VTAB 16: PRINT ";*: HTAB 3@: VTAB 6: PRIN” T "->"NB RTAB 11: VTAB 8: INPUT *":ADS: I FP ADS = "* THEN 125 IF ADS = "*" THEN HOME : PRINT D S*CAT*: END HTAB 1@: VTAB 11: INPUT "*;LA: IF LAS = *" THEN 135 HTAB 3: VTAB 16: INPUT "*;COS: I F Cos = "* THEN 140 145 PRINT D®*APPEND"CMS: PRINT ADS: PRINT LAS: PRINT COS: PRINT D8*C LOSE” :NB = NB + 1: HTAB 32: VTAB 6: PRINT NB: GOTO 125 — _ - a 8 8 8 R 108 165 118 115 128 125 138 135 148 145 15@ 155 168 165 178 175 188 185 199 195 © TRANSLIST ONERR GOTO 785: REM TRAITEMENT E RREUR CLEAR : LOMEM: 12288: TEXT : PRI NT CHR® (21): HOME :DS = CHR® (4 ):RS = CHR® (13):G% = CHRS (7):T Sa“: t*: HTAB 13: VT AB 1: INVERSE : PRINT TS: HTAB 1 3: VTAB 2: PRINT " TRANSLIST * : HTAB 13: VTAB 3: PRINT TS: NOR MAL Te = "*: FOR I = 1 TO 39:Ts = Ts + *_": NEXT :PFS = *TM8": GOSUB 820: REM CHARGE LM HTAB 30: VTAB 1: PRINT “(C) D.LU GAT": HTAB 38: VTAB 3: PRINT “VE RSION 2.1" HTAB 1: VTAB 1@: PRINT “NOM OBJE T*: HTAB 11: VTAB 13: PRINT “930 @ <--> $3CF": HTAB 3: VTAB 22: P RINT "?/VOLUME (/SOUS-VOL) POUR CATALOGUE* HTAB 11: VTAB 10: PRINT “/VOLUME /PICHIER": CALL C:H = 11:V = 18: LO = 38: INVERSE : GOSUB 165: NO RMAL :N& = PHRS IF LEFTS (N$,1)> = "?" THEN HOME : PRINT DS*PRES*: PRINT DS*CATAL OG* RIGHTS (N®, LEN (NS) - 1):CT $ = "<TOUCHE RETOUR MENU>": GOSU B 79@: RUN OGS = "30":CMS = *LABELS*:LO = 388: GOTO 245: REM CONSTANTES t REM AeHdheM RH MORNE eH REM « SP.SAISIE * REM ###HHHHH x MHI PHR$ = *"; FOR I = 8 TO LO - 1 HTAB H + I: VTAB V: POKE - 16368 »@: GET CARS: GOSUB 215 IF I = @ THEN HTAB H: VTAB V: PR INT SPC(¢ LO) IF CARS = CHR® (27) THEN 165 IF CARS = R$ THEN 285 IF CARS = CHR® (127) AND 1 >@T HEN PRINT CHR$ (8);: PRINT * ";: PRINT CHRS (6);:I1 = I - 1:PHRS = MIDS (PHR$,1,1>: GOTO 178 IF (CAR® < CHR® (33) OR CARS > C HR® (63)) AND (CARS < CHRS (65) 268 278 275 298 295 380 385 318 315 328 OR CARS > CHR$ (98>) THEN 170 HTAB H + I: VTAB V: PRINT CARS;: PHRS = PHR® + CARS: NEXT IF PHR$ = *" THEN 165 FOR P = 1 TO 20@: NEXT : GOSUB 2 15: RETURN FOR 22 = 1 TO 4:2 = PEEK ¢ - 163 36): NEXT : RETURN : REM 222! REM #éeeederneeeneeenene REM *» LECTURE ECRAN * REM vernteetenenenneenen HOME : TEXT : POKE 34,1: POKE 35 +20:LI = 1: DIM $19¢30@),S29(300 > ,S39¢ 380) ,ES9( 3808) FOR I = LEN (N%) TO 1 STEP - 1:C ARS = MID® (N$,1,1): IF CAR® < > */* THEN NOS = NOS + CARS IF CARS = */* THEN FOR I = LEN ¢ NOS) TO 1 STEP - 1:NN® = NNS + M ID® (NO$,1,1): NEXT :NO® = NNS: GOTO 265 NEXT :NOS = N®: REM CONSERVE NOM SANS DIRS IF RIGHTS (NO$,2) = *.8" OR RIGH TS (NO$,2) = *.C* THEN NOS = LEF TS (NOS, LEN (NOS) - 2) IF RIGHTS (NO$,5) = *.0BJ@* THEN NOS = LEFTS (NOS, LEN (NOS) - 5 > CALL C: HTAB 1: VTAB 12: PRINT * seaHEHHeHE CREATION SOURCE BASE* HTAB 11: VTAB 14: PRINT "# "NOS: HTAB 11: PRINT *#": HTAB 3@: VT AB 14: INVERSE : PRINT “CTL-C FI N “+: HTAB 3@: PRINT “CTL-S PAU SE": NORMAL : HTAB 17: VTAB 16: PRINT “ORG $"0G%: HTAB 11: PRI NT *#"; HTAB 1: VTAB 21: PRINT T$;: GOSU B 755 t REM #eeekeeneeedeeeN een REM * ANALYSE LIGNE 22 * REM ee eeeweteaeeeaenawan ONERR GOTO 455 FOR LI = 1 TO LO:ES®(LI) =" * _— TREMPLIN MICRO 25 TRA N Ss LI ST (suite) 325 CALL B: REM DESASSEMBLE UNE INST RUCTION SUR 1,2 OU 3 OCTETS 33@ FOR I = @ TO 3:ADS = ADS + CHRS ( PEEK (1872 + I) - 1286): NEXT : REM LIT ADR. 335 FOR I = 8 TO 9:Cis = Ci® + CHRS ( PEEK (1672 + I) - 128): NEXT : FOR I = 11 TO 12:C28 = C29 + CH RS ¢ PEEK (1872 + 1) - 128): NEX 1 Pp T : FOR I = 14 TO 15:C38 = C38 + CHRS ¢ PEEK (1872 + I) - 128): NEXT : REM LIT CODES 340 IF C2¢ =" * THEN CX = 1: GOTO 355: REM NBR.CODES 345 IF C3 =" * THEN CX = 2: GOTO 355 358 CX = 3 355 CPT = CPT + CX: REM CUMUL CODES PAR INSTRUCTION 360 FOR I = 28 TO 22:MNS = MNS + CHR $ ( PEEK (1872 + I) - 128): NEXT : REM LIT MNEMONIQUE 365 FOR I = 26 TO 34:0P8 = OPS + CHR % ¢ PEEK (1872 + I) - 128): NEXT : REM LIT OPERANDE 37@ IF RIGHTS (OP$,1> = " * THEN OPS = MIDS (OP$,1, LEN COPS) - 1): GOTO 37@: REM LES ESPACES SONT D E TROP 375 IF MNS = "22?" THEN GOSUB 418: G OTO 370: REM ASCIIS, OU 65C@2 NO N DESASSEMBLE 388 INC = INC + 1: GOSUB 425 385 HTAB 17: PRINT MNS;: HTAB 23: PR INT OP$;: REM SORTIE VIDEO 39@ SiS(LI) = ADS:S28(LI) = MNS:S39¢ LI) = Ops 395 IF MNS = “RTS” THEN GOSUB 415: G OSUB 42@: VTAB 2@: PRINT : GOSUB 425: PRINT * #"; 40@ IF CPT = CT THEN 455: REM SORTIE LECTURE 405 Cis = "":C2% = "*:C38 = "*: GOSU B 415: NEXT LI: GOTO 455 418 GOSUB 415:MNS = "DFB 9" + Ci®: R ETURN : REM ‘HEX’ EQUIVALANT & DFB’ (DIRECTIVE ASSEMBLEUR> 415 ADS = *":MN@ = *":OPS = *": RETU RN 42@ INC = INC + 1:LI = LI + 1:ESSCLI 425 438 435 440 445 455 478 475 480 : 485 498 495 580 585 510 Sis 526 $25 540 545 558 555 570 > = *#*: RETURN INC = STRS (INC): VTAB 19: HTAB (12 - LEN CINC$)): PRINT INC;*. “;: RETURN : REM ECRITURE A UNE TABULATION VARIABLE EN FONCTION DE LA LONGUEUR DU CHIFFRE. REM #4 eee HEHEHE REM * TRAITEMENT LABELS* REM XEHERHEKH HM RHR PRINT : PRINT : CALL C: PRINT “* #e##4% RECHERCHE LABELS SYSTE ME*: ONERR GOTO 475 DIM L1$(30@),L2%( 308), TAS(280),C MS$(20@): REM TABLEAUX LABELS PRINT DS"OPEN*CM$: PRINT D$"READ “CMS: REM LECTURE FICHIER PRE-EN REGISTRE FOR I = 1 TO 38@: INPUT Lis¢I>:L 19¢1) = *S" + Lis¢I): INPUT L2¢ I): INPUT CMS(I): NEXT PRINT D$*CLOSE*CMS: PRINT : CALL C: PRINT "<*I - 1"> LABELS EN S TOCK*: PRINT : PRINT "PATIENCE.. REM HeeeHR HHH R HEHE REM * REMPLACEMENTS * REM sere sehen awhtenenie F FOR J = 1 TO I - 1: REM NBR.LABE Ls FOR K = 1 TO LI: IF S38(K> = Lis (J) THEN S38(K>) = L28(J):L = L + 1:TASCL) = S38CK) +" BQU" +L 18¢J> + " ;" + CM8(J): PRINT *.* 1:2 = PEEK ¢ - 16336): REM CALCU L DU LABEL CORRESPONDANT NEXT : NEXT FOR I = 1 TO L: REM SUPPRIME LES DOUBLES IF TAS(I) = TASCI + 1) THEN 548 O = 0 + 1:TASCO) = TASCID NEXT :L = 0 REM #8444 Ee REM * LOCALISATION BRA.* REM HeHHHHEHE HUH PRINT : PRINT : CALL C: PRINT ** wwnexeHeH CALCULS BRANCHEMENTS" : GUY-HACHETTE 575 588 585 598 595 685 618 615 635 648 645 658 655 668 665 678 675 PRINT DIM Ti#(3@0): REM TABLEAU LABELS FOR I = 1 TO LI: REM RECHERCHE B RANCHEMENTS INCONDITIONNELS ET A PPELS DE SOUS-PROGRAMMES IF S28¢1) = "JSR" OR S2%(I) = "J MP" OR S2$(I) = "BRA" THEN GOSUB 595 NEXT : GOTO 615 2 = PEEK ¢ - 16336):AD% = S38(I) : FOR J = 1 TO LI: IF “" + S19¢ J) = ADS AND T1$(J> = "* THEN LA = LA + 1:Ti®(J>) = "SPG* + STRS (LA) :S38(1) = Ti$¢J): RETURN IF "$* + Si9(J) = ADS AND Tis<¢J> < > ** THEN S38(1) = T1$CJ): RE TURN NEXT : RETURN t FOR I = 1 TO LI: REM RECHERCHE B RANCHEMENTS CONDITIONNELS IF S29¢1) = *BEQ" OR S28(I> = "B NE" OR S2%(1) = "BMI* OR S28¢1) = “BPL* OR S28(I) = *BCS" OR S28 (I) = "BCC" OR S28(I> = “BVS* OR S2s¢1) = “BVC* THEN GOSUB 638 NEXT : GOTO 678 Z = PEEK ( - 16336):AD$ = S38¢I) : FOR J = 1 TO LI: IF "9" + S19¢ J) = ADS AND Ti#¢J> = "* THEN LA = LA + 1:Ti®(J) = "BCL* + STRS (LA) :S38¢1) = T19¢J)>: RETURN IF "S* + S1$(J) = ADS AND T1$(J) <> “" THEN S38(1) = T1$(J): RE TURN NEXT : RETURN : REM see ste eee ae REM * ENR.FICH.SOURCE # REM 48 48xHE MH : PRINT : PRINT *####4#8#84 ENREGI STREMENT SOURCE": PRINT : ONERR GOTO 78S CALL C: PRINT DS"OPEN SOURCE*: P RINT D®*CLOSE": PRINT DS" DELETE SOURCE*: PRINT D$*OPEN SOURCE*: PRINT D$"WRITE SOURCE*: PRINT "# "NOS: PRINT "#*: IP Tis¢i) = ** THEN T1$¢1) = "PROG" i I = 1 TO L: PRINT TAS(I)>: NE PRINT "#*: PRINT " ORG $*0G$: PR 698 788 705 710 715 725 28g 745 2 755 848 INT *#" FOR LT = 1 TO LI RE® = TIS(LT) + ESSCLT> + S2e¢LT p] IF S38(LT) < > "" THEN RES = RES + CHR® (32) + S38(LT) IF ES(LI> = *#" AND LT = LI THEN 720: REM SI RTS EN FIN DE PROG, PAS D’ETOILE EN SUIVANT PRINT RES:RES = “* NEXT PRINT DS*CLOSE": CALL D GOTO 890: REM OU CTS = "<TOUCHE> *: GOSUB 15@@: CALL C: TEXT : HO ME : END...ET DEL 1628,1820 POUR SUPPRIMER LA PARTIE FACULTATIVE DU PROGRAMME REM Waeeine erie nae eet ae REM * CHARG.TYPE PROG. * REM 362626 sears re atte PRINT DS*BLOAD*Ns* ,AS"OG$: CALL A:CT = PEEK (48840) + PEEK (4884 1) * 256: RETURN : REM CT=LONG.F ICHIER PRODOS REM eae REM * ERREURS SYSTEME * REM shee RHER HARE : PRINT D$"CLOSE*: TEXT : HOME : P RINT *ERREUR PRODOS N°“ PEEK (22 2>;: FOR I = 1 TO 120@: NEXT: R UN PRINT : CALL C: HTAB 38: PRINT C TS: POKE - 16368,0: WAIT - 16384 .128,127: POKE - 16368,8: RETURN + REM SP.SAISIE TOUCHE REM CHR HH HEHEHE HOR REM * CHARGE L.M. * REM HHeHHRHEH EH A = 12032: REM TRANSMISSION AUTO MATIQUE DE L’ IMPLANTATION B = 12043: REM DESASSEMBLAGE D’U NE LIGNE C = 12896: REM BIP PARAMETRABLE D = 12108: REM SIRENE FIN TRAITE MENT FOR ADR = 12032 TO 12143: READ C — TREMPLIN MICRO 27 TRANSLIST suite) 845 S8893833 3 918 915 920 925 930 935 ODE: POKE ADR,CODE: NEXT : RETUR N DATA 173,185,19@,133,8,173,186,1 98 ,133,9,96,165,37,72,169,25,133 ,36,169,22,133,37,32,34,252,32,1 56,252, 165,8,133,60,164,9,132,61 +162,1,32,128,254,169,1,32,99,25 4,165,58,133,8,165,59,133,9,104, 56,233,1,133,37,32,34,252,96 DATA 162,20,44,48,192,136,208,25 3,202,208,247.96,169,0,141,115,4 7,169,6,141,116,47,173,48,192,13 6,248,9,202,208,258,174,115,47,7 6,86,47,238,115,47,206,239,206,1 16, 47,208,234, 96 REM ---- PARTIE FACULTATIVE REM JHE SHIH ae REM * EDITION ECRAN * REM CHR RARER RRH CREE $ PRINT G8: PRINT : PRINT “DEMONST RATION <E>CRAN OU <I>MPRIMANTE * +: POKE - 16368,@: GET XS: IF Xs = “I* OR X98 = *i* THEN IM = 1 IF IM = @ THEN TEXT : HOME : PRI NT DS*PRE3": PRINT : INVERSE : P RINT *Ctcl-S pour stopper le lis ting... un peu de patience, merc i*: NORMAL IF IM = 1 THEN PRINT DS*PRE1": P RINT CHRS (9)*80N" PRINT : HTAB 18: PRINT *# PICHIE R SOURCE "NOS: HTAB 1@: PRINT "# “: DIM M1SC10@) ,M29(100) FOR I = 1 TO L: FOR J = 1 TO LEN (TASC1)): REM RECONSTITUTION DE S VARIABLES POUR TABULER PAS = MIDS (TAS(I),J,1>: IF PAS = " " THEN MISCI) = LEFTS (TAS(] >,J):J = J + 4:M29¢1> = MIDS (TA $(1),J): GOTO 925 NEXT J NEXT I FOR ! = 1 TO L: FOR J = 1 TO LEN (M29(1)) PAS = MIDS (M28(1),J.1>: IF PAS = ":" THEN M3$(I) = MIDS (M28¢1) 948 945 955 978 975 988 .J - £):M29C1) = LEPTS (M28¢1),J - 1): GOTO 945 NEXT J NEXT I FOR I = 1 TO L: HTAB 1®: PRINT M 1$(1);: HTAB 28: PRINT "EQU";: H TAB 29: PRINT M29CI);: IF IM = @ THEN POKE 14@3,40: REM ECRAN IF IM = 1 THEN POKE 36,40: REM I MPRIMANTE PRINT M3$(1): NEXT I: HTAB 10: P RINT "*": HTAB 28: PRINT “ORG $"0G$: HTAB 1@: PRINT *#" FOR P = 1 TO 3000: NEXT : FOR LT = 1 TO LI: HTAB 10: PRINT TiS(L T);: HTAB 20: PRINT S28(LT);: HT AB 38: PRINT S3$(LT): FOR P = 1 TO 5@@: NEXT : NEXT : HTAB 18: P RINT "#*: HTAB 10: PRINT *# FIN’ PRINT GS: HTAB 3@: PRINT *<M>enu <B>asic ":: POKE - 16368,0: GET X$: IF X8 = "M" OR X8 = *m" THE N PRINT Ds*/TM8/MENU* PRINT : END LIT.LABELS 100 118 120 TEXT : HOME :D® = CHRS (4): PRIN T DS*PRE3*: PRINT DS*OPEN LABELS ": PRINT D$"READ LABELS": ONERR GOTO 128 FOR I = 1 TO 300: INPUT AS: INPU T BS: INPUT C$: HTAB 1: PRINT I; : HTAB 12: PRINT BS:: HTAB 25: P RINT “EQU";: HTAB 30: PRINT "S"A $;: HTAB 48: PRINT *; "CS: FOR J = 1 TO 200: NEXT J: NEXT I PRINT D®*CLOSE": END 28 GUY-HACHETTE Votre bibliothéque INFORMATIQUE par Clément RENARD © INITIATION A L'ALGORITHMIQUE (Belin) Pour Chantal et Patrice Richard, tout ensei- gnement sérieux de la programmation doit reposer sur une initiation systématique & lalgorithmique. C'est une idée qui a fait son chemin. De nombreux organismes (Ministére de |'Education Nationale, dons le cadre du plan "Informatique pour tous", Renault, Cré- dit Lyonnais, etc.) l'ont adoptée. Lo premiére édition de cet ouvrage, parue en 1981, avait bénéficié d'un excellent accueil, mais il est probable que cette nouvelle édi- tion — entiérement revue (exercices plus = nombreux, mise en page originale...) — fera le bonheur d'un public vorié : lycéens de pre- miére et de terminale, étudiants, ensei- ae informaticiens professionnels... et autodidactes. Bs Apprendre a x Pour concevoir un programme, il convient Structurés par biiacn § algo: ithunes évidemment, dans un premier temps, Aladin’: donalyser le probléme, puis de concevoir algorithme permettant d'‘aboutir le plus simplement possible, & la solution. les auteurs proposent donc une méthode dopprentissage accessible & tous les débu- tants, quelle que soit leur formation : ALADIN 195 exercices corrigés... mais aussi des explications claires, souvent illustrées par des tableaux significatifs. Rappelons que les auteurs ont obtenu, en 1984, pour leur ouvrage Programmatique, le Grand prix de la littérature micro-intormatique. (Mditions Balin, 224 pages, moins de 100 F). © APPLE 2: TRUCS ET ASTUCES (MICRO APPLICATION) Une traduction de |'édition allemande, publiée par DATA BECKER. On peut la recommander & tout utilisateur d'Apple... débutant. On y apprendra en effet, en 300 pages, tout ce qu'il faut savoir pour tirer le meilleur parti possible d'un Apple Ile ou fic : élé- ments fondamentaux du Basic, périphériques, accés mémoire et langage machine (rudiments), programmes graphiques, amélioration des structures d’un programme, etc. Le plan de ce recueil est judicieux et le résultat intéressont. Un regret: les pages sortent directement d'un traitement de texte... sans aucune recherche typogrophique. C'est dommage, mais cette lacune n‘entome en rien le sérieux de |'ouvrage. (Micro Application, S80 pages, moins de 150 ¥). 29 2s | ProDOs~ INITIATION Vous désirez 10@ TEXT : PRINT CHRS (21): HOME | DEMO | 118 FOR I = 768 TO 695: READ R: POKE I,R: NEXT visualiser, une 128 DATA 32.88,252, 168,23, 185,104.3,159,212,7, 136,208.24 dune, les n 7,169,23,133,37,32,34.252, 169.29. 133,36,.32,228,251,3 lignes d'une 2,111,253,224.0,248 69,32, 199,255.32, 167,255, 166.62, routine en 165,.63,134,58,133,59,165,.59 langage machine ? 138 ‘DATA 72,165.58,72,168.0.177.58,72,169,1,32,99,254,10 4,201,96,208.10,169,48,141.217,7,169,54,141,216,7.16 Cest tout simple : 9,34,193,96,104,178,104,32,36.237,172,8,192.16.251,1 il suffit d'utiliser 92.155, 148, 16,192,248, 154,208 VISUMEM 140 DATA 201,96.193,196,218,197,211,211,197,168,8,5,24.1 -168, 196,197, 160,196, 197,208, 193,218,212, 186 Ce hah atc en 150 INVERSE :T9 =": :*: PRINT TS: PRINT * va non seulement VISUMEM ": PRINT TS: NORMAL installer VISUMEM 169 PRINT : PRINT "IL SUFFIT DE TAPER CALL 768 POUR ACCE a partir de DERA LA ROUTINE VISUMEM.": PRINT : PRINT "ENSUITE, A l'adresse $300, PPUYER SUR UNE TOUCHE POUR VI-SUALISER CHAQUE LIGNE. icis NGuk wen trier *": PRINT : PRINT "ESCAPE POUR CHANGER D/ADRESSE, ET comment dela RETURNPOUR TERMINER. * ‘ Saline 17@ PRINT : PRINT “ACCES DIRECT PAR L’AMPERSAND (&-RETUR . N) A CONDITION DE TAPER CES TROIS POKES:": PRINT : P Si vous désirez RINT “ ~ POKE 1013,76:POKE 1014,0:POKE1015,3° conserver VISUMEM 18@ PRINT : PRINT "LE PROGRAMME VOUS DEMANDERA L‘ ADRESSE Sere tonna do DEDEPART (HEXA), DESASSEMBLERA LA PREMIEREINSTRUCTI fichier 8 ON ET AFFICHERA SON ADRESSE DE-CIMALE.* f 198 PRINT : PRINT “ENFONCEZ UNE TOUCHE S.V.P, *:: CALL - lancez la DEMO 198: GET R$: PRINT : CALL 768 par RUN, choisissez 200 HOME : VTAB 22: PRINT *<1> ENCORE <2> MENU DISQUETTE l'option 3 (FIN), <3> FIN “s: CALL - 198: GET RS: PRINT puis tapez : 218 HOME : IF RS = *1* THEN 15¢ BSAVE VISUMEM, 220 IF R$ = *2* THEN PRINT CHR® (4)"RUN MENU” A768, L128 230 IF RS < > *3* THEN 200 s EXPLICATION DE LA ROUTINE (DATA) 0300- 20 58 FC JSR $FCS5S8 C'est le HOME du Basic 0303- AO 17 LOY £817 Y = $17 (23) ; nbre d’octets 6 officher 0305- 89 68 03 LDA $0368,Y Adresse de lecture du texte + ¥ 0308- 99 D4 07 STA $07D4,Y Adresse-écran d'dcriture + Y (VTAB24) OSOB- 88 DEY Y=Y—1 o3s0c- 00 F7 BNE $0305 SiY <> G@GOTO $305 030E- A? 17 LDA £¢17 A = $17 (23... pour VTAB24) ss 30 GUY-HACHETTE (MAREE RERSARAONAAsAeeLTSeNaTsosesEeSEETTSSINTIST ESSN SSA ES ET SAAS se PeREsesnsesHeNeSsesEsesTDaESATETeSH 0310- 85 25 STA 925 CV (position verticale du curseur) = $17 0312- 20 22 FC JSR sFC22 VTAB ve déplocer le curseur en CV O315- AY 1D LDA £&$1D A = $10 (29) 0317- «85 24 STA $24 CH (position horizontale du curseur) = $1D 0319- 20 E4 FB JSR SFBE4 BELL2 pour | bip O31C- 20 6F FD JSR S$FD6F Une autre entrée de GETLIN (nbre de carac. dons X) 031F- EO 00 CPX £900 X (longueur du nombre saisi) est-il égal 40 ? 0321- FO 45 BEQ = $0368 Si oul GOTO RTS (Basic) 0323- 20 C7 FF JSR $FFC7 LZMODE (@ mode) 0326- «820 A7 FF = JSR) SFFA7 GETNUM (récupére nombre hexa) 0329- AG 3E LDX $3E 032B- AS 3F LDA 83F Récupération des voleurs en $3€-3F 032D- 86 3A STX $3A ef écriture en $3A-38 032F- 85 3B STA $3B 0331- AS 3B LDA 3B Accumulateur chargé avec $3B 0333- 48 PHA Valeur de A empilée 0334- AS 3A LDA = $3A A chargé avec $34 0336- 48 PHA Valeur également empilée 0337- AO 00 LDY £900 Y¥ = @ pour adressage indexé 0339- Bi 3A LDA ($3A).Y Lecture @l’odresse $3A-3B + Y 0338 48 PHA Valeur empilée 033C- Ag 01 LDA £801 A=) 033E- 20 63 FE JSR $FE63 LIST2 désassemble A instruction (1) 0341- 68 PLA A récupére le sommet de la pile 0342- C9 60 CMP E860 Est-ce $60 (RTS) ? 0344- 00 0A BNE $0350 Non : GOTO 359 0346- A? 30 LDA £830 Oui : clors A = $30 (0 mode inverse)... 0348- 8D D9 07 STA $07D9 affiché 4 lo place du @ normal 034B- A? 36 LDA = £836 A = $36 (6 mode inverse)... 034D- 8D DB 07 STA s07D8 aftiché 4 lo place du 6 normal 0350- A? 22 LDA £822 A = $22 (34) 0352- +85 24 STA $24 CH = $22 0354- 68 PLA Récupération du sommet de la pile 0355- AA TAX A passe dons X 0356- 68 PLA Derniére récupération 03S7- 20 24 ED JSR $%ED24 LINPTR affiche lo valeur décimale de l'adresse 035A- AC 00 CO LDY scooo KBD (caractére frappé dans Y) 035D- 10 FB BPL $035A Pas de carectére, on attend (GOTO 35A) O35F- CO 9B CPY £993 Est-ce $98 (ESCAPE) ? 0361- = 8C 10 CO STY $C010 Ecriture KBDSTRB (pour lire une autre touche} 0364- FO 9A BEO = $0300 Si ESCAPE GOTO $300 0366- D0 Co BNE $0331 Ou bien GOTO $331 pour autre saisie 0368-60 RTS FIN DE PROGRAMME 0369- Cl C4 0374- 0) AC 0368- 02 0376- C4 CS o36C- CS D3 0376- AO C4 De $369 4 37F, texte suivant - 28 O37A- C5 Do on CS AO o37C- Ci D2 ADRESSE DE DEPART : o3s71- 08 O3S7E- 04 0372- 05 18 O37F- BA EN UTILISATION NORMALE, sans programme DEMO, taper BLOAD VISUMEM, puis CALL 768. Vous pouvez aussi utiliser |; AMPERSAND (voir DEMO). & TREMPLIN MICRO 31 INITIATION LANGAGE MACHINE [— MIXAGE PAGE 1 PLUS PAGE 2 U NE technique simple permet de mixer les deux pages graphiques en un temps record... grace a |’extraordinaire rapidité du langage machine et a |’opération logique ORA. Comment méler vos pages graphiques ? POURQUO! ORA PLUTOT QUE AND ou EOR ? Imaginons que le premier octet de la Page 1 soit (en binaire) 66000011 et que le premier octet } de Ia Page 2 soit 6001001. II s'agit d’obtenir, en mixant les deux données, 00001011. Laissons de cété les quatre premiers zéros (inutiles dans cet exemple), et regardons le résultat obtenu & partir des opérations logiques AND, EOR et ——& = OS: oo11 901 1 oao11 On constate immédia- tement que seul ORA 1 @090 1 100 1 | 3 on | fournit le résultat — ou le mixoge! — AND EOR OQRA | escompté... dio le = court programme que 'ég @ 1 Ch i | 1 0 1 | | voici... 63e0- AY 20 LDA £928 7 @302- 85 a7 STA $07 @304- A? 40 LDA £948 $6 et $7 contiennent GO 20 pour lire lo Page 1 @38@6- 85 09 STA 389 (avec LDA ($06), Y). @308- A° 6A LDA = £988 $8 et $9 contiennent 0G 40, adresse de la Page2 O30A- 85 06 STA $86 e3ec- 85 68 STA 308 J O30E- A2 2 LDX £820 _] Nombre de pages 0310- Ae o8 LDY £800 _ poor rf po i eas ov Cette boucle permet de lire chaque octet de la Page I, de le e316- 9%! 28 STA ($08) ‘y mixer avec octet correspondant de la Page 2, puis d’écrire — @318- CB INY i. le résultat en Page 2 (en écresant l’ancien). @319- De F7 _— BNE $8312 _| poonge 4 a 4 por Incrémentation de lo partie haute des adresses @31F- CA DEX X=xX—1 0320- 08 EE BNE $0318 Si X différent @ GOTO $310 @322- 68 RTS FIN DE PROGRAMME 6 were eeeeesnssse SAR sA TSE E ANTES ERA K ae Ee awe See R Se eSE EE ETE SENSES ESSE SSeSesSSSSSSSUSSUSSS Se SUE SET SNEESS 32 GUY-HACHETTE | UTILISATION MIXAGE (LM) peut étre employé en mode direct... ou dans un programme en Basic. Dans un cas comme dans l'autre, le processus sera le méme : ° BLOAD MIXAGE * BLOAD IMAGE}, A$2000 © BLOAD IMAGE2, AS40090 CALL 768 BSAVE IMAGE3, A$4000, L$2000 TABLE DE VERITE Voici la table de vérité de ORA (si ou moins | des 2 bits est 4 1 le résultat est 1). ou; a) 1 g0)]/o/}1 LS ee A exeensurcnenssesesursas TREMPLIN MICRO Cette courte démonstration vous permettra en outre d’installer MIXAGE & portir de l’adresse $300, Pour sauver cette routine LM, choisissez l'option (B)ASIC du menu final, puis tapez un simple BSAVE MIXAGE, A$30@, L$23 108 110 138: 148 158 168 178 188 198 208 218 238 248 258 278 288 308 316 348 MIXAGE-DEMO Ds = CHRS (13) + CHR® (4):G% = CHRS (7): GOSUB 330: ONERR GOTO 118 HGR : HGR2 : HCOLOR= 3: TEXT : PRINT CHR® (21): HOME : INVERSE : HTAB 1@: VTAB 8: PRINT ": MIXAGE GRAPHI QUE :*: NORMAL : HTAB 1: VTAB 12: PRINT * Nous allons voir deux images,*: PRINT PRINT * l’une en page 1, |’autre en page 2,": PRIN T : PRINT * et enfin, leur mixage en page 2.": VT AB 20: PRINT “Appuyez sur <ESPACE> aprés chaque arre t": PRINT : HTAB 18: VTAB 4: PRINT “¢ >": GOSUB 318 REM Sesame REM * DESSIN PAGE | . REM sa a rare atta HGR :MA = 23:DI = 6:IN = 5@:AA = 9@:BB = 90:ST = .5: FOR I = 1 TO MA STEP ST:A = (¢ SIN (I) * 18) +1 # 1 / DID + IN + 4@:B = «¢ COS C1) #» 30) + 1 #1 / DED + IN: HPLOT AA,BB TO A,B:AA = A:BB = B: NEXT REM ##HHHH EKER REM # DESSIN PAGE 2 . REM Heed H ee GOSUB 910: HGR2 :A = 1@:B = 270:C = 195: HPLOT A.A T O B,A: HPLOT B.A TO B,C: HPLOT B,C TO A,C: HPLOT A,C TO'A,A: GOSUB 310 CALL 768: REM VERS ROUTINE LM t GOSUB 318: TEXT : HOME : HTAB 3: VTAB 23: PRINT *<E> NCORE <B>ASIC <M>ENU DISQUETTE “:: POKE - 16368,0: G ET X$: IF X$ = "M" OR X$ = "m* THEN PRINT D9"RUN MEN ur IF X$ = “E* OR X% = "e" THEN 118 IF X® = "B* OR X® = “b" THEN HOME : END POKE - 16368,@: VTAB 4: HTAB 19: GET X$: PRINT CHRS (7): RETURN ? FOR ADR = 768 TO 882: READ CODE: POKE ADR,CODE: NEXT : RETURN DATA 169,32,133,7,169,64,133,9,169,8,139,6,193,8, 162 ,32,168,@,177,6.17,8,145,8, 200,208,247, 238,7,238,9,2 02,208, 238,96 33 UTILITAIRE P CATALOGUE N E vous privez surtout pas du Super.catalogue que vous propose Guy DESENFANT, mais attention ! i] ne fonctionne que sous ProDOS, avec le 65C02 et une carte 80 colonnes ! Pour le reste, nous vous en laissons la surprise... et sur deux colonnes ! 108 TEXT : PRINT CHR® (21): HOME : P RINT CHRS (4)"PRE3": PRINT CHRS (1): GOSUB 925: ONERR GOTO 87@ 105: 110 REM HHRHHHHHMHHEN EHH EHMH Ee 115 REM * ACTIVER LES CARAC SOURIS * 120 REM HHHNHHHHSHHHHH HEUER N RH 125: 138 I% = CHR® (15):NS = CHR® (14):M% = CHRS (27):XM$ = CHR® (24) 135 PRINT I%: PRINT Ms 140 : 145 REM €###HH HEM ERMEM EHH 15@ REM * TRAITS HORIZONTAUX “ 155 REM ###4eeeHeHH EHH 168 : 165 TRS = *": FOR I = 1 TO 1@:TRS = TR® + *LLLLLLLL*: NEXT :TR® = LE PTS (TR8,78) 178 RTS = **: FOR I = 1 TO 10:RTS = RT® + “SSSSSSSS": NEXT :RT® = LE FTS (RTS,78) 175 + 188 REM 185 REM 198 REM 195: 208 FOR I = 1 TO 20: VTAB I: HTAB 1: PRINT "2": VTAB I: HTAB 88: PRI NT *_": NEXT I 205 : 210 REM FHeHHHH NERO 215 REM * BCL.TRACE TRAITS HORIZON # 220 REM five Wee He HERE Ld Rehehchshehehshedsdeteidtehdh hhh aehohahel * BOUCLE TRACE TRAITS VERT « AEE EAE EE Guy DESENFANT 238 VTAB 1: HTAB 2: PRINT TRS: VTAB 3: HTAB 2: PRINT RTS: VTAB S: HT AB 2: PRINT RTS: VTAB 7: HTAB 2: PRINT RTS 235 VTAB 6: HTAB 18: PRINT *2": VTAB 6: HTAB 26: PRINT "2": VTAB 6: HTAB 48: PRINT "2*: VTAB 6: HTAB 57: PRINT *2": VTAB 6: HTAB 65: PRINT "2° 248 : 245 REM *##RH RMN HEENEHE ERR 25@ REM * BARRE VERTICALE CENTRALE * 255 REM feHHRHHR HONE E Ee 268 : 265 FOR J = 8 TO 20: VTAB J: HTAB 48 : PRINT “2": NEXT : VTAB 21: HTA B 2: PRINT TRS 278: 275 REM *##HH HHH 260 REM * DESACTIVE CARACT. SOURIS * 28S REM FRKEHEHHRHHHHHHHN ORR 298 : 29S PRINT NS: PRINT XMS 300 : 305 REM HHeHHRHRHHHRE HRA 318 REM ¥ CURSEUR INVISIBLE * 315 REM *#4hHEeee HHH OHM RRA 320 : 325 POKE 2043,168 330 AS = "CATALOGU E*:A = LEN (AS) 335 VTAB 2: POKE 1403, INT (88 - A) / 2: PRINT AS 348 VTAB 4: HTAB 3: PRINT "Nom du vo lume: ": VTAB 4: HTAB 6@: PRINT 34 GUY-HACHETTE “Blocs libres: * S BS = "FICHIER*:C® = *TYPE":Ds = *DATE* VTAB 6: HTAB 3: PRINT BS: VTAB 6 : HTAB 20: PRINT C8: VTAB 6: HTA B 32: PRINT DS: VTAB 6: HTAB 42: PRINT BS: VTAB 6: HTAB 59: PRIN T C$: VTAB 6: HTAB 71: PRINT DS VTAB 23 DIM FICHIERS(51> gs REM #+HH eH EMER Hee REM * ON PREND PREFIX COURANT * REM HHHRHA RH RHR RHR PRINT CHRS (4)"PREFIX": INPUT PF xe 400 REM HAHRHHCH EH RHEH MH 405 REM # OUVERTURE DU FIC CATALOG * PW errterrrrrrrrrirririrerriri rs 415: PRINT CHR$ (4)*OPEN*PFX$" ,TDIR" PRINT CHRS (4)"READ"PFXs INPUT VOLUMES INPUT TITRES INPUT BLANC? VTAB 23:1 = 1 VTAB 23: INPUT FICHIER@C(I): IF F ICHIERS(I) = ** THEN 465 PICHIERS(1) = LEFTS (FICHIERSCI) 28> +" " + MIDS (FICHIERS (1),31,9) VTAB 23: IF FICHIERS(I) < > "" T HEN I = I + 1: GOTO 45@ VTAB 23: IF I > 27 THEN FLAG = 1 INPUT BLOCS 475 BLOC® = MIDS (BLOCS,15,3) 488 PRINT CHR® (4)"CLOSE* $ SR8S3R8H 38 S$ 8 SHERSES 490 REM Wieser eae ee ere eee VERS SP. AFFICHAGE * 518 GOSUB 748 51S VIAB 23 528 : 525 REM HHS RHHHE THREE Ee $38 REM * MENU . S35 REM HH HENNE HEHEHE HEHE eee 548 : 545 IF FLAG = 1 THEN VTAB 22: HTAB 2 : PRINT "<i> Page n* 1 <2> Nouve au PREFIX <3> Quitter*: CALL ~ 1 96: GET RS: IF ASC (RS) < 49 OR ASC (R$) > 51 THEN 545 IF (FLAG = 1 AND RS + *1*) THEN VTAB 22: HTAB 2: PRINT SPCC 70): GOSUB 685: GOSUB 740 IF (FLAG = 1 AND RS = °3") THEN HOME : END IF (FLAG = 1 AND R® = *2") THEN VTAB 22: HTAB 2: PRINT SPCC 78): GOTO 618 IF FLAG < > t THEN VTAB 22: HTAB 2: PRINT "<1> Nouveau PREFIX <2 > Quitter*: CALL - 196: GET R®: IF ASC (R$) < 49 OR ASC (RB) > 5 @ THEN 565 IF (FLAG < > 1 AND R@ = "1") THE N VTAB 22: HTAB 2: PRINT SPC¢ 48 >: GOTO 618 575 PRINT 588 IF (FLAG < > 1 AND R® = "2") THE N HOME : END ses : SOO REM FHKHRA MRAM HHA S595 REM * CHOIX D°UN NOUV. PREFIX * 6O0 REM HHKHRHERRHEH OHH RHE ERROR 605 618 VTAB 22: HTAB 2: INPUT “Nouveau PREFIX: " ;PFX8 615: 620 REM HHRHHHMKEHH RHEE 625 REM * POUR LES ETOURDIS | *# 630 REM HHHKHHHEHHOHHMM RHR e Re 635 : 64@ IF LEFT® (PFX®,1) < > "/" THEN P FXS = */* + PFXS 645 PRINT CHRS (4)*PREFIX"PFX® 658 GOSUB 685 655 CLEAR : GOTO 368 668 : 665 REM HHH eee RHH HEHEHE REA 67@ REM # ON EFFACE LA PAGE o 675 REM HRRHH AMM HRM Hn mH 688 : 68S FOR J = 8 TO 28 69@ VTAB J: HTAB 2: PRINT SPC( 37): VTAB J: HTAB 41: PRINT SPC( 37) 695 NEXT 70@ VTAB 4: HTAB 19: PRINT SPC( 37): VTAB 4: HTAB 75: PRINT" * 705 VTAB 22 71@ RETURN 715 : — CATALOGUE 720 REM WWM HIE H HHH 725 REM # AFFICHAGE PREMIERE PAGE # 738 REM HHHEHNHE HEU 7383 7486 J =1 745 VTAB 4: HTAB 19: PRINT VOLUMES: VTAB 4: HTAB 75: PRINT BLOCS 750 IF J < 14 THEN VTAB J + 7: HTAB 3: PRINT FICHIERS(J) 755 IF J > 13 AND J < 27 THEN VTAB J - 6: HTAB 42: PRINT FICHIERS(J> 76@ IF J > 26 AND FLAG THEN GOSUB 77 5: GOTO 515 765 IF J = I AND FLAG = ® THEN RETUR N 77@ J = J + 1: GOTO 758 775 CALL - 198: VTAB 23: HTAB 1: PRI NT “Pour la 2° page appuyez sur une touche.": POKE 2043,168: GET R$: IF R$ = *" THEN 775 768 VTAB 23: CALL - 864 785 GOSUB 685 79@ VTAB 4:, HTAB 19: PRINT PFX$: VTA B 4: HTAB 75: PRINT BLOCS 795 3 BOO REM Ket HH HHH HEHE H 805 REM » AFFICHAGE DEUXIEME PAGE *# B10 REM wise aieden esti namie He eae 815: 628 J = 27 625 IF J < 40 THEN VTAB J - 19: HTAB 3: PRINT FICHIERS(J) 830 IF J > 39 THEN VTAB J - 32: HTAB 42: PRINT FICHIERS(J) (suite et fin) 835 IF J = 1 THEN RETURN 840 J = J + 1: GOTO 825 B45 : B50 REM sH#AHHHHEH EMH RHE HHH ne 655 REM * TRAITEMENT UES ERREURS « BEO REM KeeHHHHEHHHHEHEHHH HH 865 : 870 CALL 768 875 IF PEEK (222) = 255 THEN RUN 680 IF PEEK (222) = 6 OR PEEK (222) = 7 THEN VTAB 22: CALL - 864: CA LL - 198: VTAB 22: HTAB 1: PRINT "Fichier non trouvé “: FOR A = 1 TO 3000: NEXT : VTAB 22: CALL - 864: GOTO 618 IF PEEK (222) = 8 THEN VTAB 22: CALL - 864: CALL - 198: VTAB 23: HTAB 1: PRINT “Erreur d’ Entrée /Sortie": FOR A = 1 TO 3000: NEX T : VTAB 22: CALL - 864: GOTO 61 e IF PEEK (222) = 16 THEN VTAB 22: CALL - 864: CALL - 198: VTAB 22 + RTAB 1: PRINT "Erreur de synta xe": FOR A = 1 TO 3000: NEXT : V TAB 22: CALL - 864: GOTO 618 VTAB 22: CALL - 864: RESUME 980 : 905 REM #hHxH HH RHR RHI iem HH 910 REM * TRAITEMENT ERREURS LM # 91S REM te ek H Hm HH dea eN eae 928 : POKE 216,0: POKE 768,104: POKE 7 69,168: POKE 77@.104: POKE 771,1 66: POKE 772,223: POKE 773,154: POKE 774,72: POKE 775,152: POKE 776,72: POKE 777,96: RETURN a UU diy ouez-vous avec les mots ? = . = QUI nous adressera le meilleur pro- 4 gramme de JEU (sur Apple) n’utilisant que des mots (mots mélés exclus) ? VOUS... peut-étre ? GUY-HACHETTE P APPLICATION. CMMI NESTOR if ORGANISATION 4’ D’UN TOURNOI PROBLEME : Tirage du calendrier des rencontres, jouges sur une ou plusieurs journées, suivant le nombre d’équipes engagées. Chaque équipe doit évidemment jouer une fois contre chacune des autres. Mais il y a une contrainte : aucune des équipes ne doit étre ame- née 4 jouer deux matchs consécutifs (pour lui permettre de récupérer). MA SOLUTION : Valéatoire plus la logique ! Vous noterez au passage que le nombre de rencontres est fourni par la formule suivante (ou N = nombre de participants) : NR = (N — 1) * N/2. Pour le reste, suivez le déroulement du programme... et vous comprendrez. II est sans doute possible de faire mieux, mais & quel prix ? Telle qu’elle se présente, cette routine pourra probablement aider certains organisateurs & mettre au point leur calendrier. 10d: Je n'ai prévu que | 199 TEXT : PRINT CHRS (21): HOME : DIM ASC19@,1),BXC191, 20 équipes, mais il est 1):D8 = CHRS (4):TS = "*: FOR I =1 TO 20:TS = TS + possible d’aller plus loin +" :Vg = Ve + * ": NEXT en modifiant DIM (nom- 110: gion Agere rs ~ 120 REM #k#eeHHHEHH eH la, ligne 160 (nombre | 190 REM * NOMBRE D’EQUIPES # dquipes) 140 REM seHeeenreweneneenene 15@ : 16@ PRINT DS*PRE3*: PRINT : HOME : PRINT “ORGANISATION D “UN TOURNOI (5 A 2@ EQUIPES)": PRINT TS 170 E = @: VTAB 4: CALL - 958: CALL - 198: INPUT "NOMBRE D’EQUIPES ";N®: IF NS = “* THEN 680 199 : Si vous préférez lo 188 N = VAL (NS): IF N <5 OR N > 20 THEN 170 formule indiquée plus 199 B=N-1 haut, allez-y gaiement : 20@ E = £ + B:B = B - i: IF B < > @ THEN 200 B= (N—1)* N/2 210 VTAB 1: POKE 1403,53: INVERSE : PRINT E* RENCONTRES et supprimez la ligne A ORGANISER:": NORMAL 200 ! 220 : — quvecdaeearurerssseeseo TREMPLIN MICRO 37 ORGANISATION D’UN TOURNOI (suite) 230 REM Henan RRM M RHR 240 REM * REPARTITION . 250 REM +hteteeneanaewehannn 268 : 278 POKE 34,3: PRINT : HOME 280 VTAB 4: INPUT "NOMBRE MAXIMUM DE RENCONTRES PAR JOUR 1 ":N®: IF NS = "" THEN 288 298 NM = VAL (N®): IF NM > E THEN 280 30@ : 310 REM ##eHeeeeHeHeeeeHee ey 320 REM + TRAITEMENT * 330 REM Hee RMNH HAE HEHE 7 35@ HOME :M = @:Y = M:R = M:M1 = M:M2 = M FORT =1TON-1 IF I > 1 THEN PRINT LEFTS (V$,(I - 1) ¥ 4); 380 FOR J=1+1TON 390 PRINT CHR® (64 + I)"-" CHRS (64 + J)" "; 400 M = M+ L:A8CM,@) = I:AK(M,1) = J 41@ NEXT : PRINT : NEXT 420 V = PEEK (37) + 2 438 VTAB 2@: HTAB 1: INVERSE : PRINT “MELANGE ALEATOIRE EN COURS": NORMAL : CALL - 198 440 FOR I = M TO 1 STEP - 1:A = INT ¢ RND (1) # 1 + 19:3 %CI,@) = ASCA,@):BRCI,1) = AXCA.1):A%CA.0) = AXCT,O) tTARCA,1) = ASCI.19: NEXT 450 CALL - 198: VTAB 20: PRINT “UN PEU DE PATIENCE S’IL VOUS PLAIT!* 460 X = 0: IF F THEN GOSUB 700 470 F=1 48@ X = X + 1: IF X > M THEN 460 49@ IF Mi = BX(X,@) OR M2 = BRCX,1) OR BX(X,@) = @ OR BS (X.1) = @ THEN 480 500 IF Mi = BXCX,1) OR M2 = BX(X,@) THEN 480 SiO Y=Y¥+ 1:F =@ i ARCY,@) = BRCX,@):ANCY,1) = BRCX,1):BR(X,8) = O:BSCX =e M1 = AXCY,@):M2 = ASCY,1) IF Y <M THEN 480 PRINT : IF V > 15 THEN HOME : GOTO 570 VTAB V: CALL - 958 FOR I = 1 TO Y: PRINT CHRS (64 + AX(I,@))*-* CHR (6 4+ ANCI,DDD8 8s R=R+ i: IF R= NM THEN R = @: PRINT NEXT : PRINT HTAB 44: VTAB 23: PRINT "<E>NCORE <B>ASIC <M>ENU DIS QUETTE “:: POKE - 16368,0: GET XS: IF X$ = *" THEN 4 76 18 PRINT : IF X% = "M" OR X$ = *m* THEN PRINT DS*RUN ME NU" 8 $22 38822 nan 270 : POKE 34,3 protége les lignes de titre 290 : L'IF peut étre sup- primé si on le désire, 359 : Les variables sont mises (ou remises) & zéro. 429 : Sur quelle ligne est le curseur ? V est utilisé plus loin (ligne 569), 44@ : Mélange aléatoire tout & fait classique. 469-480 : Essoyez de comprendre comment se déroule le programme. Quand on o épuisé Io liste des rencontres non programmées... sons en avoir trouvé une seule répondant aux condi- tions des lignes 490 et 500, F est égol 4 1... ef on saute au sous- programme ‘“'DECA- LAGE". 700: Sans ce sous- programme, il y a “plan- tage” pur et simple. 710 : On autorise six essois... mais si la chose se produit, relancez le systame | S228 718 IF X8 = *B" OR X$ = "b" THEN TEXT : HOME : END IF X$ = *E" OR X® = "e* THEN 178 GOTO 688 REM tt#seteeeenenneneeaes SP. DECALAGE # REM He RH IF Mi < > A%(1,@) AND M2 < > AXC1,1) AND M1 < > AXCI +1) AND M2 < > AXC1,0) THEN Mi = A%(1,0):M2 = AXC1,1 >: FOR I = 1 TOY - 1:A%C1,0) = ASCT + 1,0):A%CT,1) = ASC] + 1,1): NEXT :ASCY,@) = M1:ASCY.1) = M2: RETU POP :P = P + P: IF P < 6 THEN 350 durée d’un match. NOMBRE D’EQUIPES 18 F-G EXEMPLES Chaque équipe bénéficie, entre chaque rencontre, d’un temps de repos qui est égal ou plus grand que la 45 RENCONTRES A ORGANISER: NOMBRE MAXIMUM DE RENCONTRES PAR JOUR: 15 A-B A-C A-D A-E A-F A-G A-H A-I B-C B-D B-E B-F B-G B-H B-I C-D C-E C-F C-G C-H C-I D-E D-F D-G D-H D-I E-F E-G E-H E-I Bed c-J D-J E-J F-J G-J H-J Jt I-J UN PEU DE PATIENCE S’IL VOUS PLAIT! P-H F-I G-H G-I H-I MELANGE ALEATOIRE EN COURS D-J A-F D-E B-H E-F B-J D-G E-J G-H C- A-D F-H B-C A-J F-G E-H I-J C-H B-I C- D-I C-J A-G C-E A-B E-G B-F C-D G-J A- NOMBRE D‘EQUIPES 7 21 RENCONTRES A ORGANISER: NOMBRE MAXIMUM DE RENCONTRES PAR JOUR: 11 A-B A-C A-D A-E A-F A-G B-C B-D B-E B-F B-G C-D C-E C-F C-G D-E D-F D-G E-F E-G F-G MELANGE ALEATOIRE EN COURS UN PEU DE PATIENCE S’IL VOUS PLAIT! B-G A-C D-E A-F B-C A-E C-F D-G A-B E-F C-D A-G B-D C-E B-F C-G D-F B-E F-G A-D E-G A-J aQan urn azo TREMPLIN MICRO 39 Votre bibliothéque INFORMATIQUE 1 parctement reNaRD Chorles Rubin, l'cuteur, éprouve visiblement une grande sympothie pour l'Apple /t Nous aussi. Soyons clairs : son livre s‘odresse indiscutablement aux inconditionnels de |'Apple //, et plus particuliérement 4 ceux désirant améliorer les performances de leur machine. SS Le SN Ss et WW U'Apple fi fétero-t-il ses dix années d’existence ? On peut raisonnablement le penser, tont lo date est proche : avril 1987, Combien d’ordinateurs personnels sont ou seront un jour dans ce cas ? Répondre 4 la question, c'est forcément reconnaitre 4 |'Apple // une longévité excep- tionnelle... mais aussi comprendre la fidélité des "Apple- maniaques™ pour leur micro. Mais revenons & |'APPLE SANS FIN, utile synthése des centaines d'études publiées sur les divers matériels fonc- tionnont sur Apple 1. Cet ouvrage est la traduction de The Endless Apple, paru en 1984, en langue anglaise, mais |'édition fran- aise fournit un répertoire actualisé des importateurs de produits disponibles sur le marché francais. Le désir d'améliorer les prestations d'un ordinateur per- sonnel est générclement lié & la nécessité de mettre au point une application spécifique. De ce point de vue, le découpage du livre de C. Rubin est excellent, puisqu'll tient précisément compte des applications et non des types de produits, Comment maintenir ie tamilie Apple f! @ la pointe des performances La présence d'un index en rend lo consultation encore plus agréable. Alors, je ferai mienne lo conclusion du com- muniqué de presse ; si vous voulez élorgir votre horizon informatique, vous découvrirez dons ce livre jusqu'ob ‘Apple peut vous mener | Je sais que de nombreux lecteurs (je n‘oublie pas les lectrices... qu’elles se rassurent !) de T.M. sont amends 4 utiliser le MO5, présent dans la pluport des écoles. Pour certains, i! s‘agit seulement de montrer 4 un enfant comment lancer et utiliser un jeu. D’autres tentent (souvent avec bonheur) d’adapter sur MOS des programmes mis au point sur leur Apple... ou vice versa. D'ot Ja présence, dans les colonnes de T.M., de rubriques consacrées 4 d'autres machines, Dans le cas présent, l'outeur, Jean-Baptiste Touchard, parait au moins aussi curieux que les génies qui, depuis neuf ans, ont percé, un 4 un, les petits secrets du 6502... sauf qu'il s‘agit ici du 6809. ll _affirme que son livre est sans danger... ef c'est vrai, mais je vous assure que sa démarche est non seulement intéressante, mais conseillée d celles et & ceux — et, il en existe beaucoup — qui désirent faire de l'étude de |"informatique un passionnant jeu de découverte personnelle. 40 GUY-HACHETTE Y UTILITAIRE [Comes 65CO2 et IMAGEWRITER II HISTO.TEXT VOS GRAPHIQUES EN MODE "TEXT" L est facile, avec le nouveau 65CG2 — qui permet d'utiliser les caractéres "SOURIS” — de réaliser des graphiques en mode TEXT. II est non moins facile d’éditer de tels graphiques sur la nouvelle imprimante IMAGEWRITER II. Si vous en doutez, essayez le programme de Clément Renard ! QUESTION 1 : Qu’obtiendra-t-on avec un Apple lle non transformé ? R: Ne cherchez pas : un écran assez curieux, sur lequel les caractéres correspondant aux Mouse characters apparaitront en mode inverse... et sous leur forme habituelle (les colonnes de grisés seront des “WW”, les colonnes noires des "NN", le filet du bas une suite de "L", etc.), . QUESTION 2 : Pourra-t-on néanmoins éditer ce graphique sur une IMAGEWRITER Il ? R: Bien s0r, puisque celle-ci posséde les caractéres SOURIS. QUESTION 3: Et avec une DMP... ov une IMAGEWRITER normale ? R: La, je vous attendais : c'est possible, mais en créant d’abord, 4 partir du programme paru dans le n°6 de T.M., des caractéres personnalisés. Ce n'est pas difficile... et ¢a marche. Parution de notre solution dans deux mois (si vous étes pressé, adressez-moi une enveloppe timbrée 4 votre adresse et je vous ferai parvenir une photocopie du court programme 4 €crire.... avec les fameux coractéres en DATA(s)). NESTOR. RESULTATS COMPARES DES ANNEES 1965 ET 1986 1000 + 900 - 800 - 700 -| 600 -j $00 + 400 + 300 + 200 + 100 -| JANV FEVR MARS AVRI MAI JUIN JUIL AOUT SEPT OCTO NOVE DECE TREMPLIN MICRO 4) H ISTO.TEXT (suite) 1@@ TEXT : PRINT CHR® (4)"PRE3": PRINT : HOME 1@5 DIM MC12,1),L8(24),V(12,1): GOTO 158 118: 115 REM FHRHHMHEHER RHEE OHM RRR Ree 12@ REM ** CARAC MOUSE OR NOT MOUSE an 125 REM HHA H MEH H HH 138: 135 PRINT CHR® (27):: INVERSE : RETURN : REM CARACTERES SOURIS 14@ PRINT CHR® (24);: NORMAL : RETURN : REM CARACTERES N ORMAUX 145: 15@ GOSUB 455: HOME i855 : 160 REM SHOR AHHH EHH HHH 165 REM #* + GRANDE DONNEE/COEFFICIENT ## 170 REM #HA#HRMEHHH MEME H 175 : 168 X = @: FOR I = 1 TO 12 185 IF VCI,@> > X THEN X = VCI,@) 198 IF VCI,1) > X THEN X = VCI,1) 195 NEXT 200 CO=X / 20:E = X:M=9 205 IF X > 9999 THEN X = INT (X / 18): GOTO 205 218 E =X 215 FOR I = 1 TO 12:MC1,@) = VCI.@) / CO:MCI.1> = VCI,1) / CO: NEXT 220 : 225 REM HHH HHEHR HAHN MEME HREM 230 REM ** TRACE DU GRAPHE ” 235 REM FHHHEHEHEHOHHHH HEHE MEHR 240: 245 FOR I = 2 TO H STEP 2:VL8 = LEFTS (V$,5 - LEN ¢ STRS (E>) 258 L9(I) = VL$ + STR$ (E) + " -_ : PRINT VLSE:L$ = ** 255 L@¢cI + 1) = * ait 26@ GOSUB 135: HTAB 7: VTAB I: PRINT "L_*: HTAB 8: VTAB tts PRINT?” 265 GOSUB 140:E = INT (X / 18 * M) 27@ IF E < 1@@ THEN E = VAL ¢ LEFT® ¢ STRS (X / 10 # MD, 4)) 275 M = M - 1: NEXT 288 TITRES = “RESULTATS COMPARES DES ANNEES “ + STRS (Ai > + * ET " + STR (A2) 285 L8(1) = LEFTS (V$,(85 - LEN (TI$)) / 2) + TIS: VTAB 1: HTAB 1:: PRINT L9(1) 290 VTAB 23: HTAB 1: PRINT L$(23);: VTAB 1: PRINT 295 GOSUB 135 300 L9¢22) = LEFTS (V®,7): HTAB 8: FOR I = 1 TO 72: VTAB ": VTAB I: POKE 1403,8 42 ATTENTION ! Lo corte 80 COLONNES est indispen- sable, Le programme ne fonctionne convenabie- ment que sur Apple Ile + 65C92 ou Apple Iic. ll est réellement trés facile d’obtenir les carac- teres SOURIS, comme vous le montrent les lignes 135 et 149. De Ia ligne 180 & Ia ligne 195, on recherche quelle est la plus grande valeur (x). Si elle dépasse 9999 (4 chiffres}, on la divise par 10... et encore par 10 si cela est nécessaire. Dans le cas de petites valeurs, on affichera 2 décimoales. Pendant le trace de I’his- togramme, le program- me crée les 23 lignes (L$) qui permettront de Vimprimer... sans passer par |'intermédiaire d'une recopie d'écran 80 colonnes, (sserestresssearesneeens GUY-HACHETTE d @« Py ae oe j= hk Re £ =X = = v =o Phy Ue > a J ve @ es = = H ¢ =o De a ¥e5 Ft z | = tT Ee Le V= Me dd F @ no aed o£ — | IMAGEWRITER 2 Notez que l'on utilise le mode unidirectionnel et que l'on modifie l'interli- gnage (115), L’accés aux coractéres souris est obtenu par : PRINT CHRS$(27) ; CHR$(38) On retrouve les caracté- res mormaux avec un: PRINT CHR$(27) ; CHR$(36) UTILISATION Tel qu'il est, ce pro- gramme permet de com- porer les résultats de deux années (complétes ou non), mais il est évi- demment possible de lutiliser & d'autres fins. Cest 14 qu'intervient imagination | ‘SSSSSESSSSSSSCSEESSSSET TREMPLIN MICRO 385 318 a 15 SR2885ER8 & 8 883 395 408 405 416 415 428 425 438 435 448 445 458 455 468 465 478 475 488 485 498 495 22: PRINT "L*;:L9(22) = L9¢22) + "L": NEXT FOR I = 1 TO 12: FORK = 2 TO H 2=H + .5 - MCI.0): IF K ¢ 2 THEN L9(K) = L8(K) + * *: GOTO 320 POKE 1403,3 + I # 6: VTAB K: PRINT “WW";:LS(K) = L9< K> + ‘Www" 25H + .5 - MCI,1): IF K ¢ 2 THEN L8CK) = L8CK) + * *: GOTO 338 POKE 1403,5 + I * 6: VTAB K: PRINT "NN";:L9¢K) = Lax K> + "NN" IF I < 12 THEN L89(K) = L@(CK) + * * NEXT : NEXT GOSUB 148: VTAB 22: PRINT REM CARN MMNN RENE REM ## IMPRESSION an REP 1649698 9 EEE GE ea : VTAB 24: HTAB 8: INVERSE : PRINT “PRESSER UNE TOUCHE POUR IMPRIMER CETTE PAGE (CTRL-C = A REFAIRE) ";: N ORMAL : CALL - 198: GET R$: VTAB 1: PRINT "*: IF Rs = CHRS (3) THEN 150 IF R® = CHRS (27) THEN 788 HOME : PRINT CHR$ (21): PRINT PRINT CHRS (4)*PR£1": PRINT : PRINT CHRS (9)"8@N": P RINT CHRS (27)">*; CHR® (27)*T15"; CHR® (27)"E"; FOR I = 1 TO 23: IF I = 1 OR I = 23 THEN PRINT L8¢I> : GOTO 415 PRINT LEFTS (L9(1),6); FOR J = 7 TO LEN (L9(1)):LS = MIDS (L8(1),J,1): IF L ¢% = "U" OR L$ = "_" OR L$ = "W" OR LS = "L" OR L$ = “N* THEN PRINT CHRS (27); CHR® (38);:L8; CHRS (27): C HRS (36);: GOTO 418 PRINT LS; NEXT PRINT : NEXT PRINT CHRS (4)"PR£O" PRINT CHRS (4)"PRE£3": PRINT : HOME : GOTO 188 si éleigner pes votre imprimante, ajouter tie = PRINT CHES(27) "c" de mie 6 0 du logiciel. REM eee eHHHH HHA HH HERE E UE nee REM ## INITIALISATION “ REM beeen ? Vs = **: POR 1 = 1 TO 20:V8 = V8 + * ": NEXT L9(23) =" JANV FEVR MARS AVRI MAI N JUIL AOUT SEPT OCTO NOVE DECE* H = 21: REM HAUTEUR MAXIMUM COLONNE : REM HHHHRHE HEHEHE RRR ER RE RREREE REM xs SAISIE DES CHIFFRES ” FREI 6064696 6 eve rE IIHR ee t HOME : PRINT *SAISIE DES DONNEES*: GOSUB 135: PRINT 7 Jur 43 HISTO.TEXT (suite) *LLLLLLLLLLLLLLLLLL": GOSUB 148 5@@ POKE 1403.16: PRINT "Taper un simple RETURN quand le chiffre est bon" 585 POKE 1403,16: GOSUB 135: PRINT “a*;: GOSUB 140: PRIN T " en cas d’erreur -- ":: GOSUB 135: PRINT *A";: GO SUB 148: PRINT * pour affichage du graphe* 510 VTAB 22: PRINT : PRINT “DESIREZ-VOUS LIRE UN FICHIER CO/N) ? "33 CALL - 198: GET R$: PRINT "*: IF R& = * O* OR R$ = *o” THEN GOSUB 740 515 VTAB 6: CALL - 958 528 ABS = "1985 1986": IF Ai AND A2 THEN ABS = STR® (Al) + CHR® (32) + STR® (A2) 525 VTAB 22: PRINT : PRINT “ANNEES CONCERNEES, SEPAREES PAR UN ESPACE: *ABS;: POKE 14@3,43: CALL - 198: INPU T “*;ANS 530 IF PEEK ¢ - 16286) > 127 THEN 518 535 IF PEEK ¢ - 16287) > 127 THEN 678 540 IF ANS = "" THEN ANS = ABS: CALL - 998: POKE 1403,43 : PRINT ANS 545 IF MID@ (AN®,5,1) < >“ " THEN S25 55@ Al = VAL ¢ LEFTS (ANS,4)):A2 = VAL ( RIGHTS (ANS,4)) : IF Al < 190@ OR A2 < 198@ THEN 525 555 VTAB 6: HTAB 6: PRINT Ai;: HTAB 19: PRINT A2 568 FOR I = 1 TO 12 565 VI =" "; IF I > 9 THEN VIS = ** 57@ GOSUB 575: GOTO 560 575 VTAB 7 + I: PRINT VISI".* LEFTS (V$,25);: HTAB 12 - LEN ¢ STR® (V(1,0))): PRINT VCI,.@);: HTAB 25 - LEN ¢ STR (V(I,1))): PRINT V(I,1)3: RETURN 58@ POKE 1403.30: PRINT Al;: GOSUB 135: PRINT *U";: GOSU B 140: INPUT " ";RS 585 IF PEEK ¢ - 16286) > 127 AND I > 1 THEN I = I - 1: G OTO 565 598 IF PEEK ¢ - 16287) > 127 THEN 670 595 IF RS = *" THEN CALL - 998: GOTO 605 600 V(1,8) = VAL (R®): GOSUB 575 685 POKE 1403,45: PRINT AZ;: GOSUB 135: PRINT “U";: GOSU B 140: INPUT * ";RS 61@ IF PEEK ¢ - 16286) > 127 THEN CALL - 998: GOTO S88 615 IF PEEK ¢ - 16287) > 127 THEN 678 620 IF R$ = "* THEN 630 625 V(I,1) = VAL (R$): GOSUB 575 630 PRINT : IF I = 12 THEN VTAB 22: CALL - 958: PRINT "P RECISER SI CORRECTION OU AFFICHAGE DU GRAPHE (CTRL- E) = ENREGISTREMENT > ";: CALL - 198: GET RS: VTAB 1 9: PRINT "*: IF RS = CHR® (5) THEN 74@ 635 IF I = 12 THEN 610 64@ NEXT 645 : 44 FICHIER Vous pouvez mémoriser vos données (fichier on ne peut plus clossique). Un conseil: donnez un titre trés simple & vos fichiers. Exemple H85.86 (qui évoque les deux années concernées). SAISIE Pomme ouverte + return permet dvoller directe- ment & l'offichoge du graphique. Pomme fermée + return renvoie & Titem pré- cédent Noubliez pos de mainte- nir la touche pomme enfoneée quand vous appuyez sur RETURN. lo routine saisie est assez originale, méme si elle présente quelques défouts. Elle permet notamment de savoir quelles valeurs ont été modifiées... mais seule- ment dans lo mesure ob l'on n‘utilise pas “Pomme fermée + return”... cor les corrections éventuel- les modifient évidem- ment |'écran de base. Vous comprendrez tout cela quand vous saisirez des données... (cee ens REUTER ESSO TAS EARS GUY-HACHETTE EVASION : GSO REM AHEM NRE N MMH N RK Hl vest pos frés focile | 655 REM ww PAS DE DONNEES: TERMINE! «# {souf par un RESET) de | 669 REM RHeRnHHAHAREEHEHHEHERRHNEAKEREMERAY sortir du programme de 665 : Seite peront une con | 67@ IF NOT VC1,0) AND NOT V¢1,1) TREN HOME : INVERSE : C tie naturelle, aprés l'affi- ALL - 198: VTAB 12: PRINT " DESOLE MAIS IL N’Y A PAS chage de 'histogramme. DE DONNEES POUR TRACER UN QUELCONQUE GRAPHE *: NORM A ce moment, si vous AL : POP : GOTO 775 répondez por ESCAPE... | 675 RETURN puis RETURN, vous vous 688 : retrouvez bel et bien 4 la GBS REM 8 Ha eH EM Hae ee eae ligne 790... mais un 698 REM #* LECTURE D’UN FICHIER “ GOTO 1000 vous resti- GOS REM steed eH EHC er eae aE tuera — infoctes — tou- 768 : tes vos données ! 705 IF F® = ** OR PEEK ( - 16286) > 127 THEN RETURN 718 VTAB 28: PRINT : PRINT CHR® (4)"OPEN"FS: PRINT CHRS (4)*READ*FS: INPUT Al: INPUT A2: FOR I = 1 TO 12: IN PUT VCI,8): INPUT V¢I,1): NEXT : PRINT CHRS (4)>*CLOS E" FS: RETURN 715 : 720 REM HNAHAHKHHHMHM KHMER AER eee 725 REM «# MEMORI SATION ne 730 REM FHFENHHH RHEE EHR HARE 735 : 748 VTAB 22: CALL - 958: INPUT “TITRE DE VOTRE FICHIER " sFs 745 ONERR GOTO 77@ 75@ IF R8 = “O* OR RS = *o" THEN 705 755 IF F® = ** OR PEEK ¢ - 16286) > 127 THEN Si5 768 VTAB 2@: PRINT : PRINT CHR® (4)"OPEN*FS: PRINT CHRS (4)"WRITE*FS: PRINT Al: PRINT A2: FOR I = 1 TO 12: P RINT V(I,@): PRINT VCI,1>: NEXT : PRINT CHRS (4)"CLO SE*FS: GOTO 675 765 : LIGNE 776 778 POKE 768,104: POKE 769,168: POKE 778,104: POKE 771,1 ———— 66: POKE 772,223: POKE 773,154: POKE 774,72: POKE 77 Classique routine de trai- 5,152: POKE 776,72: POKE 777.96: CALL 768: GOTO 515 tement des erreurs, évi- | 775 ; eae tegPlontoge oprés un | 7@@ CALL - 198: POKE - 16968.0: WAIT - 16984,128,127: PO é KE - 16368,0: TEXT : HOME SAUVE

Showing the first 100000 of 152142 characters.

mp.ls