Skip to main content

tremplin micro newsletter issue 16

  • PublicationApple Periodicals
  • Pages70
  • Sourcetremplin_micro_newsletter_issue_16.pdf
← Magazines tremplin micro newsletter issue 16
/ 70
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
tremplin micro Les tables de formes . Amper command — MIDI pour votre Apple’ Se G Sept ee ste Se Gx tremplin | SOMMAIRE Apple et ProDOS (noms et logos) sont des marques dépo- sées d'Apple Computer, Inc, BIMESTRIEL Le numéro : 33 F Abonnement d'un an : 190 F (6 numéros) Tous nos prix sont indiqués TTC. EDITIONS JIBENA Direction-Rédaction : Editions JIBENA Guy-HACHETTE La Petite Motte — Senillé 86100 CHATELLERAULT. Téléphone : 49-93-66-66 PUBLICITE : Raymond JULLIEN (1) 45.75.41.81 Commission paritaire : Les revues qui choisissent d'étre téellement au service du Lecteur, en ne lobligeant pas glaner. dons plusieurs magazines, les fenseignements concernant sa machine, ne bénéficient pas du numéro de Commission Poritaire, et pas davantage des tarifs pos- toux réduits. TREMPLIN MICRO — Bimestriel — Cest une publication des Editions JIBENA, 4, rve de 4a Cour-des-Nowes, 75020 PARIS ~ S.A. ou Copitol de 3600000 — imprimé par CITE-PRESS/PARIS — Service de vente : Presse-Promotion, tel: 49.93.65.03 — Dépbt legal la date de porution — Inscrip- ‘ion lo Commission Poritaire des Publica- tions et Agences de Presse : en cours — Directeur de la Publication : Guy-Clément COGNE — Diffusion N.M.P.P, Ss euEEENInEEEnieeieneeaeel lo Disquette TREMPLIN MICRO contient tous les programmes du numéro, ainsi que les sour- ces trop longs pour étre publiés les colonnes de la revue. TREMPLIN MICRO Avec la collaboration de : NESTOR, Jean-Paul VERPEAUX. ARGOS, Claude AUBRY, Marcel COTTINI, Francois GALLET, Roland JOST, Yvan KOENIG, CLUB MICROTEL MOURENX, EN TOUTE FRANCHISE... avec GUY-HACHETTE z Une calculatrice décimale, binaire, hexadécimale utilisant la souris ...... 2.002. .6 662 c cece eee ees 3 ¢€ TRES SIMPLE — Claude AUBRY poursuit son amusante initiation (angage ¢surlie¢S) Case conplique st wuctmiusesatannes 13 SUR LES TABLES DE FORMES (Comment ¢a marche et comment les afficher ?) ....... 7 DATA-SUITE (Autour des données en DATA) 19 DATA-S1 (Affichage de l'adresse décimale de doniiéex'e en DATA) . 20 Mieux connaitre LES VECTEURS D'INTERRUPTIONS SOUS PRODOS PRODOS (article trés documenté de Marcel COTTINI).... 21 LOGIQUE ELEMENTAIRE EN BASIC (avec le Microtel Club Mourenx) ..... 30 AMPERCOMMAND (Utilitaire de Francois GALLET) ................ 37 LES ROUTINES D'ENTREE/SORTIE D'UN CARACTERE ............... 51 LA SOURIS ET L'ASSEMBLEUR (Dernier article) 55 RENDRE LAM AU GS (Yvan KOENIG joue et gagne !)............ 59 C TRES FORT... avec BORLAND . * BULLETIN D‘ABONNEMENT ET DE COMMANDE . LES LIVRES 'axssoowsereengy i RE QOS ME LS OF We S44 NOK ee EN TOUTE FRANCHISE Ob en étes-vous ? Quels sont vos projets immédiats en matiére d'informatique personnelle ? Avez-vous I'intention d’écrire des programmes et, si oui, en utilisant quels langages ? Vous 6tes-vous laissé tenter par |'Apple //GS ou avez-vous préféré conserver votre Apple // ? J'aurais pu formuler ces demandes — et beaucoup d'autres — sous forme de questionnaire. Peut- étre m'y résoudrai-je plus tard. Pour l'instant, je préfére susciter des lettres que je lirai, je vous le promets, avec une grande curiosité. J'espére que vous mettrez aussi ce courrier a profit pour me dire ce que vous pensez du contenu actuel de TREMPLIN MICRO. Bon nombre de nos correspondant(e)s — acquéreurs d'un Apple //GS— se disent “désorientés” par cette machine. D'autres commencent a en utiliser les ressources et écrivent méme des routines intéressantes. Nous publierons évidemment les meilleures dans de prochains numéros, mais nous tenons 4 ne pas décevoir les possesseurs d’Apple /le et lc, et nous continuerons donc 4 donner la priorité & des programmes fonctionnant sur TOUTES les machines de la gamme APPLE //. D'aucuns nous ont reproché d'accorder une place trop importante au langage machine, mais la majorité de nos Lectrices et Lecteurs (du moins celles et ceux qui nous écrivent) approuve cette démarche et TREMPLIN MICRO se félicite d’avoir incité des centaines et des centaines d'Applemaniaques 4 s‘intéresser 4 la programmation du 6502, puis 4 celle du 65C02. Je souhaite personnellement que leur nombre grandisse encore : manipuler les octets constitue un jeu absolument passionnant et il est dommage, quand on ala chance de disposer d'un micro aussi convivial que I'Apple //, de se pri- ver de ce plaisir. Bien sir, ce n‘est pas aussi facile que le prétendent les génies de l'informatique (parfaitement, elle en compte quelques-uns !), mais on y parvient avec un peu de persévérance et avec l'aide de petits bouquins comme “Le 6502 pas 4 pas”, “Clins d'ceil av 6502" et nos fascicules de “Routines”. A l'intention des Lectrices et Lecteurs disposant 4 la fois d'un Apple et d'un IBM PC ou compatible, nous signalons les ouvrages destinés au second, ainsi que certains logiciels trés performants et d'un prix abordable (c'est le cas de ceux réguligrement lancés par Borland). |! semble que cette entorse au TOUT-APPLE ne provoque pas trop de réactions épidermiques chez les inconditionnels de la Pomme. On notera que nous parlons peu du Mac, sauf dans les rubriques “livres” : a vous de nous dire ce que vous en pensez. TREMPLIN MICRO désire rester une revue particuliérement vouée 4 la programmation, et singulié- rement a celle des machines de la longue série des APPLE //. L'arrivée du GS, ordinateur person- nel hybride, modifie certes les données : est-ce un Apple // ou un petit Mac ? La question restera encore posée quand, enfin débridé, le GS PLUS nous montrera ce qu'il est possible de faire avec un 65816, les outils du Mac... et des logiciels a la hauteur des ambitions de la technique et de la Rom. En attendant, programmons le 65C02 et considérons le GS comme un beau joujou, capable d’ému- ler le processeur de son prédécesseur... ou de jouer les petits Mac, comme un grand ! BONNE RENTREE, A VOS CLAVIERS ET TRAITEMENTS DE TEXTES POUR ECRIRE A “TREMPLIN MICRO"... ET RENDEZ-VOUS ICI, DANS DEUX MOIS ! Guy-HACHETTE. GUY-HACHETTE PUTIUTARRE oa Roland JOST VOTRE CALCULATRICE La calculatrice JR86 n’est pas une calculatrice comme les autres. Elle réside dans votre APPLE // et peut étre mise en ceuvre grace 4 la souris. JR86 utilise la notation polonaise inverse et la pile chéres G Hewlett-Packard. En mode déci- mal, elle donne accés 4 toutes les fonctions mathématiques usuelles (les fonc- tions trigonométriques sont réduites au sinus, cosinus et tangente ; les angles sont 4 exprimer en degrés). En mode hexadécimal et binaire, les calculs se font sur des entiers positifs inférieurs ou égaux & 65535 ($FFFF en base 16 ou % 11111111 11111111 en base 2). De plus JR86 permet d’effectuer des opéra- tions sur un octet : opérations logiques AND, ORA et EOR, décalages et rota- tions ASL, LSR, ROR et ROL. MISE EN CEUVRE : E, Vérifier les programmes (ce qui est trés — — ; facile quand on passe par la disquette A. Taper le programme BASIC (liste 1) et le SIGNATURE de notre ami Yvan KOENIG). sauver sous le titre JR8&6. 8. Nous ne publions pas le source de la rou- tine SP.CALC, beaucoup trop long, mais il UTILISER JR&6 : figure sur la disquette Tremplin Micro. Vous devrez donc taper le code directement, utilisation de la calculatrice en mode déci- comme suit (liste 2) : mal ne présente aucune difficulté particu- CALL - 151 liére : entrer un nombre en cliquant les tou- 6000 : 20 BE DE 20 E3 DF 85 19 etc... ches numériques, puis cliquer la touche de la Sauver par un BSAVE SP.CALC.0,A$6000, fonction 4 exécuter. Les utilisateurs de calcu- L$156. latrices HP se retrouveront en terrain connu. Pour les autres, rappelons que la notation polonaise inverse permet de se passer de parenthéses et que, par exemple, le calcul de (1 + sin (45)) * 3 s'effectue comme suit : C. Taper la liste 3 (table de formes) : CALL - 151 7000 : 1800 32 00 4206 etc... Sauver : BSAVE TABCALC.0,A$7000,L$1B2. D. Entrer enfin la liste 4 (représentation gra- < tangle est exprimé'endegrés) phique de la calculatrice) : 1 CALL - 151 a, 6039: A9 20 85 04 20 63 etc... 3 oe : BSAVE CALC.COMP.0,A$6039, * L$C2F. 5 = CALC.COMP.G@ est long 4 entrer au clavier, Resullate S12131894: mais c'est indispensable et le résultat en Voici maintenant quelques applications plus vaut la peine... spécifiques 4 la calculatrice JR86 : AAQUsOEnUs ERENT OE soR een RARasEeR ETAT EAE eRe R ERA Eee e seo EEO eRUALeNEABEEe EsoeseeeseouEsesEaEEEoSEEENeES a GUY-HACHETTE ee rors diane dann cae inane dei Settee and dan ead En plus des opérations mathématiques classi- ques en décimal, la JR86 permet de travailler en base 2 ou 16, et aussi d’effectuer des opérations sur un octet. En voici quelques exemples : 1° Conversion d'une adresse négative en nombre positif : Reliquat des temps héroiques, on trouve encore dans de nombreux listings des commandes du genre PEEK (- 16384) ou CALL - 3100. Pour con- vertir ces adresses négatives en nombres posi- tifs il suffit d’effectuer les opérations suivantes : Prenons l'exemple de - 16384, adresse de lec- ture du clavier 16384 CHS ——» ~16384 HEX ——» $C000 DEC ——» 49152 Effectivement un PEEK (- 16384) et un PEEK (49152) sont équivalents en Applesoft. 2° Les opérations logiques : AND, ORA et EOR EXEMPLES: 1 (ENTER) ASL 12 ASL :4 ASL 8 ASL 1 etc. 6 En effet ASL effectue une multiplication par 2, LSR une division par 2. Pour les rotations, le résultat dépend de la valeur de la retenue au départ. Pour mettre la retenue 4 zéro (donc simuler |'instruction CLC) faire comme suit : @ (ENTER) LSR_ : le zéro tombe dans la retenue. Pour mettre la retenue 4 un (SEC) on fera : 1 (ENTER) LSR : un 1 tombe dans la retenue. On pourra maintenant entrer un nombre, puis effectuer l'opération ROL ou ROR. JR86 permet d’effectuer des opérations logi- ques sur des nombres inférieurs 4 256, donc codés sur un octet en hexadécimal (8 bits en binaire). EXEMPLE : faire un ET logique (AND). HEX pour passer en mode hexa co (192 en décimal) ENTER 7F (127 en décimal) AND résultat = 40. 3 Les décalages (ASL, LSR) et rotations (ROR, ROL) : Le microprocesseur 6502 (ou 65C@2) posséde les 4 instructions suivantes : ASL : décale les bits d'un octet vers la gauche. Le bit 7 est perdu, un zéro rentre dans le bit 0. LSR : décale les 8 bits vers la droite : le bit 0 est perdu, un zéro rentre 4 gauche dans le bit 7. ROR : rotation 4 droite d'un octet : la retenue entre dans le bit 7 et le bit 0 tombe dans la retenue. ROL : rotation 4 gauche d'un octet : la retenue va dans le bit @, le bit 7 sortant tombe dans la retenue. * Le programme JR86 : Le programme BASIC effectue le charge- ment des différents modules en Assem- bleur, gére le déplacement de la souris, réalise la saisie des nombres et effectue les différentes opérations | mathématiques (sauf les opérations logiques). * Notons au passage deux routines : — Ligne 425 : conversion d'un nombre hexa de 4 chiffres, stocké en mémoire 4 partir de l'adresse Al, en nombre décimal. — Ligne 430 : conversion de binaire en déci- mal d'un nombre de 16 bits, stocké en mémoire a partir de l'adresse A2. LE PROGRAMME SP.CALC.O : Ce programme en Assembleur 6502 était néces- saire pour permettre un affichage rapide en mode haute résolution. || permet de plus la con- version rapide de nombres hexadécimaux ou binaires en décimal (comparer avec la lenteur relative de l'opération inverse effectuée en BASIC par les lignes 425 ou 430) et l’accés aux opérations logiques. Le source de ce programme est bien commenté et le lecteur pourra s'y repor- ter pour plus de détails. (Suite page 6) TREMPLIN MICRO 5 TABCALC.O : C'est une table de formes renfermant les caractéres 4 afficher en haute résolution (flé- che souris, chiffres 0 49, lettres A a F, espace, % et $). CALC.COMP.O : L'image graphique de la calculatrice est sto- ckée sur disque sous forme condensée. Cette image est décompressée aprés chargement par un petit programme assembleur logé entre $6039 et $608A (technique empruntée 4 la revue NIBBLE). Le lecteur qui doit saisir les divers programmes au clavier économise ainsi l’entrée d'environ 4K de nombres hexadécimaux supplémentaires. Méme aprés lecture du manuel de la souris, il n'est pas évident de programmer la souris. Voici les différentes instructions 4 incorporer dans un programme BASIC : 1° Recherche de la carte souris Un programme utilisant la souris doit pouvoir détecter la présence de celle-ci. APPLE recom- mande de mettre la carte dans le port 4, mais ce n'est pas obligatoire, et le programme appelant doit pouvoir localiser le port conte- nant l'interface. Si l'interface souris est dans le port n l'octet $CnOC contient $20 et I'octet $CnFB = $D6. II suffit donc de tester le contenu de ces 2 octets pour n compris entre | et 7. Ceci est réalisé en ligne 875. 2° Activation de la souris Avant toute utilisation il faut exécuter les instructions : PRINT CHR$ (4)'PRE"SL : od SL est le numéro de port de l'intertace Souris. PRINT CHR$(1) : pour activer l'intertace. PRINT CHR$(4)"PREG" : pour aiguiller les sorties vers l’écran. 3° Lecture de la souris PRINT CHR$(4)"IN£"SL_: input provenant de la souris INPUT’; H,V,S : : saisie de la position de la souris H = position horizontale : g= < H <1023 V = position verticale <V <1023 S = statut du bouton £S5<4 4° Désactivation de la souris PRINT CHR$(4)"IN£G” : pour réactiver le cla- vier PRINT CHR$(4)"PRE"SL : envoi de caractéres vers la carte souris PRINT CHRS(@) : désactive la souris PRINT CHR$(4)"PRE"@ : envoi des caractéres vers |'écran. ET POUR CONCLURE VOICI QUELQUES A. Les touches A,B,C,D,E et F ne correspon- dent pas 4 des registres, mais aux chiffres hexadécimaux 10 4 15. Elles ne sont 4 utili- ser qu’en mode hexadécimal. Les décalages et rotations ne peuvent étre effectués que sur des entiers inférieurs ou égaux 4 255. Sinon affichage du message d'erreur (EEEEE clignotant). C. Les autres opérations en base 16 ou 2 ne portent que sur des entiers pouvant étre codés sur 2 octets, c'est-d-dire strictement inférieurs 4 65536. Si vous ne disposez pas de la souris APPLE, uti- lisez les fléches pour déplacer le curseur et la touche (ENTER) pour valider une commande. Bien sdr, avec la souris, C'EST MIEUX ! GUY-HACHETTE aaleeetlelhahatataahaaiaa el eaee eet eal - LISTAGE 1 IREG |, 162" ye Patachmatind cS as 260 REM ***#%* TRAITEMENT ERREURS - 100 REM *#*** JR86 : CALCULATRIC batted E SOURIS *x** 265 FOR T = 1 TO S: PRINT CHR ~ 105 REM ***** Roland JOST <(C) (7);: GOSUB 185: CALL PR,ES, ° 1986 FERRER 70,8,1: NEXT : GOSUB 465: GO 110 GOSUB 715: GOTO 275 cope TO 275 CAOB T 115 REM ***#** SOUS-PROGRAMMES ** 270 REM ##*%* DEPLACEMENTS CURSE - REE UR ##¥#* 7 120 REM ***** AFFICHAGE DES NOMB 275 1F MS = 0 THEN 290 SCAC RES #*##* 280 PRINT D$"INE"SL: REM ACTIVE i 125 GOSUB 185: GOSUB 155 BDO3 LECTURE SOURIS SBF = 130 IF BASE = 16 THEN CALL AH,H 285 REM LECTURE $: CALL HEX,X: CALL PR,H$,11 290 Hi = H:V1 = V A278 54 6,8,1: RETURN O70F 295 IF MS = 0 THEN GET R$:R = - 135 IF BASE = 2 THEN CALL AB,BS ASC (R$):H = H - 28 * (R= 8 : CALL BIN,X: CALL PR,BS,44, > + 28 * (CR = 21) OR (R= 3 bf 8,1: RETURN DESC 2)):3V = VU + 13 * (R= 10) - - 140 AS = STRS (X) 93C2 13 * (R = 11): GOTO 310 BFIE 145 XH = 140 - 6 * LEN (AS): CA 300 INPUT "";H,V,S BS4C - LL PR,A$,XH,8,1 SFED 305 H = 28 * INT (H / 25,575) - + 150 RETURN 63B1 3:4 = 13 * INT (V / 32) 6EED s 155 REM *#*%** AFFICHAGE DU MODE 310 IF H < 53 THEN H = 53 8272 HHRRH 315 IF H > 137 THEN H = 137 89D6 = 160 HCOLOR= 0: DRAW 15 AT 38,8: 320 IF V < 26 THEN V = 26 ACBE ‘t HCOLOR= 3 8F89 325 IF VY > 182 THEN V = 182 02F2 165 IF BASE = 16 THEN DRAW 244 330 IF ABS (S) = 2 OR R = 13 TH * T 38,8: RETURN FB3C EN GOSUB 350 SF87 - 170 IF BASE = 2 THEN DRAW 23 AT 335 IF H = Hi AND V = V1 THEN 27 38,8: RETURN 0606 5 Bila Ee 175 RETURN $3B1 340 XDRAW 16 AT H1,V1: XDRAW 16 - 180 REM #*#*%* EFFACEMENT #**#* AT HV BAB2 a 185 HCOLOR= 0: CALL PR,V$,44,8,1 345 GOTO 275 3F49 : HCOLOR= 3: RETURN 106F 350 REM ON A CLIQUE * 190 REM ***** SAISIE D’UN NOMBRE 355 PRINT CHRS (7); 7364 ee HHREK 360 T1 = TCHE:TCHE = 4 * (VY / 13 195 IF BASE < > 2 THEN 215 36F6 = 2) 4<CH:= 53) 71 28r, IF TCH e 200 IF @ < 2 THEN XX = XX * 2 + E = 51 THEN 925 ESE2 ep Q Fé0A 365 IF TCHE ¢ 28 OR TCHE = 32 OR 205 GOSUB 185: GOSUB 155: CALL A TCHE = 36 OR TCHE = 40 OR TC B 8,B$: CALL BIN,XX: CALL PR,B HE = 44 OR TCHE = 48 THEN G - $,44,8,1 E378 OSUB 415: GOTO 375 , 946E 210 RETURN 63B1 370 IF T1 < 28 OR T1 = 32 OR Ti ad 215 IF BASE < > 10 THEN 245 EB28 = 36 OR T1 = 40 OR Ti = 440 o 220 1F @ > 9 THEN 235 A664 R T1 = 48 THEN GOSUB 395:T 225 XX = VAL (A$) 9318 = 2:2 = ¥:¥ = X:XX = 0 1151 ’ 230 GOSUB 185: GOSUB 155 BDD3 375 IF TCHE > 29 THEN 385 9BSF ~ 235 CALL PR,A$,140 - 6 * LEN ‘A 380 GN TCHE + 1 GOTO 450,455,460 $),8,1 CFA3 1465, 470,475,480 ,485, 490,495 i 240 RETURN 638) :500,505,510,515,520,525,530 = 245 XX = XX #16 + @ 747A $535,540 545,550 ,555,560,565 a 250 GOSUB 185: GOSUB 155: CALL A 3970 ,575,580 585,590,595 FFCF H,H$: CALL HEX,XX: CALL PR,H (Silisipoge 8) TREMPLIN MICRO z , ee —t—t——S—Ss Cl LISTAGE 1 JRSG6 515 X = COS (X * PI / 180): GOT — 0 120 C9EE 385 ON TCHE - 29 GOTO 600,405,41 BEOX &) TON Shi 8 PE 2 E803 SOT 0,615,420, 625,630, 635,640,644 cans 8iFO 5,650,655, 660,465,470 675,48 525°X = sATN (X: 4 PI 7 180) GOT 0,685,4690,700,705 35FA 0 120 29F 1 390 REM 530 T = 2:2 = Y:¥ = X:X = PI: GO 395 REM ***** MISE A BLANC DES C TO 120 AASP HAINES *##** 535 X = - X: GOTO 120 30C1 400 IF BASE = 10 THEN AS = "":R 540 WW = X:X = Y:¥ = 2:2 = T:T = ETURN 1621 Ww: GOTO 120 298A 405 IF BASE = 16 THEN FOR I = 0 345 Wes TaT = 252 = Yi¥ = XX = TO 3: POKE Al + 1,48: NEXT : Wi: GOTO 120 048A RETURN D736 550 POKE 6,X: CALL LS:X = PEEK 410 IF BASE = 2 THEN FOR I = 0 £6): GOTO 120 6FiB TO 15: POKE A2 + 1,48: NEXT 555 X = 1 / X: GOTO 120 FOF4 RETURN C735 560 mi = X:X = ¥:¥ = Wi: GOTO 12 3E1A 415 Rey ##e#® EVALUATION DE X ## 565 : RETURN pone 420 IF BASE = 10 THENX = VAL ¢ 570 POKE 6,X: CALL AS:X = PEEK 4%): RETURN 0368 (6): GOTO 120 cci0 425 IF BASE = 16 THEN X = 0: FOR 575 POKE 6,X: POKE 7,Y: CALL AN: = 010 3:2 = PEEK (Al +L X = PEEK (6): GOTO 120 9CBA y:12=2- 48 * (2 > 47 AND 2 580 POKE 6,X: POKE 7,Y: CALL EO: © 58) - 55 * (2) 64 AND 2 < X = PEEK (6): GOTO 120 F3BF 71):22¢L) = 2: NEXT : FOR I 585 POKE 6,X: POKE 7,Y: CALL RA: = 070 3:xX =X + 221) * (16 X = PEEK (6): GOTO 120 SFBE * ¢3 - 1)): NEXT : RETURN 8B3F 590 POKE 6,X: CALL RL:X = PEEK 430 1F BASE = 2 THEN X = 0: FOR (6): GOTO 120 aca = 070 15:2 = PEEK (a2 + 595 @ = 13: GOTO 190 7504 L):2 = 2 - 48 * (2 > 47 AND 600 @ = 14: GOTO 190 4£05 2 < 50):22¢L) = 2: NEXT : FO 605 @ = 15: GOTO 190 4B06 R I= 0 TO 15:X = X # 22¢1) 610 POKE 6,X: CALL RR:X = PEEK * (2 * (15 - 19): NEXT : RET (6): GOTO 120 4320 URN 0A26 615 @ = 10: GOTO 190 5901 435 REM ADDITION A LA PILE 620 @ = 11: GOTO 190 9102 440 T = 2:2 = Y:Y = X: RETURN 4EE1 625 @ = 12: GOTO 190 9803 445 REM ***** OPERATIONS ***** 630 X = Y - X:¥ = 2:2 = T: GOTO 450 BASE = 16: GOTO 120 BACA 120 EC8F 455 BASE = 10: GOTO 120 occ4 635 AS = AS + "7":Q = 7: GOTO 19 460 BASE = 2: GOTO 120 4995 0 74EE 465 X = 0: GOSUB 395: GOSUB 185: 640 AS = AS + :Q@ = 8: GOTO 19 RETURN BBS6 0 77F0 470 X = INT ¢X): GOTO 120 E71C 645 AS = AS + "9": = 9: GOTO 19 475 X = ABS (X): GOTO 120 Do1D 9 EFF2 480 X = SQR (X): GOTO 120 6£23 650 X = ¥ + X:¥ = 2:2 = T: GOTO 485 X = X * X: GOTO 120 C71A 120 328E 490 X = LOG (X) / LOG (10): GO 655 AS = AS + "4":Q = 4: GOTO 19 TO 120 957E 0 68E8 495 X = LOG (X): GOTO 120 9C25 660 AS = AS + "5":Q = 5: GOTO 19 500 X = EXP (X): GOTO 120 2926 0 15EA 505 X = Y * X: GOTO 120 F81D 665 AS = AS + "S6":Q = 6: GOTO 19 510 X = SIN (X * PI / 180): GOT 0 28EC 0 120 BAEF 670 X = Y * X:¥ = 2:2 = T: GOTO 8 GUY-HACHETTE SeaasesnesaLANaRaasNnNNESEeReANA EET ARSENE REESE STeAs CE CAUNAANORSSEAENAOETASTOAAEEReeoRseReenoRsLeRRAEaS 675 680 685 690 695 700 705 710 715 720 725 730 735 740 745 750 755 760 765 770 775 780 785 790 795 800 805 810 B15 820 825 120 AS = AS + "1":Q = 1: GOTO 19 Q AS = AS + "2":Q = 2: GOTO 19 0 AS = AS + "3":Q = 3: GOTO 19 0 X= Y / X; GOTO 120 X= Y / X:¥ = 2:2 = T: GOTO 120 AS = AS + "0":Q = O: GOTO 19 0 AS = AS + "."; GOTO 190 REM ###*#*% INITIALISATION #** ** DIM 22¢16) DS = CHRS (4) ES = “EEEEEE" HS = "1215" BS = "0001000111001101" US St Tenet BASE = 10 AH = 24576: REM resse de HS recherche ad AB = 24603: REM recherche ad resse de BS AN = 24630: REM AND EO = 24637: REM EOR RA = 24644: REM ORA AS = 24651: REM ASL LS = 24654: REM LSR RL = 24673: REM ROL RR = 24681: REM ROR BIN = 24689: REM conversion décimal-binaire. HEX = 24737: REM conversion décimal-hexadécimal PR = 24771: REM écriture HGR PI = 3.14159 SCALE= 1: ROT= 0: HCOLOR= 3 ONERR GOTO 260 GOSUB 865: GOSUB 900: HGR : POKE - 16302,0: PRINT D$"BRU N CALC.COMP.0" TREMPLIN MICRO E790 68E2 S3Eq O7E6 c7ic 3091 E8E0 6053 31F2 B3A4 ABIB 0549 5981 7F8E 034C E961 E852 B45E EBSA BE67 AB6S 4174 8774 7379 30B6 CEBC 4377 B2CE B2CB 7S5E8 830 835 840 845 850 855 860 865 870 875 880 885 890 895 900 905 910 91S 920 925 9320 935 940 945 950 955 PRINT D$"BLOADTABCALC.O ,A$70 00": POKE 232,0: POKE 233,11 2 PRINT D$"BLOAD SP.CALC.0" CALL AH,H$:A1 = PEEK (250) + 256 * PEEK (251) CALL AB,B$:A2 = PEEK (235) + 256 * PEEK (236) GOSUB 185 s=4 H = 53:V = 26: XDRAW 16 AT H sVsH1 = HiVi = VY REM *#*#* RECHERCHE DE LA CA RTE SOURIS REM :$CNOC = 32 ET $CNFB = 2 14 ¢ SOFT SOURIS- FOR 1 = 1 70 7: IF PEEK (49 164 + 1 * 256) = 32 AND PEE K (49403 + I * 256) THEN SL = 1:1 = 7: NEXT : GOTO 890 NEXT I PRINT "PAS DE SOURIS . UTILI SER LES TOUCHES FLECHES DU C LAVIER ":MS = 0: RETURN PRINT “INTERFACE SOURIS EN S LOT "SL:MS = 1 RETURN REM ##*** ACTIVATION SOURIS RRRRE IF MS = 0 THEN RETURN PRINT D$"PRE"SL: PRINT CHRS (1): REM ACTIVE LA SOURIS PRINT D$"PRE£0": REM AFFICHAG E ECRAN RETURN REM ****# DESACTIVATION SOUR IS ET FIN ##*## PRINT PRINT DS" INEO": INPUT DU CLAVIER PRINT DS"PRE"SL: PRINT CHRS (0): REM DESACTIVE LA SOURIS PRINT D$"PRE0": REM ECRAN TEXT END REM ACCEPTE 8999 93ED EDES FC4E E257 EFBF 6ASS 4E8C $B43 6381 78C2 4027 3A5B $381 75BA coso 49626 1389 0180 SP.CALC.G,A$6006,L$0156 Liste 2 DE 28 E3 DF 85 19 84 1A AB 68 BI 19 85 FC C8 BI 19 85 FA C8 BI 19) = =S368 68 26 BE DE 2@ E3 DF 85 19 84 1A A@ 68 BI 19 85 ED C8 BI 19 BS EB APPS 19 85 EC 68 AS 86 25 87 85 446 68 AS 86 45 G7 85 86 68 AD B46 85 G7) OFTHE 68 86 86 68 46 86 28 54 68 68 98 86 AD B1 85 9 BB B4.A9 BB 85 BF LEME 89 26 66 28 54 68 568 46 89 66 86 26 54 68 68 28 BE DE 28 67 DD 28) Art AB 87 66 51 98 64 AD 31 BB 2 AD 36 91 EB 88 CB FF DB EF AB BF 66) = =SD27 84 AY 31 BG 82 AF 36 91 EB 88 CO 87 DB EF 68 26 58 FC 26 BE DE 28 8683 26 52 E7 AS 51 Aé 5@ 2@ 41 F9 AB 63 BY BB B4 29 7F 91 FA 88 CO FF {EBD 68 28 BE DE 26 E3 DF 85 19 84 1A AB 68 84 18 84 FC B1 19 BS FB CB OSPLE 48 C8 Bi 19 85 FE 68 85 FD 20 BE DE 28 47 DD 26 52 E7 AS 58 85 86) =A 7A 85 67 26 FS Eé 846 FC 28 FS Ed 86 E7 AP B46 85 EC A4 18 BI FD C9 28 89DA AY 3F C9 2E DB 82 AP 3C C9 45 DB O2 AP 3B C9 2B DA 42 AY 3D C9 2D 12CE AY 3E CF 38 DB 82 AP 3A 38 EF 38 AA 26 38 F7 AS FC AS 86 AS B7 2860 BAU) AS F9 26 65 Fé A4 B6 18 98 65 EC 85 O46 C4 B6 98 G2 ES B7 ES 18 AS BDEL 18 D@ AD 68 Fib4 TABCALC.G,A$7000,$0182 LIsTe = 32 G8 42 86 53 88 64 G8 74 GB 85 BB 96 BB A7 BB BB BB CY BB DF 48 ccb3 Fil 06 FE 8@ 89 @1 1E @1 2F 61 3F 81 S@ 01 68 @1 76 O1 81 G1 91 BI 73A9 89 6D DA DF 4A 49 DA DF 4A 49 1A 3F 9F 88 68 86 29 2D 0S DF 53.49 = Baar BF 69 89 3B 3F 17 68 6@ @@ 29 2D DS DF 53 49 DS 3F 9F 49 AY 3B 3F 9218 88 88 69 89 FB BB 69 AY 3B 3F 57 49 DS DF 13 88 86 G8 29 2D DS DB 2488 AD FB 9B 49 AY 3B 3F 17 88 68 88 29 2D DS DB 57 2D AD FB BB 69 AP fine 17 88 66 68 29 2D DS DF 53 69 8D 1B DF 4A 4D DA FB 82 86 86 88 29) 8415 OF 57 2D AD FB BB 69 AY 3B 3F 17 86 88 08 29 2D DS DF 57 2D AD FB 75A1 A9 3B 3F 17 86 88 88 29 2D DS DF 57 40 DS DF 57 40 DS 3F BF 68 88 18F7 2D DS DB 57 20 8D DB BB 69 89 3B 3F 17 88 88 88 92 52 89 8D 86 BA 420A 89 8D 3B FF 4A 69 DA DB 62 86 66 88 92 89 2D DS DB 53 49 11 86 86 30B1 20 35 3F 3F 37 2D 2D 35 3F 3F 37 2D 2D 35 3F 3F 37 @6 86 6 2D 6D) fF See 37 2D 4D DA DF 4E @9 15 DF 9B 68 @@ 88 B9 6D 1A DF 57 2D AD FB BB) fF ®8E FB BB 8 66 8 29 6D 1A DF 57 2D 8D FB BB 69 AY 1B 3F 17 86 88 88 7BA1 1A DF 57 4D D1 DB S57 4D DS 3B 9F 68 68 88 29 6D 1A DF 57 40 DS DF OFF DS 3B BF 68 68 88 29 2D DS DB 57 2D 8D DB BB 49 89 3B 3F 17 86 G8 C9AB 20 DS DB 57 2D 8D DB BB 69 89 DB BB 68 86 6B 29 4D 1E DF 57 89 BD OF Ies 69 AY 3B DF 86 68 88 G8 69 AD FB BB 29 2D DS DF 57 4D DS DF 17 86 OFFED gee CALC.COMP.G.A$6039,L$G6C2F LIsTEeE & : 63 48 4735 88 28 84 6@ 26 76 6@ DO F2 68 20 84 46 Bl 82 AA 98 91 O6 aces F7 28 84 68 D@ DD AS 44 85 41 AY BB 35 BG AY BB 85 82 AP 2BF° 68 E6 68 DB G2 Es 41 AS G1 38 EF 26 C5 64 68 ES G2 DB C4 b115 7E 7F 7F 7F 7F 7F 7F 2F 7F 2F 7F 7F O7F O7F OF ZF 7F 08 17 «865102 SF AB 7F @1 3F 2B 7A @1 6F 36 7A G1 81 88 16 G1 BF 23 7C 7367 7F 63 7F 1 7F 43 7F 81 81 06 1E 41 88 83 68 G1 7A SE OF ace2 86 83 G2 81 G6 16 61 G6 16 41 O68 16 G1 BB 16 1 68 1E 41 DF78 7F 7F 7F 7F ?F 7F 7F 7F 7F 7F 68 @1 G1 88 16 81 7F 3B 7 75C2 3F 3B 7F 61 7F 76 7E @1 G1 68 16 61 7F FF 7F Q1 7F F? 7F c3cé 7F EF 7F 61 @1 @@ 1E G1 6F A2 7A O1 GF AB 7C G1 BF 63 76 2D9C @1 60 16 61 7E 7F 7F 61 7F FF 7F 01 7F FF 7F 61 7F 7F VF OEEES FE FF FF 88 @1 FE FF FF @@ 81 FE FF FF 80 G1 FE FF FF 88 E4ac 68 16 61 66 16 61 66 18 G1 66 16 81 7E 7F 7F GG G1 7E 7FO OGSER 7F 68 61 7E 7F 7F 86 G1 G1 68 1E 61 SF ES 7E 81 SF DA 7B 3711 2F F7 7E @1 @1 88 16 61 1F 22 7F @1 1F 42 7A O1 1F 2B 7C SBce @1 68 16 61 7F EB 7F 61 7F 6F 7F 01 7F EF 7F @1 7F SF 7F C4Fs 10 GUY-HACHETTE 61CG: 61 61 66 1E 61 FE FF FF 60 @1 FE FF FF @@ 61 FE FF FF 6 @1 FE FF FF 06 6014 ? 6108: 81 @1 G6 16 61 86 16 81 48 146 61 60 16 G1 68 IE @1 7E 7F 7F 8 B1 7E 7F (82EB S1F@: 7F 68 81 7E 7F 7F @@ @1 7E 7F 7F @@ 1 G1 @8 16 O1 7F 7F 7F O1 7F 7F O7F 7ABD I $208: 01 7F 7F 7F 61 7F 7F 7F 61 G1 88 16 G1 7F FB 7F O1 FF E3 7F O1 7F FF 7F = (ABSE 6220: 61 10 77 64 61 81 06 1E 83 OG 10 61 @@ 16 01 1F 36 78 O1 SF AB 7C 01 3F = Ba7S e 6238: 23 78 81 OF 36 78 G1 61 88 16 81 SF 2A 7B 61 7F 5B 7F O1 7F 5B 7F @1 7F 15BA 6256: 78 7F 61 81 66 1E 41 @8 83 26 G2 4A G2 02 OG G1 18 29 GA BG G3 82 81 BA ABI 7 $268: 16 G1 88 14 G1 68 16 61 GB 1@ 61 GB 1E G1 OB 10 81 46 16 B1 7F 7F 7F Gt 9815 » 6280: 7F 7F 7F @1 7F 7F 7F @1 7F 7F 7F @1 81 @@ 16 O1 7F FF 7F @1 7F F7 7F @1 7486 6298: 7F E3 7F O1 7F E3 7F @1 @1 G6 IE 91 SF FA 7A B1 SF BA 7F 81 SF 76 74 O1 3ECB ba 62B@: SF 3B 7D 61 81 60 14 81 SE 23 7C @1 IF EF 7A @1 7F DF 7F @1 23 45 48 81 B646 4 6208: @1 @6 16 @1 7F FF 7F 61 7F FF 7F 61 7F FF 7F 81 7F FF 7F @1 G1 @8 1E @1 AS36 62E@: 6@ 16 81 @@ 16 81 68 18 1 G8 146 61 BG 18 G1 06 IE 91 GF ED 7E O1 SF E2 353¢ b 62F8: 78 @1 1€ A2 7B 1 2F F7 78 G1 G1 66 16 81 SF 2E 7F 91 SF 4A 7A O1 SF 2B = 8028 é 6318: 70 81 SF 6A 7A @1 81 68 16 O1 7F F7 7F @1 7F 6F 7F @1 7F E3 7F 01 7F 4F-OFEEE 6328: 7F 61 61 G6 1E 61 7F FF 7F 81 7F FF 7F 81 7F FF 7F @1 7F FF 7F @1 81 @8 C999 p 6348: 16 @1 FE FF FF @@ @1 FE FF FF G6 @1 FE FF FF 48 @1 FE FF FF 0@ 81 @1 80 osec L 6358: 16 61 68 16 61 68 1E 81 68 18 G1 68 16 81 7E 7F 7F 8@ G1 7E 7F 7F 88 BI 1669 6376: 7E 7F 7F 68 @1 7E 7F 7F 68 @1 81 86 16 O1 7F 7F 7F 61 7E 7F 7F 1 7F 7F 3caB 6388: 7F G1 21 66 82 G1 G1 86 1E 81 G8 16 1 G8 16 01 7F 36 79 O1 SF EB 7D @1 s1E3 63A8: 3F 2B 79 61 6F 36 79 @1 81 G6 16 B1 BF 2B 7C G1 7F 43 7F @1 7F 63 7F 81 4076 I 6388: 7F 7B 7F 61 G1 08 1E 41 68 83 68 @1 4A 1E 82 86 81 10 SF 7B 88 83 82 B1 79AP 6306: 68 16 61 FE FF FF 68 61 FE FF FF @@ @1 FE FF FF 0@ 01 FE FF FF 00 @1 61 pec 6368: 68 16 61 68 16 G1 68 1E G1 G8 16 G1 68 16 B1 7E 7F 7F OB G1 7E 7F 7F BO 5068 r 6406: 61 7E 7F 7F 08 01 7E 7F 7F G8 O1 61 G0 16 @1 7F 7F 7F 01 7F 7F 7F O1 7F = BESE 6418: 7F 7F 61 7F 7F 7F 1 @1 88 1E 91 OF F2 7D 81 SF B2 7F O1 OF 77 78 B81 SF E213 6438: 7B 7E @1 61 G8 16 61 SE 3B 7B 61 3F EF 7A 61 4B BF 6B 81 38 6C 2E @1 81 8930 6448: 6@ 16 61 7F FF 7F @1 7F FB 7F @1 7F E3 7F @1 7F E3 7F O1 1 8 1E G1 86 = EAF 6466: 18 G1 G8 16 G1 OG 10 41 68 16 61 G8 16 61 O9 1E G1 7F 7F 7F O81 7F 7F 7FOOBTE [ 6478: @1 7F 7F 7F 61 7F 7F 7F 61 81 08 16 81 SF 22 7C O1 SF 5A 7C @1 IF 22 7B (8485 6496: 81 1F SA 7A @1 G1 O88 16 81 7F F7 7F O1 7F OF 7F 81 7F FB 7F O1 7F SF 7F (CCCS 6408: 61 61 @6 1E G1 SF A3 78 81 7F DE 7D @1 1F AA 7C O1 7F D7 7F O1 O1 8815 BAA 64C@: 61 7F FF 7F @1 7F FF 7F 01 7F FF 7F @1 7F FF 7F @1 81 8 16 81 7E 7F 7F 2A8D r 6408: 60 61 FE FF FF @@ @1 FE FF FF @@ 01 7E 7F 7F 88 @1 @1 08 1E G1 06 18 @1 Dé6Ae a 64F0: 06 16 61 68 16 61 88 16 61 7E 7F 7F O68 81 7E 7F 7F 00 1 7E 7F 7F 06 O1 EBS 6508: 7E 7F 7F 44 G1 @1 8 1E 61 88 18 G1 66 16 @1 IF 22 7B 81 IF A2 7C 61 3F OCFF , 6520: 2B 7B 91 6F 36 7B G1 81 68 16 @1 2F 2B 7D @1 7F 5B 7F @1 7F SB 7F @1 7F = AcEB 6538: 7B 7F @1 81 88 1E 41 68 83 46 20 4A 18 82 3C 18 28 4A BB B3 42 B1 8816 FELS 6558: @1 7F FF 7F @1 7F FF 7F @1 7F FF 7F 01 7F FF 7F 01 @1 G@ 16 @1 FE FF FF 2700 - 6568: 66 61 FE FF FF 68 @1 FE FF FF @@ @1 FE FF FF 88 @1 @1 68 1E @1 90 10 @1 C129 a 6580: 66 16 61 86 19 81 08 16 61 7E 7F 7F 88 81 7E 7F 7F 88 G1 7E 7F 7F 08 @1 EBs 6598: 7E 7F 7F @6 81 81 G0 1E 01 6F FA 7A 81 SF BA 7F @1 6F 76 72 81 SF 7B 7E 8908 6586: 81 81 @@ 16 G1 SE 23 7C @1 3F F7 7D 1 77 08 @1 6A B1 33 SC 4C 81 B1 28 0898 $5C8: 16 1 7F F7 7F @1 7F EB 7F @1 7F FB 7F 01 7F FB 7F 81 81 00 1E G1 FE FF 1768 65E8: FF @8 @1 FE FF FF @@ 91 FE FF FF 0 01 FE FF FF 68 81 @1 08 16 01 06 10 4D1F l SSF&: 1 8 14 G1 G8 18 81 96 1E @1 7E 7F 7F OG @1 7E 7F 7F 88 O1 7E 7F 7F 88 = AcBE L 6610: 81 7E 7F 7F 66 @1 @1 86 16 G1 7F 7F 7F 81 7F 7F 7F O1 7F 7F 7F O1 7F 7F | (BOE $628: 7F 61 @1 66 16 @1 7F EB 7F G1 7F 47 7F 01 7F E3 7F G1 7F 47 7F BI O1 08 93F 7 6640: 1E 61 SF AB 7F 61 7F 9E 7D @1 SF AB 7B @1 3F ED 7F @1 81 @@ 16 @1 OF 23 10C8 6658: 7F @1 7F 63 7F 61 7F 43 7F @1 7F 43 7F O81 G1 BB 16 O1 7F FF 7F O81 FF FF 347A r 6670: 7F @1 7F FF 7F @1 61 6@ G2 @1 O1 08 1E 81 OG 10 1 86 146 81 GB 18 O1 00 B1DB r 6688: 16 61 08 18 61 G8 1E 81 68 108 81 88 16 01 7F 7F 7F O1 7F 7F 7F @1 7F ZF 9469 h 66A@: 7F 81 7F 7F 7F @1 81 08 16 1 SF 22 7B 61 7F SB 7F 01 7F 63 7F G1 7F 43° = 2701 66B8: 7F @1 G1 66 1E 41 68 83 28 21 4A 18 82 84 B1 18 28 4A 08 83 G2 BI 2B 16 771F 6608: 61 7F 83 7F @1 1F AA 7C @1 3F 3C 7F O81 7F 78 7E 81 81 88 16 B1 7F FF 7F DB4F 66E8: 81 7F FF 7F @1 7F FF 7F @1 7F FF 7F 1 @1 06 1E 81 G8 10 @1 G8 16 @1 00 6643 6706: 18 81 G8 16 61 66 16 G1 88 1E 61 6F A2 7A O1 GF AS 7C B1 OF 63 76 OI IF 8e16 & TREMPLIN MICRO W Bo 6718: 22 7D @1 81 @@ 16 @1 SE 2F 7D 61 3F FB 7A @1 77 FD 63 81 3B 6C 2E @1 81 FE27 6730: @@ 16 01 7F E3 7F 61 7F E3 7F O1 7F ES 7F O1 7F E3 7F O1 81 BO IE O1 7F 453€ 6748: FF 7F @1 7F FF 7F @1 7F FF 7F 01 7F FF 7F @1 @1 68 16 @1 FE FF FF 90 @1 C28E 6760: FE FF FF 00 61 FE FF FF 6G @1 FE FF FF 6@ 1 81 @@ 16 @1 08 10 61 68 1E 0-86 9F 6778: 81 68 18 @1 G8 16 81 7C 7F 7F 88 @1 7E 7F 7F BO 81 7E 7F 7F OB B1 7E 7F 1198 6790: 7F 6G 81 @1 88 16 G1 7F 7F 7F G1 7F 7F 7F O1 7F 7F 7F @1 7F 7F 7F @1 01 bai 6748: 08 1E 61 SF AB 79 @1 7F 9E 7C @1 1F B7 7C O1 3F ED 7F G1 B81 68 16 81 SF FAL 67CO: 2A 7F 61 7F SB 7F @1 7F 7B 7F @1 7F 7B 7F @1 @1 G8 16 81 7F EF 7F 81 FF PDFD 6708: E3 7F G1 7F FF 7F @1 1D 75 GE @1 @1 88 1E 81 G6 16 B1 86 16 G1 4B 16 B1 ‘S58 67FG: 68 16 81 88 10 @1 G@ 1E G1 86 10 1 BG 16 O1 7E 7F 7F BG O1 7E 7F 7F BB SDsu 6808: @1 7E 7F 7F @@ @1 7E 7F 7F G@ @1 81 8G 16 B1 7F 7F 7F G1 7F 7F 7F O1 7F = GBEE 6820: 7F 7F 61 7F 7F 7F @1 G1 @@ 1E 41 08 G3 20 4A 79 1E G2 88 B1 38 GF 7B BB = FP He 46838: 63 82 61 80 16 G1 7F DS 7F @1 SF AB 7F G1 3F 3B 7F 81 7F 36 7C 81 81 OB SHE 6850: 16 @1 7F FF 7F 81 7F ES 7F @1 7F ES 7F @1 7F E3 7F G1 81 G8 1E 81 8 16 = = PEED 6868: G1 86 46 @1 GO 18 G1 8G 16 @1 BB 10 B1 OB IE G1 7F 7F 7F G1 7F 7F 7F BL 616C 6886: 7F 7F 7F @1 7F 7F 7F O1 81 G8 146 B1 1E 22 7B @1 IF FA 7A 1 6B FB OF a1 BC3A 4898: 23 6D 28 81 81 80 16 @1 7F F7 7F O1 7F EF 7F G1 7F EF 7F @1 7F EB 7F 81 4F8D 6880: 61 8G 1E @1 OF AD 7C @1 IF E2 78 1 1F AZ 7C O1 2F F7 78 O1 01 08 16 @1 40c8 68C8: 7F FF 7F @1 7F FF 7F @1 7F FF 7F @1 7F FF 7F G1 @1 08 16 61 FE FF FF 66 8 ceec 68E0: 61 FE FF FF @@ @1 FE FF FF 0 1 FE FF FF G8 @1 61 00 1E 01 88 10 61 68 964529 48F8; 16 81 @8 18 81 88 16 81 7E 7F 7F G8 @1 7E 7F 7F 88 1 7E 7F 7F 08 61 7E = =1934 6910: 7F 7F 06 @1 @1 88 1E 81 SF AB 7B @1 7F DE 7C @1 SF AB 7F 81 3F D4 7F @1 = AgIC 6928: @1 86 16 1 OF 28 7F 81 7F SB 7F O1 7F 63 7F @1 7F 63 7F G1 B1 BO 16 B1 5668 6940: 7F EF 7F 01 FF EB 7F @1 7F FF 7F 01 15 25 04 O1 @1 8@ 1E @1 7E 7F 7F 0@ 862431 4958: @1 FE FF 7F 08 @1 FE FF FF 00 61 FE FF FF 08 1 @1 88 16 81 08 18 @1 08 24A1 6970: 16 01 68 10 81 G@ 1E @1 7E 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F ?F 7F 0@ = =672B7 6988: 61 61 86 16 G1 G8 10 1 OG 16 O1 7E 7F 7F OB B1 7E 7F 7F OB BI 7E 7F 7F = 7487 6900: G8 G1 7E 7F 7F @@ G1 G1 GG 1E 41 88 BF 82 81 BB 16 B1 7F D7 7F Ot SF A3 SDDF 6988: 7C 81 3F 3C 7F @1 7F 78 7E @1 @1 68 16 O1 7F FF 7F @1 7F EF 7F @1 7F EB CFSC 6908: 7F 61 7F EB 7F Oi @1 G@ 1E 01 7E FF FF @@ 01 FE FF FF @@ 01 FE FF FF 08 64808 49E8: 81 FE FF FF @@ G1 G1 88 16 81 6@ 16 G1 OG 16 81 BB 18 G1 BB IE BI 7C 7F 465069 4000: 7F 68 O1 7E 7F 7F G8 @1 7E 7F 7F By vu: 7F 7F 7F G8 G1 O1 86 16 A 7E 7F =F 208C 6A18: 7F @1 7F 7F 7F @1 7F 7F 47 81 7F 7F 7F G1 81 88 16 G1 7F FF 7F O1 7F EF F366 1EED 3018 2084 5809 9766 Fada Fas7 146C 0398 FBS2 3528 C999 B78A 2567 368C 78D1 SAI! 1603 616€ A3C3 5533 739D 1B89 Avia 12 GUY-HACHETTE 4 ¥ © TRES SIMPLE ! .... MAIS CA SE COMPLIQUE... Je dois dire que ¢a se passe plutét bien, & part quelques menaces de mort de la part de per- sonnes que je croyais mes amis et un autodafé de TREMPLIN MICRO dans les universités, le dernier article de" € trés simple" a été si bien accueilli que je vous entraine une fois de plus sur les chemins étroits et caillouteux de la connaissance pure. Les variables que nous avons rencontrées jusqu’d présent étaient des objets élémentaires et isolés, or le plus inculte des Basicois de basse souche vous dira que pour travailler effica- cement il a besoin de regrouper de temps en temps ces variables discrétes sous forme de listes ou de matrices qu'il va nommer "TABLEAU" et déclarer celles-ci par I'instruction DIM. Le méme sous-Basicois aimerait bien pouvoir organiser ses données d'une maniére un peu plus fine que ne le permet son langage préféré : par exemple regrouper sous une méme variable, un nom, un prénom, une adresse, un dge, autrement dit des objets qui, bien qu'ayant un lien commun sont de TYPES différents ou encore créer une variable qui puisse contenir 4 différents moments des objets de types et de tailles différents. Mais avec Basic, comme le dit la publicité SNCF, ce n’est pas possible... ALLELUIA ! le langage € peut le faire, et bien d'autres choses encore, allez, je suis gentil, commencons par les choses simples. LES TABLEAUX Pas de malaise, dans son aspect extérieur, rien Ecrire liste°40§=10 par exemple conduirait 4 ne ressemble plus 4 un tableau en langage © | des catastrophes épouvantables... jaime qu'un tableau en BASIC. Un tableau est defini mieux ne pas y penser. en précisant entre crochets (pour |'APPLE fran- gais entre °§) le nombre total d’éléments qu'il doit pouvoir contenir. C manipule des tableaux de n'importe quel type (y compris des tableaux de tableaux) avec une rare élégance. En effet, la notion de Par exemple : int liste°40§; tableau en C€ est intimement liée 4 celle de pointeur (voir le numéro précédent). L'identifi- cateur de tableau (liste dans l'exemple ci- dessus) est en fait un pointeur vers le premier élément du tableau. définit un tableau dont I'identificateur (le nom) est liste et composé de 40 objets entiers consécutifs nommés : ee ee tas liste°@§, liste°1§ .. - liste°39§ Je commence 4 voir de la fumée qui sort par Remarquez que le premier élément du tableau les oreilles de quelques-uns et quelques- est d'indice @, le dernier élément est donc unes... Peut-étre ne suis-je pas trés clair ? d'indice NOMBRE D’ELEMENTS -1. OK je m'explique. (suite page 14) sanunqunucuvanennuseusnnszenesoaezacsscosonsssesseanenvecsssuenssesounaeueuseneesuusecssueeussunssscen TREMPLIN MICRO 13 Lorsque vous déclarez INT TRUC°2§ vous donnez & TRUC la valeur de l'adresse mémoire ob votre compilateur a prévu de pla- cer un tableau de deux entiers consécutifs. Vous pourrez donc utiliser : — soit la syntaxe "TABLEAU" — soit la syntaxe “POINTEUR” et écrire avec autant de bonheur : TRUC°G@§ =4; ou *TRUC=4; ou encore TRUC°3§ = 10 équivalent 4 *(TRUC+3) =10 Les débutants en € utilisent le plus souvent la syntaxe "TABLEAU" qu'ils abandonnent progres- sivement au profit de la seule syntaxe "POIN- TEUR ". Leurs programmes deviennent alors trés beaux, trés rapides et totalement illisibles. Un avantage des tableaux € sur les tableaux "BASIC" c'est qu’'ils peuvent étre initialisés trés facilement au moment de leur déclaration. Alors qu’en Basic on utilise des ruses pas possi- bles 4 base de DATA READ et autres joyeuse- tés en forme d'itérations, il suffit en © de faire suivre la déclaration de tableau par un bloc contenant les valeurs d'initialisation pour faire tout le travail : float valeurs°3§ €2.718,3.14,98; déclare un tableau de trois réels et initialise leurs valeurs respectives a : valeur°G§=2.718, valeur°1§=3.14, valeur°2§=9 de méme : char chaine°10§ = "TOTO"; déclare un tableau de caractéres de 10 élé- ments capable sans souffrance de recevoir la chaine de caractéres "TOTO". chaine°@§ ='T', chaine°1§ ='O' etc... Nous y reviendrons puisque c'est la facon dont € gére les chaines de caractéres. Histoire de vous dérouiller les doigts, voici un petit inspiré de ma course d'ordi- cciouns te deenive nomdiin's Afficher les nombres premiers entre 2 et 1000. Je rappelle aux oublieux qu'un nombre pre- mier est un nombre qui n'est divisible que par 1 ou par lui-méme. Ualgorithme choisi est celui du crible d’Era- thosténe vieux de plus de 2000 ans et remis au godt du jour par |'informatique familiale. On construit un tableau dont la valeur de cha- que élément est soit 1, soit @ selon que |'indice est premier ou non. Remarquez que le tableau "crible” dont I'indice sera au maximum 1000 doit étre déclaré de 1001. (*——— EaTores —__——_*/ int crible°1001§; /*le lieu du crible !!!*/ main() é int i,k; /*compteurs d'itération*/ /* Assignons la valeur 1 4 tous les éléments du tableau*/ for(i=2;i<=1000;i+ +) crible°i§ =1; /* Parcourons le tableau de 2 4 1000 en effec- tuant la tache suivante : si I'élément d'indice i est de valeur | c'est que i est premier, donc on l'écrit et on élimine tous ses multiples en attri- buant la valeur @ aux éléments du tableau d'indices multiples de i of for (i=2;i<=1000;i+ +) é if (crible°i§)/*si=1 mier*/ : nombre pre- é printf("%dg¢n",i);/* On l'écrit*/ /*On élimine tous ses multiples*/ for (k isk <=1000;k=k+i) crible°k§ =@; é é é Voila, ga ne sert pas 4 grand chose, mais qu’est-ce que c'est beau ! Les plus courageux pourront s'amuser 4 modifier le programme en syntaxe “pointeur”, les plus laborieux cherche- ront a l'écrire en Basic ou en Pascal, les plus impatients se rallieront 4 mon panache blanc afin qu'il les guide dans le dédale des abomi- nables structures. (suite page 14) 4 GUY-HACHETTE ae aon oe oer —_* — ——s tah A A s 4 -—o—4 alata Les tableaux, c'est bien mais ce n'est pas tout dans la vie. Il peut arriver que vous deviez représenter un objet composite constitué de grandeurs de méme type ou de types diffé- rents : par exemple une date composée de trois entiers (le jour, le mois, l'année) ou encore le nom des mois de I’année (chaine) associés 4 un nombre de jours (entier). C permet de construire de tels agrégats 4 l'aide de la déclaration STRUCT (structure) : struct date é int jour; int mois; int année; 8; Les Pascaliens reconnaitront sans peine un type composé qui leur est cher : le type RECORD ou article. Les Basicois ne reconnaitront rien mais c'est bien fait pour eux. Comme je les aime bien, je vais tout de méme préciser pour ces déshérités la triste vérité sui- vante : ce que vous venez de fabriquer labo- rieusement n’est pas une variable mais un TYPE d’objet que vous utiliserez ensuite pour déclarer une variable — éventuellement initialisée. Par exemple : struct date anniversaire = 610.11.1987@; date est un TYPE de structure, anniversaire (en fait le mien, & bon entendeur...) est une VARIABLE de type date. On peut également déclarer directement une variable structure en faisant suivre une décla- ration de type structure par un nom de varia- ble, c'est & mon avis moins clair quoique plus rapide ainsi : struct é int jour; int mois; int année; é anniversaire = 610,11,1987é; est équivalent du point de vue fonctionnement 4 la déclaration “déclaration de type + décla- ration de variable” vue précédemment. Pour avoir accés 4 un élément d'une structure, nous devons utiliser l'opérateur ".” (point). Par exemple : désigne |'élément jour de la structure anniversaire. Vous I'avez sdrement déja compris, le pied, c'est le tableau de structures : il combine Vaccés facile & un élément par un indice (tableaux) et la clarté descriptive des structures : struct date datesimportantes°2§ anniversaire. jour é 10,10,1515, 14,7,1789, 10,11,1987 e déclare un tableau de 3 structures ov, par exemple, datesimportantes°@§.année est égal 1515. Ceci n'est pas horriblement complexe. Malheu- reusement, le pointeur fou a également frappé les structures et il est tres courant de déclarer un pointeur vers une structure : si on déclare : struct date *p; p= &anniversaire; on disposera des syntaxes : (*p).jour ou encore p —> jour équivalentes a date.jour Pour |'instant, tout ceci doit vous laisser un peu froids, mais n’oubliez pas que € est avant tout un outil de manipulation de pointeurs : en € quand on peut créer un pointeur vers quelque chose, on est sauvé... Essayez pour vous deéfouler le petit exemple ci-dessous : struct homme é char nom °15§; char prénom °15§; int Gge; é; struct homme personne é"TOTO”, "JEAN", 18@; struct homme *p; main() (suite page 16) Tee ee Daal alata alata TREMPLIN MICRO 15 printf("%scn%scn%d%d",homme.nom,homme.prénom, homme. age); p=&personne; printf("%scn%s¢n%d%d",(*p).nom,(*p).prénom, (*p).age); printt("%s¢n%s¢n%d%d",p ->nom,p —> prénom,p —>age); e Vu de I'extérieur une union ressemble furieu- sement 4 une structure ; la déclaration est trés proche. La seule différence apparait dans le mot “union” qui remplace le mot “struc”. Mais attention, cett® ressemblance n'est qu’appa- rente : une union est prévue pour contenir séquentiellement des objets de types et de tail- les différents, c'est-d-dire qu’ un instant donné UN SEUL PEUT ETRE PRESENT en mémoire. On peut voir une union comme une structure dont les différents champs commencent tous 4 la méme adresse mémoire. union é int i; char c; long |; @ monunion; La déclaration ci-dessus permet de créer une variable nommée monunion qui pourra rece- voir 4 un moment donné soit un entier, soit un caractére, soit un réel. monunion,i monunion.c monunion.|: Ces trois lignes pourraient étre une assigna- tion valable, mais si vous les écrivez dans un programme, seule monuion.| sera significative puisqu’elle aura "écrasé” monunion.c qui aura elle-méme écrasé monunion.i. Le type UNION permet de construire des struc- tures 4 champ variable semblables au CASE du RECORD Pascal avec plus de souplesse et plus d'efficacité mais ¢a commence 4 devenir difficile... Le compilateur APPLE reconnait un autre type : le type ENUM ou énumération dérivé directe- ment du type énumération de PASCAL. Son intérét principal est d’ailleurs de permettre une traduction aisée de PASCAL en € . On peut déclarer des types du genre : enum Boissons éCocaCola,Perrier,Orangina, SevenUpé; l'utilisation de ce type rend les programmes intransportables sur I.B.M. ou VAX. Je ne vous parlerai donc pas aujourd'hui de cette horreur... 1° La prochaine fois, © sera vraiment trés simple. 2° Pour aujourd'hui, pardonnez-moi vos maux de téte, mais il fallait en passer par 1a. 3° La sécurité sociale ne remboursant pas l'aspirine, je ne me sens pas impliqué dans son déficit. 4° Les sociétés CocaCola, Perrier, Orangina, etc. peuvent faire parvenir leurs chéques au journal qui transmettra. 5° Mon anniversaire est bien le 10 Novembre. 6° A bientét... Claude AUBRY Si vous écrivez @ Claude Aubry, n‘oubliez pas de joindre une enveloppe timbrée pour la réponse. Merci ! 16 GUY-HACHETTE ‘ SUR LES TABLES DEFORMES (SHAPES) s..nscerc A plusieurs reprises, Tremplin Micro a publié des tables de formes, mais sans en rappeler la structure. Je vais essayer de combler cette lacune. Rappelons qu'une forme est un ensemble codé de vecteurs de déplacement : — certains dits actifs parce qu’ils affichent un point lumineux 4 leur position de départ, — d'autres, passifs, n‘affichent rien. Soit @ définir, par exemple, le caractére qui me G0 110 G00 $30 11 011 G11 $DB sert parfois de signature, 4 savoir : 00 110 110 $36 OO G11 G11 $B * | * | | * Nous allons balayer ce carac- 00 110 110 $36 00 G01 101 $0D se ¥ tére de deux facons, afin de G9 110 110 $36 96 901 101 $0D montrer quill n'y a pos une | 91 901 G01 $49 | 11 O10 101 $D5 * * * |. solution unique et surtout, de G0 111 GG $38 11 G11 G11 $DB * mettre en évidence 'inci- GO 111 GOO $38 G9 101 101 $2D * + * * dence du mode retenu lorsque G0 111 GO0 $38 11010 101 $D5 ».** .. lon emploie la possibilité 90 G01 G00 $08 10 101 O11 $AB to * offerte par APPLESOFT pour 00 001 G00 $08 99 101 G11 $28 “_ * * dessiner une forme en diffé- 90 001 G00 $08 11 G10 101 $D5 * * rentes tailles grace 4 SCALE. 10 111 G00 $B8 G1 101 G11 $6B 00 G10 111 $17 11 010 101 $D5 ny pees 00 GG0 111 $07 | 00 G11 G11 $iB terminateur $00 01 G01 101 $4D fi 06 00 101 $05 att terminateur $00 Vous avez sans doute remarqué que chaque = octet est divisé en 3 groupes. Les deux de droite, competion 3 bits, peuvent bse mimperie a quel type de vecteur. Le groupe de gauche, ne seat, comportant que 2 bits, est d'usage réduit (cer- tains éditeurs de formes ne |'utilisent jamais). hs On ne peut en fait y ranger que trois vecteurs, tous de type passif : vers la droite, le bas ou la Ce qui se traduit aprés codage par : gauche. 00 010 101 $15 01 G01 101 $4D Une définition de forme se terminant par un 6, 00 010 101 $15 | 01 G01 101 $4D il n'est pas possible de coder deux déplacements 00 100 101 $25 11 010 101 $D5 passifs consécutifs vers le haut. (suite page 18) TREMPLIN MICRO 7 De méme, si les 5 bits de gauche sont 4 @, aucun déplacement n’est généré. C'est pour cela que, dans le balayage 1, le vecteur central du 3° octet a 6té codé actif, ce qui ne paraissait pas indis- pensable au premier abord. Maintenant que nous avons deux définitions de formes, il nous faut les insérer dans une TABLE DE FORMES exploitable par Applesoft. Une telle table est constituée par une succession de définitions de formes, terminées chacune par un octet nul. En téte de cet ensemble, on place un répertoir des formes qui permet d’accéder aux formes elles-mémes. Le premier octet de ce répertoire contient le nombre de formes de la table (1 4 255), le second octet inemployé est mis 4 zéro. Ensuite, on place des pointeurs de deux octets contenant le déca- lage (offset) entre l'octet 0 de la table et le pre- mier octet de la forme correspondante. Il est prudent de prévoir quelques pointeurs vides qui permettront d'ajouter aisément quelques formes complémentaires en case de besoin. Avec les exemples ci-dessus la table va avoir la composition suivante : $300 nbre formes 02 00 pointeurl 08 O¢ pointeur2 1A 00 pointeur vide 00 00 formel 15 15 25 30 36 36 forme2 BSAVE YK2,A$300,L$2E Le petit programme Basic joint permet d’afficher les deux formes dans trois tailles, ce qui montre que si en taille 1 l'aspect est le méme, tout change avec scale 2 ou 3. Je mets aussi en évidence |'utilisation des swit- ches, peu connus, qui permettent de basculer MONOCHROME «——» COULEUR. 36 49 38 38 38 08 08 G8 B8 17 07 OG 4D 4D D5 DB 1B OD OD D5 DB 2D D5 AB 2B D5 6B D5 1B 4D 05 G0 Manvel de référence APPLESOFT .... Manvel de l'utilisateur APPLE Il. . Création de tables de formes ........ Fusion de tables de formes Un éditeur de formes Documentation de tables de formes. DESIGNER/ILLUSTRATOR .. ANLO08F Poole. McNiff.Cook Editions Rodio D.Compére POM's 4 D.Sureav POM’ 9 T.leTollec — POM's 12 E.Ringot —POM's 13 deux programmes remarquables édites por NIBBLE ou prix de $29.95 10 20 30 4G 50 60 65 70 80 90 100 116 120 200 PRINT CHR$(4) “BLOAD YK2”: POKE 232,0: POKE 233,3 TEXT : PRINT CHR$(21): HCOLOR =3: ROT=@ HGR SCALE = 1: DRAW 1 AT 89,10: DRAW 2 AT 189,10 SCALE = 2: DRAW 1 AT 86,30: DRAW 2 AT 186,30 SCALE =3: DRAW 1 AT 83,60: DRAW 2 AT 183,60 SCALE = 4: DRAW 1 AT 80,100: DRAW 2 AT 180,100 FOR J=1TO10 POKE 49246,0: GOSUB 206: REM monochrome POKE 49247,0: GOSUB 200: REM couleur NEXT POKE 49246,0: REM monochrome END FOR! = 1 TO 1000: NEXT : RETURN . GUY-HACHETTE PU NITATION _ EECCanE ARGOS DATA-SUITE Voici un moyen simple et rapide pour afficher les données en DATA sans pas- ser par une boucle en Basic. Attention ! comme il s‘agit réellement d'une rou- tine élémentaire, il faut absolument initialiser le systeme 4 partir du Basic par une instruction similaire 4 celle de la ligne 20 (READ R$). La premiére donnée est bidon (ici : 0). 10 TEXT : HOME : PRINT CHR$ (4)""BLOAD DS.LM” 20 READ R$ 30 CALL 768: PRINT 40 VTAB 22: PRINT “PRESSER (M) POUR MENU DE DISQUETTE ";: GET R$: PRINT 50 IF R$ = "M" ORR$ = "m” THEN PRINT CHR$ (4)”RUN MENU” 60 HOME: END 76 DATA G,JANVIER,FEVRIER, MARS, AVRIL,MAI, JUIN, JUILLET, AOUT, SEPTEMBRE, OCTOBRE, NOVEMBRE, DECEMBRE 300: Ad GO LDY £$00 Y 4G pour adressage indirect. : 7 - ec. te BNE gouge | Apres READ RS, $7F-80 contient l'adresse ot 306 : £6 80 INC $80 | se trouve la virgule suivant le @. 308: Bl 7F LDA ($7F),Y Lecture du caractére. 30A: FO 10 BEQ $031C Si c'est un zéro, lecture épuisée. 30C : cy 2c CMP £$2C Si c'est une virgule, 30E: DO G5 BNE $0315 | hariot. Si ffiche | ta 310: 26 62 FC JSR $FC62 _| “etour chariot. Sinon on affiche le caractére. 313: 80 EB BRA $0300 Retour. 315: 09 8@ ORA £$80 i . is 317: 20 ED FD ISR Con Bit 7 i" 1. Affichage et en place pour une 31A: 80 E4 BRA $0300 |, Suire.tecture: 31C: 60 RTS Retour au Basic. Vous avez bien sir remarqué que ce micro-programme n’‘autorise pas l’affichage de plu- sieurs lignes de DATA. La raison est évidente : on se contente ici de court-circuiter le Basic. Vous en aurez la preuve en ajoutant une ligne 35 : 35 READ R$ : PRINT R$ Que croyez-vous qu’elle affichera ? . TREMPLIN MICRO sd [TANGAGE MACHINE | ARGOS DA ' D: 1 Méme principe que DATA.SUITE, mais le pro- gramme affiche l’adresse décimale de chaque Ses donnée et traite toutes les lignes de DATA ! INITIATI 10. TEXT: HOME : PRINT CHR$ (4)"BLOAD DS.LM1" 7G. DATA JANVIER,FEVRIER, MARS, AVRIL, MAI, JUIN, 20 DATA PREMIERE LIGNE JUILLET, AOUT SEPTEMBRE, OCTOBRE, NOVEMBRE, oo eet 75 te reane LIGNE 75 40. VTAB 22: PRINT "PRESSER (M) POUR MENU DE Se hace DISQUETTE ".: GET RS: PRINT a EE = 50 chs “oP Hei eo 85 DATA TROISIEME SUITE LIGNE 85 (4)’RUN MENU" 90. PRINT: REM LIGNE BIDON 60 HOME: END 95. DATAET ON TERMINE LIGNE 95 300: AS 67 LDA $67 32E: 80 £9 BRA $0319 302: 85 7F STA $7F 330: 48 PHA 304: AS 68 LDA $68 331: A9 8D LDA £$8D 306: 85 80 STA $80 333: 20 ED FD JSR $FDED 308: 8d 31 BRA $033B 336: 68 PLA 30A: A4 80 LDY $80 337: C9 2C CMP £$2C 30C: A6 7F LDX $7F 339: FO CF BEQ $030A 30E: £8 INX 338: £6 7F INC $7F 30F: Dd @1 BNE $0312 33D: D0 G2 BNE $0341 311: CB INY 33F: £6 80 INC $80 312: 98 TYA 341: AQ OO LDY £$00 313: 20 24 ED JSR $eD24 | 343: 81 7F LDA ($7F),Y 316: 20 48 F9 JSR $F4B | 345: FO 6 BEQ $034D 319: Ad Go uy $00 | 347: C9 89 CMP £$83 31B: €& 7F INC $7F 349: FO BF BEQ $030A 31D: Dd G2 BNE $0321 348: DO EE BNE $033B 31F: £6 80 INC $80 34D: AS 80 LDA $80 321: Bl 7F LDA ($7F),Y 34F: C5 6A CMP $6A 323: FO OB BEQ $0330 351: 90 &8 BCC $033B 325: 9 2C CMP £$2C 353: AS 7F LDA $7F 327: FO G7 BEQ $0330 355: C5 69 CMP. $69 329: 09 80 ORA £$80 357: 90 £2 BCC $033B 328: 20 ED FD JSR $FDED 359: 60 RTS “ iecssosilesecnlcslchcielhaaeeeglieanihieiiadccecmeieaaateaiagaiada 20 GUY-HACHETTE Marcel COTTINI Les vecteurs dinterruptions LES INTERRUPTIONS POSSIBLES NMI = Non Maskable Interrupt : ce sont les interruptions non masquables. RESET Monitor Interrupt : ce type d'interruption renvoie le systeme dans le Monitor. Elle est gérée a partir de l'adresse $FA62. IRQ Interrupt Request : ce sont les interruptions | masquables, dont le BReak fait partie. | Pour chaque signal d'interruption, il existe une ligne particuliére d’accés au processeur : si le signal véhi- culé est 4 un niveau bas (0), le processeur recoit une demande d'interruption ; par contre, si le signal est a un niveau haut (1), rien ne se passe. Adresses d'interruptions : $FFFA-SFFFB pour une interruption NMI JMP ($FFFA) SFFFC-$FFFD pour une interruption RESET JMP ($FFFC) SFFFE-SFFFF pour une interruption IRQ JMP (SFFFE) Processus d'une interruption type : — L'interruption en cours est menée a terme ; — Voctet de poids fort du compteur ordinal est empilé — PCH ; — octet de poids faible du compteur ordinal est empilé — PCL ; — Le contenu du registre d'état PS est empilé ; — Le bit 2, inhibition des interruptions, est mis a1 ; — Exécution de l'instruction qui se trouve a V'adresse $FFFE de la ROM Monitor, ou saut indirect 4 l'adresse contenue dans les octets SFFFF-$FFFE. NMI INTERRUPT ROM Monitor commutée : La ROM du Monitor, adresses $FFFA-$FFFF, contient le pointeur du vecteur d’appel pour gérer la demande d'interruption adressée au" microprocesseur. Le pre- mier pointeur 16 bits contenu dans $FFFA-SFFFB est réservé aux interruptions du type NMI. Pour un Apple Ile ou IIc, les adresses $FFFA-SFFFB contiennent : FB 03 = $03FB. Lors du boot d'une disquette ProDOS, l'adresse $03FB contient l'adresse de saut au Monitor. Vecteur du NMI Q3FB-— 4C 59 FF JMP $FF59 FF59— 20 84 FE JSR $FE84 SETNORM. Mode normal FFSC— 20 2F FB JSR $FB2F INIT. Mode texte FF5SF- 20 93 FE JSR $FE93 SETVID. Mode PREG FF62- 20 89 FE JSR $FE89 SETKBD. Mode IN£0 FF65- D8 CLD FF66- 20 3A FF JSR $FF3A_ BELL. Sonnette Aprés |'exécution de la routine implantée 4 partir de l'adresse $FF59, le systéme effectue un saut dans le Monitor, et affiche l'astérisque (*) comme prompt. Carte langage commutée : La copie de |'adresse $03FB se trouve dans la carte langage, aux adresses $FFFA-SFFFB (FB 03 = $03FB) pour étre utilisée par le MLI lorsqu'une interruption NMI intervient. Comme la carte langage n'est pas pro- tégée en lecture lors d'une interruption du type NMI IRQ ou RESET, le processeur se branche 4 $03FB, puis effectue un saut a $FF59 et exécute le sous- programme. Si le pseudo disque (RAMDisk) est utilisé avec la carte auxiliaire 64 Ko ou avec un Apple IIc, une interruption NMI plante le systéme et renvoie l'utilisateur dans le Monitor (Prompt = *). L'instruc- tion CALL 976 (3D0G) reconnecte le Basic System en effectuant un démarrage 4 chaud, tandis que CALL 39447 appelle la routine Connect qui se trouve a l'adresse $9A17. (suite page 22) allele aaa aa ae aaa TREMPLIN MICRO 21 AUSRAseE REA SAee se eCaneaEEaTseseeREEeENeORAsA BOER EOENASCE ERE CeoseDERBeRsS Ress EOSTeEEEESEeENSeRAsseEAesE RESET INTERRUPT ROM-Monitor commutée : Le point d'entrée de RESET se trouve l'adresse $FA62. La copie de cette adresse se trouve au vecteur $FFFC- $FFFD ($FFFC- 62 FA) de la ROM Monitor. RESET avec une ROM autostart (Apple Ile) ' i] o FA62 Annulation du mode décimal. FAG3 - 20 84 FE JSR $FE84 SETNORM. Mode normal. FA66 - 20 2F FB JSR $FB2F INIT. Mode texte. FAG? - 20 93 FE JSR SFE93 SETKBD. Mode IN£@. FA6C- 20 89 FE JSR $FE89 SETVID. Mode PREG. FAGF - AD 58 CO LDA $C058 Annonciateur @ 4 1 — Read. FA72 - AD 5A CO LDA $C05A_ = Annonciateur @ 4 1 — Write. FA75 LDY £805 Initialise le registre Y 4 la valeur £$05. FA77 JSR SFBB4 Gestion du curseur — avance 5 positions. FA7B -— AD FF CF LDA SCFFF CLRROM Désactive les sous-programmes placés entre $C800 4 SCFFF. FA7E- 2C 10 CO BIT $cald KBDSTRB. Echantillonnage du clavier. FA81 — D8 CLD FA82 - 20 3A FF JSR S$FF3A BELL Sonnette. FA85 - AD F3 03 LDA $03F3 RESET-Handler. Charge le pointeur HByte. 14 ~ se 22 2a nm oS FA88 - 49 AS EOR £$A5 PRWRUP Byte. FA8A- CD F4 03 CMP $03F4 FA8D- DO 17 BNE $FAA6 Démarrage a froid. Reboote le systéme. FASF - AD F2 03 LDA $03F2 RESET-Handler. Charge le pointeur LByte. FA92 - DO OF BNE $FAA3 Si différent de @, démarrage 4 chaud. FA94 — AD EO LDA £$E0 FA% - CD F3 03 CMP $03F3 Est-ce le vecteur Basic ? — $E000. FA99 - DO 08 BNE $FAA3 Non, démarrage 4 chaud. FAIB- AQ 03 LDY £$03 Fixe RESET sur le vecteur Basic 4 froid. FAID- 8C F2 03 STY $03F2 Démarrage en $E003 — Basic 4 chaud. FAAQ— 4C 00 EO IMP $EQ0G Basic 4 froid — Coldstart. FAA3- 6C F2 03 JMP ($03F2) Warmstart. Saut au Handler. FAA6- 20 60 FB JSR $FB60 Coldstart. Entrée du démarrage 4 froid. RESET-Handler. Entry Moniteur (RESET = $FA62) FFCB —- AD D7 FF LDA SFFD7 = Charge le pointeur HByte, FFCE - 48 PHA et l'empile. FFCF - AD D6 FF LDA $FFD6 Charge le pointeur LByte, FFD2 - 48 PHA et I'empile. Adresse de retour — $FA61 —. FFD3 - 4C C8 FF IMP $FFC8 Commute la ROM moniteur. FFD6 - 61 FA Pointeur $FA61 — 61 FA—. Processus : A |’adresse $FFCB du Monitor se trouve un RTS (code 60). Conséquence : le pointeur contenu ~~ aux adresses $FFD6-$FFD7 sera utilisé par le processeur pour effectuer un retour 4 l’adresse $FA62. L'adresse de retour dépilée aprés une instruction RTS, sera augmentée de 1: $FA6] + £$01 = $FA62. C'est une caractéristique propre aux microprocesseurs 6502 et 65C02. 22 GUY-HACHETTE IRQ INTERRUPT Cette interruption n'est autorisée par le microprocesseur, que si le bit d'inhibition, bit 2 du registre d'état PS, est 4 zéro. Cette situation est provoquée par I'instruction CLI du processeur. IRQ Interrupt pour un Apple lle FAQ - 85 45 STA $45 Sauvegarde de I’accumulateur. FAd2 - 68 PLA Dépile le registre d’état PS. FAa3 - GA ASL Bit 4 positionné 4 1, si IRQ est transmis par une instruction FAs4 - OA ASL BReak — 60 —. FA4d7 - 30 03 BMI $FASC —_ BReaK avec affichage des registres. FA49 - 6C FE 03 JMP ($Q3FE) Adresse IRQ-Handler. ProDOS positionne IRQ-Handler 4 la valeur $BFEB O3FE - EB LByte du pointeur IRQ-Handler. O3FF - BF HByte du pointeur IRQ-Handler. BFEB - AD 8B CO LDA $C08B BankSelect. Bank 1 autorisation de lecture, BFEE - AD 8B CO LDA $C08B + écriture. BFFI - 4C 3A DI JMP $D13A IRQ-Handler 4 partir du MLI. IRQ-HANDLER ENTRY (ML!) DI3A- AS 45 LDA $45 Charge la valeur de l'adresse $45 dans l'accumulateur — Registre A —. DI3C- 8D 88 BF STA $BF88 INTAREG. Sauvegarde de l'accumulateur. DI3F - 8E 89 BF STX $BF89 INTXREG. Sauvegarde de X dans la page globale. D142 - 8C 8A BF STY $BF8A = INTYREG. Sauvegarde de Y dans la page globale. 0145 - BA TSX Copie du pointeur de pile dans X. 0146 - 8E 8B BF STX $BF8B INTSREG. Sauvegarde du pointeur de pile. 0149 - 68 PLA Dépile la valeur du registre d'état PS. DI4A- 8D 8C BF STA $BF8C INTPREG. Sauvegarde du registre d'état PS. DiMD- 68 PLA Dépile l’adresse de retour ; LByte. DI4E- 8D 8E BF STA $BF8E INTADR. Sauvegarde de I'adresse de retour ; LByte. DIS} - 68 PLA Dépile l'adresse de retour ; HByte. 0152 - 8D 8F BF STA $BF8F Sauvegarde de l'adresse de retour ; HByte. DISS - 9A TXS Positionne le pointeur de pile. D156 - AD F8 07 LDA $07F8 MSLOT. Numéro de I'interface ; HByte. DI59 - 8D C4 DI STA $DIC4 Sauvegarde du numéro de I'interface. DISC- BA TSX DISD- 30 09 BMI $0168 Saut, si le pointeur de pile > £$7F, sinon, DISF - AQ OF LDY £$0F initialise le registre Y 4 la valeur 16, DI6l - 68 PLA et dépile 16 valeurs. Dil62- 99 AF FO STA S$FGAF,Y Sauvegarde des valeurs dépilées. DI65 - 88 DEY Décrémente Y d'une unité, D166 - 10 F9 BPL $D161 et continue 4 dépiler. DI68 - A2 FA LDX £SFA DI6A- BS 00 LDA $00,x Sauvegarde des valeurs de la page zéro, (suite page 24) AAgRERee Leer seUTEN ET NLE SEED DeCEEse Ho eeHNNUeROONARaeeweTEseeeE TEs see eos eee EES se eeeeeeeeeeeEsEeREs TREMPLIN MICRO aa DI6C- 9D DI6F - £8 DI70- D0 D172 - AD DI75 - FO DI7 - 20 DITA- 90 DI7C- AD DI7F - FO Dil - 20 Digs - 90 D186 - AD pig9 - FO DI8B- 20 DI8E- 90 D199 - AD D193 - FO DIS - 20 D198 - 90 DIIA- Ad DIC - 20 DI9F- A2 DIAI- BD DIAS- 95 DIA6- £8 DIA7— 00 DIA9- AE DIAC- 30 DIAE- AQ DiBg- 89 DiB3 - 48 DIB4 — CB DiBs - CO Di87 - D0 AS EF Fa a1 oc FA 00 F8 0B 00 BF 01 BF DI BF D1 BF 01 BF EF BF Fo STA INX BNE LDA BEQ JSR BCC LDA BEQ ISR BCC LDA BEQ JSR BCC LDA BEQ JSR BCC LDA JSR LDX LDA STA INX BNE LDX BMI LDY LDA PHA INY cPY BNE $EFAS,X $D16A $BF81 $D17C $DICE $D19F $BF83 $0186 $D1D1 $DI9F SBF85 $0190 $01D4 $D19F $BF87 $DI9A $0107 $DI9F $£$01 $BFOC £SFA SEFAS,X $00,x SDIAI S$BF8B $D1D9 £$00 SFOAF,Y £$10 $D1B0 de £$FA a £$FF. Incrémente la registre X, et continue avec la prochaine valeur. INTERRUPTS VECTORS Interrupt 1 : charge HByte de l'adresse de saut, adresse vide, charge le vecteur suivant. Vecteur utilisé : appel du sous-programme. Restaure la page zéro. Interrupt 2 : charge HByte de l’adresse de saut, adresse vide, charge le vecteur suivant. Vecteur utilisé : appel du sous-programme. Restaure la page zéro. Interrupt 3 : charge HByte de l’adresse de saut, adresse vide, charge le vecteur suivant. Vecteur utilisé : appel du sous-programme. Restaure la page zéro. Interrupt 4 : charge HByte de l'adresse de saut, adresse vide, charge le vecteur suivant. Vecteur utilisé : appel du sous-programme. Restaure la page zéro. ERROR HANDLER Aucun des pointeurs n'est en place dans la page globale de PRODOS, aux adresses $BF80-$BF87. Charge I’accumulateur avec la valeur £$61 qui sera utilisée comme drapeau — Flag — pour le code d’erreur. SYSTDEATH. Appel de la routine d'erreur : contient normale- ment un saut 4 $D1E6. Restaure la page zéro Initialise le registre X comme compteur. Charge les valeurs des adresses indexées, et les sauvegarde dans la page zéro. Incrémente de 1 le registre X, et continue la sauvegarde. INTSREG. Charge le pointeur de pile, y a-t-il assez de place ? oui sinon, empile les valeurs sauvegardées au préalable : voir 4 partir de $D161. Charge les valeurs des adresses indexées, et les empile. Incrémente de | le registre Y, et compare si les 16 valeurs ont été sauvegardées. Continue d'empiler. nee Denesoensesewe sens eneeeses sess ses cenEee ne sessaeeseeeeoveEesEEsDesesASsssREREseaToeeNesesseseeaceee 24 GUY-HACHETTE DIB? - AC 8A BF LDY $BF8A = INTYREG. Charge la valeur du registre Y. DIBC - AE 89 BF LDX $BF89 INTXREG. Charge la valeur du registre X. DIBF - AD FF CF LDA $CFFF CLRROM. Déconnecte les sous-programmes des ROM, entre $C8G0-$CFFF. DIC2- AD 90 Cl LDA $C1QG. — REACTIV CARD. Charge le numéro du périphérique DIC5 - AD C4 DI LDA $DIC4 HByte — $D1C4 de l'adresse $D159 — DIC8 - 8D F8 07 STA $07F8 et restaure MSLOT — $07F8 —. DICB- 4C DO BF JMP $BFDG —_—INTEXIT. Sortie de la routine via la "globale page” de PRODOS. Appel des sous-programmes, suite 4 une interruption : Ces sous-programmes sont uniquement sollicités par un "JSR" & partir des adresses $D177 ; $D181 ; $D18B et $D195. DICE- 6C 80 BF JMP ($BF80) Exécution de la routine Interrupt 1 DIDI- 6C 82 BF JMP ($BF82) Exécution de la routine Interrupt 2 DID4- 6C 84 BF JMP ($BF84) — Exécution de la routine Interrupt 3 DID7- 6C 86 BF JMP ($BF86) Exécution de la routine Interrupt 4 SET SYSERR Entrée par un JMP venant de l’adresse $BFG9. DIDA- 8D OF BF STA $BFOF Sauvegarde du code d’erreur. DIDD- 68 PLA Dépile l'adresse de retour ; LByte DIDE- 68 PLA HByte. DIDF- AD OF BF LDA $BFOF Charge le code de l'erreur DIEZ - 38 SEC Utilisé comme indicateur de I'erreur. DIES - 60 RTS Retour : normalement 4 $D078. System DEATH Entry 2: Uentrée du vecteur $D1E4 est appelée par la page globale de PRODOS, a savoir : REBOOT ($BF03) et SYSDEATH2 ($BFF6). DIE4- AI OO LDA £800 Fixe la valeur £$00 au code d’erreur. System DEATH Entry 1 : Al'entrée de la routine, l'accumulateur contient le code d’erreur rencontré. L'appel vient de la page globale de PRODOS, 4 partir de l'adresse $BFOC. DIE6~ AA TAX Copie le code d'erreur dans X. DIE7- 8D OC CO STA $COGC — Déconnecte la carte 80 colonnes — Ile et IIc. DIEA- AD 51 CO LDA $C051 Place le systéme en mode texte, DIED- AD 53 CO LDA $C053__—pleine page, DIFO- AD 54 CO LDA $C054 — page I, DIFZ - AD 56 CO LDA $C056 — et en basse résolution — LORES. DIF6 - AQ 27 LDY £$27 Initialise le registre Y, comme compteur DIFB- A9 AG LDA £$A0 et charge la valeur du nombre d’espaces. DIFA- 99 50 07 STA $0750,Y Affiche al’écran le texte : INSERT SYSTEM DISK AND RESTART. DIFD- B9 DE EF LDA $EFDE,Y Charge les caractéres stockés dans la carte langage, 0200- 99 DO 07 STA $07D0,Y continue l'affichage des caractéres 4 |'écran, 0203 - 88 DEY décrémente d'une unité le compteur Y, D204 - 10 F2 BPL $DIF8 et continue I'affichage. 0206 - 8A TXA Recopie le code d’erreur dans A, 0207 - FO 30 BEQ $0239 _— si GG, le code ne sera pas affiché : -ERRxx. 0209 - A9 AD LDA £$AD Charge le code ASCII de "-", 020B- 8D Fl 07 STA $07F1 et l'affiche 4 |'écran. D20E- Ad C5 LDA £$C5 Charge le code ASCII de "E", (suite page 26) AOE Sa UO RONEN TONER RENN eSUNART AON asEUeNAN ARATE AER ANeN EEA N ERNE DR eUNER OLE eEEEOLEeeRTeRREEETETEET ENE TREMPLIN MICRO 25 q 0210 - 0213 - 0215 - 0218 - D21B - D21C - D21D - D21E - D2IF - 0220 - 0222 - 0224 - 0226 - 0228 - D228 - D22C - D22E - 0230 - 0232 - D234 - 0236 - D239 - F2 07 D2 F3 07 F4 07 BO 02 06 Fo 07 OF BO BA 02 F7 07 39 D2 STA LDA STA STA TXA LSR LSR LSR LSR ORA CMP BCC ADC STA TXA AND ORA CMP BCC ADC STA JMP $07F2 £$D2 $07F3 $O7F4 £$80 £$BA $0228 £$06 $07F6 £S0F £$B0 £$BA $0236 $077 $0239 et l'affiche a I'écran. Charge le code ASCII de "R", et l'affiche deux fois 4 I’écran ——» R » -ERR Code vers l'accumulateur, et décale les bits, 4 fois vers la droite, ce qui équivaut 4 ne garder que les 4 bits de poids fort. Effectue un OU Inclusif avec £$BG (176), et compare si le résultat est supérieur 4 9. Pour les valeurs supérieures 4 9 ——» "A" - "F", affiche la valeur correcte 4 |'écran. Valeur des 4 bits de faible poids. Correction pour les valeurs supérieures 4 9, et affichage du résultat correct. Attente d'un RESET, car le programme boucle sur lui-méme — IMP $D239. INTEXIT Sortie de la routine de gestion d’interruption, lorsque ProDOS trouve un pointeur de sous- programme aux adresses $BF80-$BF87. BFDO - BFD3 - BFDS - BFD7 - BFD8 - BFDA — BFDD — BFDF - BFE2 - BFE4 — BFE7 - BFEA — IRQ-Handler Carte langage commutée : AD Fo 30 4A 90 AD BO AD Ad 8D AD 40 8D BF oD 08 gD 82 CO 08 83 CO 01 8D BF 88 BF LDA BEQ BMI LSR BCC LDA BCS LDA LDA STA LDA RTI $BF8D SBFE2 S$BFOF S$BFE7 $co82 $BFE7 $co83 £$01 $BF8D $BF88 FFOB — FOC — FFIE — FFAL - FFA2 — FFA4 - FFAS — FFA6 — 48 AS 8D 68 85 68 48 29 45 56 BF 45 PHA LDA STA PLA STA PLA PHA AND $45 $BF56 $45 £$10 INTBANK1. Charge le statut de la ROM. £$00 = Bank 1 connectée : elle le reste. £$FF = Bank 2 4 commuter. Sans signification, valeur aléatoire. £$01 = ROMON ; IRQ a partir du moniteur. Sans signification, valeur aléatoire. Commute la Bank 2 (protégée contre I'écriture). itialise l'accumulateur 4 la valeur £$01, et fixe le mode de la ROM — ROM ou Moniteur —. Recharge la valeur de I'accumulateur 4 partir de INTAREG. Retour de l'interruption. Sauvegarde de l'accumulateur. L'accumulateur contient le pointeur RWTB. INTACC. Sauvegarde du pointeur dans la page globale de PRODOS. Dépile vers A, la valeur initiale, contenue au moment de Iinterrup- tion IRQ, et la sauvegarde. Sauvegarde du registre d'état PS. Teste si IRQ provient d'un BReakK, 26 GUY-HACHETTE FFA8 - DO 18 BNE $FFC2 oui, alors branche 4 Ia routine BReaK. FFAA- AD 00 DO LDA $D990 —Sinon, teste quelle Bank est commutée. FFAD- 49 D8 EOR £$D8 BANKID pour la Bank 1. FFAF- FQ 02 BEQ $FFB3 FFB] - AQ FF LDA £$FF FFB3 - 8D 8D BF STA $BF8D INBANK1. £$0 Bank 1, ou £$FF Bank 2, FFB6 - 8D 57 BF STA $BF57 sauvegarde : $BF56-$BF57 » $45 pour LByte » £$00 ou £$FF pour HByte. Pointeurs possibles : HByte, LByte. $FF, contenu de $45. $00, contenu de $45. FFB) - AQ BF LDA £$BF Charge le pointeur HByte ; FFBB - 48 PHA et le place au sommet de la pile. FFBC - A9 50 LDA £$50 Charge le pointeur LByte ; FFBE - 48 PHA et le place au sommet de la pile. Fixe l'adresse $BF50 comme adresse RTI. FFBF - AQ 04 LDA £$04 Charge le drapeau du bit d'inhibition (bit 2) du registre d'état PS — IRQ masqué —, FECL - 48 PHA et le sauvegarde au sommet de Ia pile. FFC2 - AQ FA LDA £$FA Charge le pointeur HByte, FFC4 - 48 PHA et le sauvegarde au sommet de la pile. FFCS - AQ 41 LDA £$41 Charge le pointeur LByte, FFC7 — 48 PHA et le sauvegarde au sommet de la pile. Moniteur BReoK, adresse de retour : ——» $FA41 + £$01 = $FA42 (a cause du RTS: + 1). FFC8 - 8D 82 CO STA $C082_ROMON. Contient un RTS lorsque l'appel provient du moniteur. LANGIRQ Entrée de la routine, aprés une interruption IRQ appelée depuis la carte langage, et 4 la suite d'une ins- truction RTI détectée a l'adresse $BFEA de la page globale de PRODOS. BF50 - 8D 8B CO STA $C08B = BANKSELECT. Bank 1 : protégée contre I'écriture. BF53 - 4C D8 FF JMP $FFD8 = Saut dans Ia carte langage. LANGINTEXIT Entrée de la carte langage : provient d'une routine sollicitée par une interruption IRQ, avec comme ori- gine la page globale de PRODOS, aprés la sélection en lecture ; protégée contre |'écriture. FFO8 - 8D 88 BF STA $BF88 Sauvegarde du registre Accumulateur. FFDB - AD 56 BF LDA $BF56 INTACCU. Charge la valeur, FFDE- 85 45 STA $45 et sauvegarde en A5H. FFEQ - AD 8B CO LDA $CO8B BANKSELECT. Commute la Bank 1 FFE3 — AD 8B CO LDA $C08B + écriture autorisée. FFE6 - AD 57 BF LDA $BF57 £$00 = Bank 1 ; £$FF = Bank 2. Utilisé comme pointeur HByte. FFE9 - 4C D3 BF JMP $BFD3 INTEXIT2. Déconnecte la Bank et actualise RTI. (suite page 28) aaa ala aaa eee TREMPLIN MICRO 27 IRQ Interrupt Langage carte commutée : FFOB - 48 PHA Contenu de |'accumulateur, au moment de I'interruption IRQ. FEC - AS 45 LDA $45 Charge ASH, qui contient le pointeur : Read - Write — Tracks — Blocks — HByte —. FFOE 8D 56 BF STA $BF56 Sauvegarde dans INTACCU — Page globale —. FFAl — 68 PLA Dépile le contenu de |’accumulateur, au moment de I'interrup- tion IRQ, FFA2 - 85 45 STA $45 et le sauvegarde dans ASH. G FFB3 — 8D 8D BF STA $BF8D INTBANK1 FFB6 - 8D 57 BF STA $BF57 INTBANK2 a See a zs ae On ne peut pas dire que la programmation de f5. MATERIEL l'Apple //IGS soit d'une réelle simplicité. Bien sor, si l'on se contente du bon vieil Applesoft, pas de probléme, mais il en va autrement dés que le pro- grammeur en herbe tente d’utiliser les nombreux BOITE A OUTILS et merveilleux outils du GS. /, Comme le précise Jean-Pierre Curcio dans |'intro- DE L’'APPLE lcs duction de sa BO/TE A OUTILS DE L’APPLE IIGS, a remarquable facilité qu’apporte |'interface utilisa- teur est liée a des régles auxquelles doit impérati- vement se plier le programmeur. Plus de facilité pour l'utilisateur signifie en l'occurrence moins de liberté pour le développeur. Avec l'Apple //GS, on dispose d'une centaine de sous-programmes performants... mais qu'il faut apprendre 4 utiliser. On sait que la Toolbox de l'Apple /IGS ressemble & celle du Macintosh... mais ce n'est pas un avantage pour les incondition- nels de l'Apple //. Jean-Pierre Curcio apporte une trés importante contribution 4 la programmation avancée sur Apple /IGS. Chacun des chapitres de son ouvrage présente un outil (ou manager) et les routines qui le composent. Celles-ci sont illustrées par de petits exemples en € (d’ou I'intérét de commencer ou de poursuivre l’apprentissage de ce langage avec 5, Place du Colonel-Fabien 75491 PARIS Cédex 10 notre ami Claude Aubry). Service Minitel : A noter qu'un exemple complet est proposé 4 la fin Sur le 3615, toper Ol, puis PSI de chaque chapitre et qu'une disquette d’accompa- : ; gnement peut étre obtenue auprés de l’auteur. (344 pages — Reliure spirale). | NESTOR. CL eee 28 GUY-HACHETTE Vient de paraitre AUTOMATISME ET MICRO-ORDINATEURS * AUTOMATISMES ET MICRO-ORDINATEURS (Michel Jacquelin) Lo micro-intormatique va de plus en plus parti- ciper 4 la gestion programmée des automates. Cet ouvrage s‘adresse © l'utilisateur d'un micro-ordinateur (AMSTRAD, MSX, 107-70...) oyont déjd une certaine pratique de la pro- grammation, connaissant les matériels éduca- tits LEGO (et plus particuligrement les boites techniques auxquelles sont généralement Qssociés moteurs, capteurs et transmissions mécaniques diverses), et désirant réoliser lui- méme des automates ou jouets program- mables. Il découvrira avec ce livre, comment réaliser une machine & laver, un convoyeur, des feux tricolores ou encore un pont roulant, & Portir du bus d'extension de son micro- ordinateur Le livre s‘articule autour de cing parties — la logique et le GRAFCET (logique com- binatoire, séquentielle...) — La micro-informatique (Vordinateur, le bus d'extension...) — Les composants de |’automate (action- neurs, capteurs). — automate (definition, programma- tion, coupleurs et interfaces). — exploitation de l'automate (langage machine, langages évoluées, BASIC). De plus, certains concepts informatiques sont roppelés au lecteur, afin de lui permettre une Les Editeurs nous communiquent : meilleure compréhension des contenus de cer- tains chapitres. cedic/nathan — 6-10, boulevard Jourdan 75014 PARIS (160 pages — 99 F). * L'HOLOGRAPHIE pha spe @ /a réalisation pratique (Jean Héraud) Uholographie est l'une des inventions les plus Passionnantes de la science moderne, qui valut dailleurs & son découvreur, Denis Gabor, un juste prix Nobel en 1971. Elle permet |'élabora- tion d'un type nouveau de document dont le réalisme est total, les hologrammes, ces fameuses images non seulement en relief mais qui reproduisent les reflets, la micro-structure et méme les vroies couleurs. Grace 6 des lasers de faible puissance et peu coiteux, il est ‘aujourd'hui aussi facile de créer des hologram- mes que de réaliser des photographies Uouvrage de Jean Héraud permet d'aborder la technique de I'holographie, d'en comprendre les principes (optique, lumiére cohérente du laser) et de passer tres rapidement a lo réalisation. livre d'initiotion & lo pratique, il décrit en détail, a l'aide de nombreuses figures et photo- graphies, installation d'un petit laboratoire holographique : son matériel, sa mise en ceuvre... Grace aux progrés des lasers, |'ima- gerie holographique peut étre obordée por tous. Ce livre est, en effet, destiné & tous les amateurs qui désirent aborder I'holographie, quel que soit leur niveau de connaissances (jeunes, membres de clubs, lycéens...). De L'HOLOGRAPHIE DELA DECOUVERTE \ LA REALISATION PRATIQUE Dunno plus, lenthousiasme de 'auteur et sa grande compétence dans le domaine du laboratoire, acquise aprés de longues années de pratique, lui ont permis de perfectionner et de simplifier cette technique pour la mettre 4 la portée des non-initiés, en particulier en communiquant son savoir-faire et son expérience, si précieux pour réussir les différentes sortes d’hologram- mes (por transmission, par réflexion...). Comme il le dit lui-méme, “outre le cété artisti- que, c'est surtout lo minutie de l'opérateur qui est déterminante pour la réussite des beaux hologrammes”. En résumé, Jean Héraud o voulu, par cet ouvrage, permettre 4 ceux qui veulent aborder I'holographie de réaliser rapi- dement et facilement des hologrammes, apres en avoir bien compris le mécanisme, afin d’en exploiter av maximum toutes les possibilités. Dunod — 17, rve Rémy-Dumoncel B.P. 50, 75661 PARIS Cedex 14 (132 pages, broché, 120F) * LES NOUVELLES LOGIQUES POUR L'INTELLIGENCE ARTIFICIELLE (Arnold Kaufmann) informatique est née de l'application de la logique booléenne. Ses derniers développe- ments @ travers I'intelligence artificielle et les systémes experts demandent de nouveaux outils qui sachent traiter l'incertain, le subjec- tif, l'imprécis, propres aux opérations habituel- les de la pensée. Nouvelles logiques pour lintelligence artiticielle se propose d’étudier ces instruments. Destiné 4 un large public de scientifiques, d'informaticiens, mais aussi d'ingénieurs, de médecins, de biologistes, etc., cet ouvrage sappuie sur de trés nombreux exemples pour présenter les concepts caracté- ristiques des logiques floues, sous-ensembles aléatoires flous, représentations qui conser- vent la variété des jugements et reconnaissent des niveaux 4 lo connaissance. Arnold KAUF- MANN est un ancien professeur de |'Institut polytechnique de Grenoble, de |'Ecole supé- rieure des mines de Paris et de |'Université de Louvain. Il est I'auteur ou le co-outeur de plus de soixante ouvrages, dont certains ont été tra- duits en plus de vingt langues ; ces ouvrages concernent les mathématiques appliquées, la recherche opérotionnelle, «|'informatique, lo sociologie, les méthodes de créativité, divers domaines des sciences économiques. II con- vient de signaler, en particulier, ses ouvrages concernant les mathématiques floves, lesquels sont connus dans le monde entier. Les plus récents travaux d’Arnold KAUFMANN se rap- portent aux logiques floues, l'intelligence artificielle, aux systémes experts. Il a recu de nombreuses distinctions en France et dans le monde pour ses travaux. Relié — 300 pages — 290 F TTC. Editions HERMES — 51 rue Rennequin 75017 PARIS TREMPLIN MICRO 29 NTN bos | propos | MICROTEL CLUB MOURENX LOGIQUE elementaire Ce programme a été réalisé au MICROTEL DE MOURENX, sur APPLE /le avec carte 80 colonnes, sous ProDOS. Comme le précise M. HUGUET, cet “exercice de style” ne sert rigoureusement rien, sinon 4 amuser la galerie en décorti- quant un raisonnement logique dans un univers trés restreint. Il a en outre l‘avantage d’exprimer son raisonnement en langage clair (nous en fournissons un exemple, directement sorti sur imprimante, 4 la suite du programme). Nous le publions parce qu ‘il constitue un bon exercice, pour celles et ceux qui ne sont pas rompus 4 la pratique de |'Applesoft. Il est abondamment docu- menté (lire toutes les lignes de REM). De plus, il peut servir de schéma de départ pour I'élaboration de raisonnements beaucoup plus complexes... ce que nous souhaitons, bien entendu. 100 REM MICROTEL CLUB DE MOUREN 200 PRINT : PRINT : PRINT " XetJctd TYPE: "3; CHR (34) ;"DESIRE 110 REM ACHATSctJctJ OBJET"; CHR (34) 7DA5 120 REM 08 12 85 19 11 8éct 210 PRINT : PRINT "= sujet DE JctJ SIRE complement" 2A4A 130 REM PROGRAMME D’ INTELLIGENC 220 PRINT : PRINT " “PIERRE “DE E ARTIFICIELLE NO ictJctJ SIRE DU PAIN" 0E36 140 TEXT : HOME CSA 230 VTAB HTAB 1: PRINT ald 150 DIM A$(€200,20) ,NAC 200) ,PS(2 EZ UNE TOUCHE QUELCONGUE"'s a0) #D7D GET AS 160 DS = CHRE (4) B3A4 240 HOME : PRINT "OU BIEN:" 176 PRINT D$;"PREFIX /MICROTEL"” 5210 250 PRINT : PRINT : PRINT “ 180 HOME : PRINT " TYPE: "; CHRS (34);"DESIRE /MICROTEL/ACHATS" 2740 VERBE"; CHRS (34) 04A5 190 PRINT : PRINT : PRINT " 260 PRINT : PRINT "= sujet DE CE PROGRAMME RESOUT PAR LE SIRE complement verbal” DB24 RAISONNEMENT LE PROBLEME P 270 PRINT : PRINT " JEAN DE OSE PAR UNE BASE DE DONNE SIRE FAIRE DU SKI" 4B13 ES COMPRENANT DES PHRASES D 280 PRINT : PRINT : PRINT “AVEC U TYPE:" 4B8 L’EXPLICATION:" 4E12 30 GUY-HACHETTE 3€ 35 4c 4 44 46 4¢ 4y 4é 45 5¢ Si Sz Si 5¢ wo ow 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 480 490 500 S10 520 530 540 550 PRINT : PRINT “= POUR “""ve rbe ~~"IL FAUT ~“complement 1, complement 2 ET comple ment 3" PRINT : PRINT "= POUR FAIRE DU SKI IL FAUT “DES SKIS ~ “"", DES CHAUSSURES “ET DES TICKETS" VTAB 22: HTAB 1: PRINT “TAP £2 UNE TOUCHE QUELCONGUE";: GET As HOME : PRINT "OU DES PHRASE S DU TYPE:" PRINT : PRINT : PRINT " ~~~ “TYPE: "“; CHRS (34) ;"POSSED E"; CHR$ (34) PRINT : PRINT "= sujet “~“PO SSEDE “complement” PRINT : PRINT " “JULES ~"PO SSEDE “DES SKIS" PRINT : PRINT : PRINT "AVEC SA COROLLAIRE:" PRINT : PRINT "= sujet ““VE UT VENDRE ~“complement" PRINT : PRINT " “JULES ““VE UT VENDRE ~“DES SKIS" VTAB 20: HTAB 1: PRINT "<L* ABSENCE DE COROLLAIRE SUPPO SE QUE JULES NE VEUT PAS VE NDRE DES SKIS,)" VTAB 22: HTAB 1: PRINT "TAP —2 UNE TOUCHE QUELCONQUE";: GET AS GOTO 520 REM ctUctJRESTITUTION DES P HRASESctJctJctJ HOME FOR 1 = 170 1J PRINT 13" """3 FOR T = 1 TO NACI) PRINT AS(I,T)3" "3 NEXT T PRINT : PRINT NEXT I RETURN REM ctUctJ MENUctJctd HOME : YVTAB 10: PRINT "YOUL EZ-YOUS TRAITER UNE ANCIENN — BASE DE DONNEES? ~~ “TAPE 2a" PRINT : PRINT "QU BIEN COMP LETER UNE ANCIENNE BASE DE DONNEES? ~~""~“TAPEZ M* PRINT : PRINT “QU ENCORE EN 0665 7551 766D 19FA $568 2081 279E 18FF S1Bé6 3003 766D 0942 2F97 2F1F 3A10 7DC0 49313 A7D6 9DCB 6381 FCE3 9C28 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 CREER UNE NOUVELLE? se bese eee SoBe ABE ph GET A$: IF A$’ = CHR$ (27) THEN END IF AS = "A" IF AS = "M" THEN 400 IF A’ < > "C* THEN 530 REM ctJctUNOM?ctJctJ PRINT D3; "CATALOG" INPUT "NOM DE LA BASE DE 00 NNEES DESIREE ? ";RS REM ctJctJOUVERTUREctuctJct fi ONERR GOTO 780 PRINT D$;"OPEN" ;R PRINT D8; "READ" ;RS INPUT IJ FORT = 170 lJ INPUT NACI) FOR T = 1 TO NACI) INPUT A$(1,T) NEXT T NEXT I PRINT D$;"CLOSE" POKE 216,0 GOSUB 420 PRINT : PRINT "TAPEZ UNE TO UCHE QUELCONQUE."; GET AS: GOTO 860 HOME : PRINT "IL SEMBLE QUE CETTE BASE DE DONNEES NE C ONVIENNE PAS. VOULEZ-VOUS R ECOMMENCER?" POKE 214,0 GET A$: PRINT A$: IF AS = CHR$ (27) THEN 2910 IF A’ = "O" THEN 600 IF A’ = "N" THEN 2910 GOTO 780 REM ctJctJENTREE DE DONNEES THEN 1630 13K = 1:P$<1) REM ctJINSTRUCTIONSctJd HOME : PRINT “PHRASES DU TY PE:": PRINT " “X “DESIRE “Y PRINT " “POUR “Y 34 (224-003 ET ZN° PRINT " “X “POSSEDE “Y": PR INT " “X “VEUT VENDRE “Y" PRINT "(L’ABSENCE DE MENTIO N: X VEUT VENDRE Y SUPPOSE “IL FAUT 2 A32E 6224 35F5 3ccD OBIS 789C AIS? 7EEF 8984 D26E 1117 2F1F 70C0 CFO3 A706 9DCB C31? OCAE F946 3996 53A4 OCAE Fec? 42CF F804 29448 6549 opcc DI9F 4753 TREMPLIN MICRO 31 LOGIQUE ELEMENTAIRE (svite) QUE X NE VEUT PAS VENDRE Y) (1) = 7: GOTO 1180 S0CA " 3053 1170 GOTO 1130 3070 920 PRINT "*** “ANNULE LA PHRAS 1180 IF A$(I1,T) = "POUR" OR ASCI E PRECEDENTE" 700E ;7) = "DESIRE" OR ASCI,T) = 930 PRINT "FIN “APRES LA DERNIE "POSSEDE" THEN F = 1: GOTO RE PHRASE" BBS4 1350 FBp0 940 REM ctJENTREE DES CARACTERE 1190 IF T < 2 THEN 1350 8591 SctJ 1200 IF A$(1,7) = "FAUT" AND AS( 950 VTAB 9: HTAB 1: PRINT I;" " 1,7 - 1) = "IL" THEN F = 1: ; BCF3 GOTO 1290 C318 960 GET C$: PRINT C$: IF C$ = 1210 IF LEN <AS(I,T - 19) < 3T CHR$ (44) THEN C$ = CHRS (¢ HEN 1230 D4E8 42) 6807 1220 IF A$(1,T) = "FAUT" AND RI 970 IF C$ = CHR$ (13) THEN 104 GHT$ (AS(1,T - 12,2) = "IL" 0 DBO? THEN X = 2: GOTO 1320 EDcO 980 IF C$ = CHR$ (8) THEN IF 1230 IF AS(I,T) = "VENDRE" AND A LEN ¢P$(I1)) = 0 THEN PRINT $(1,T - 1) = "VEUT" THEN F CHR$ (7): GOTO 940 4678 = 1: GOTO 1290 945E 990 IF C$ = CHR$ (8) THEN IF 1240 IF LEN (AS{I1,T - 19) < 5ST LEN (P$(1)) = 1 THEN P$(I) HEN 1260 F6ED = ""; GOTO 950 a771 1250 IF A${1,T) = "VENDRE" AND 1000 IF C$ = CHR$ (8) THEN P$<(I RIGHTS (AS(I,T - 12,4) = "V ) = LEFTS (P$(1), LEN (P< EUT" THEN X = 4: GOTO 1320 2607 1)) - 1) GOTO 1020 co4D 1260 IF F = 1 THEN F = 0: GOTO 1 1010 P$(1) = PS(I) + CS Asis 350 ccaAc 1020 VTAB 9: HTAB 1: PRINT 1;" * 1270 IF RIGHTS (AS(I,T),1) = "* 3P$(1); CHR$ (29);: GOTO 96 " THEN F = 1: GOTO 1290 D3BD 0 8S9E 1280 IF AS(I,T) = "ET" THEN 1350 6D6¢ 1030 REM ctUCAS SPECIAUXctd 1290 AS(I,T - 1) = ASCI,T - 1) + 1040 IF P$(I) = "FIN" THEN IJ = " "+ ASCI,T)SASCI,T) = "" 5702 1 - 1: GOTO 1460 6506 1300 IF K = LEN (P$(1)) THEN NA 1050 IF P$(I) = "***" THEN I = I (1) = T - 1: GOTO 1370 EECS - 2: GOTO 840 6AFI 1310 GOTO 1130 3070 1060 REM ctJANALYSE DES PHRASES- 1320 AS(1,T) = RIGHTS (AS(I1,T - MISE EN SEGMENTS SIGNIFICAT 1),X) +" " + ASCI,T) EAF9 IFSctJ 1330 AS(I1,T - 1) = LEFTS (AS<I, 1070 REM I = NUMERO DE LA PHRASE T - 1), LEN (ASCI,T - 19) - 1080 REM AS (1,7) = SEGMENT SIGN x-1) 37EF IFICATIF 1340 F = 1: GOTO 1350 1DF5 1090 REM T = NUMERO DU SEGMENT D 1350 IF K = LEN ¢P$(1)) THEN NA ANS LA PHRASE (1) = T: GOTO 1370 62CB 1100 REM NA (I) = NOMBRE DE SEGM 1360 T= 7 + 1: GOTO 1130 4E18 ENTS DANS LA PHRASE IctJ 1370 HOME : PRINT I;" "3; BCAE 1110 ASCI,T) = LEFTS (P$(1),1) 42°39 1380 FOR T = 1 TO NACI) 700 1120 IF AS(1,T) = "" THEN I = 1 1390 IF RIGHTS (A$(I,T),1) = "* - 1: GOTO 860 OFES “ THEN PRINT LEFT$ (AS(I, 1130 K = K + 1:08 = MIDS (PS(1) T), LEN (A$¢1,T)) - 1) CHR gid OEED $ (44);" "3: GOTO 1410 4970 1140 IF C$ =" " THEN 1180 DADS 1400 PRINT AS<1,T)5"_ "5 4313 1150 AS(I,T) = AS(1,T) + CB FAFD 1410 NEXT T A7D6 1160 IF K = LEN ¢P$(I)) THEN NA 1420 VTAB 23: PRINT "OK? ~<O/N)" 32 GUY-HACHETTE oma 3: GET As oFOD " THEN AS(J,T) = LEFTS (AS 1430 IF AS = "0" THEN 860 7407 (3,7), LEN (A$(J,T)) - 1): 1440 IF AS’ < > "N" THEN 1420 S4CF PRINT AS$(J,T); CHRS (44);" 1450 P$(1) = "":1 = 1 - 1: GOTO "5:A8CJ,T) = ASCI,T) + * "2 860 BA3B GOTO 1920 7AB9 1460 REM ctJctJMISE. SUR DISKETTE 1890 AS(J,T) = ASCJ,T) +" " B9FC ctdctJctd 1900 PRINT AS(J,T); 9775 1470 GOSUB 420 F946 1910 IF LEFT$ (A$(J,T),3) = “ET 1480 PRINT D$;"OPEN" ;R 8984 " THEN AS(J,T) = MIDS (AS 1490 PRINT 0$;"CLOSE" C517 (J,7),4, LEN (A$(J,T)) - 1) 3098 1500 PRINT D$; "DELETE" ;R$ 6005 1920 NEXT T A7D6 1510 PRINT D$;"OPEN" ;R$ aged 1930 PRINT 758A 1520 PRINT D$; "WRITE" ;R$ EDDD 1940 NEXT J A3CC 1530 PRINT IJ 3040 1950 PRINT D$;"PRE3" 5099 1540 FOR I = 1 TO IJ 2FiF 1960 HOME : VTAB 10: PRINT “TAPE 1550 PRINT NACI) SEES 2 UNE TOUCHE QUELCONQUE." = 000 1560 FOR T = 1 TO NACI) 70co 1970 GET A$:X = 1: GOTO 1810 7165 1570 PRINT A$<1,T) 7F39 1980 PRINT : PRINT : PRINT 742 1580 NEXT T A706 1990 PRINT "RAISONNEMENT :": PRI 1590 NEXT I 9DCB NT : PRINT 36D3 1600 PRINT D$;"CLOSE" C517 2000 REM ctJctJDESIREctJctJctJ 1610 REM ctJctJENCHAINEMENTctJct 2010 W=1 £058 Jctd 2020 FOR I = WTO IJ 5245 1620 2V = 1 COB1 2030 IF A$(1,0) = "*" THEN 2050 050! 1630 TEXT : HOME 105A 2040 IF A$<(I,2) = "DESIRE " THEN 1640 DIM BAS(50) ,CAS(50) 996D ZA = 1: GOTO 2080 ope? 1650 IF 2V = 1 THEN 1800 OcEB 2050 NEXT I 9DCB 1660 REM ctJctJBASE DE DONNEESct 2060 IF 24 = 0 THEN PRINT : PRI JetdctJ NT "C’EST TOUT !": GOTO 291 1670 PRINT 0$;"CATALOG" 789C 0 19B2 1680 INPUT "NOM DE LA BASE DE 00 2070 2A = 0: GOTO 2010 BF43 NNEES DESIREE ? ";RS AI6? 2080 PRINT :R = 1 2B5F 1690 1 = 0:X =0 99DB 2090 GOSUB 2790 7282 1700 PRINT D$;"OPEN" ;R$ 8984 2100 IF A%<1,4) = “POUR " THEN Z 1710 PRINT D$;"READ" ;R$ D26E D = 1: GOTO 2150 8096 1720 INPUT IJ 1117 2110 REM ctJctJPOUR Y IL FAUTctJ 1730 FOR I = 1 TO IJ 2F iF ctJctd 1740 INPUT NACI) ARAL 2120 FOR J=1 701d 4F20 1750 FOR T = 1 TO NACI) 70c0 2130 IF A$(J,1) = "POUR " AND AS 1760 INPUT AS<1,T) CFO3 (J,2) = AS(1,3) AND AS(I,3) 1770 NEXT T A7Ds = "IL FAUT " THEN 2230 27AD 1780 NEXT I 9DCB 2140 NEXT J A3CC 1790 PRINT D$;"CLOSE" C517 2150 REM ctJctJPOSSEDE YctJctJct 1800 I$ = CHRS (9) ECAE J 1810 PRINT D$;"PRE1" 5197 2160 FOR J= 1 70 IJ 4F20 1820 PRINT 1$;"80N"; 5A97 2170 IF A$(J,2) = "POSSEDE “ AND 1830 IF X = 1 THEN X = 0: GOTO 1 A$(J,3) = AS(1,3) THEN ZC = 980 sFD9 1: GOTO 2380 48c0 1840 PRINT "BASE DE DONNEES ";RS 2180 NEXT J A3cc y" 3" PRINT : PRINT 0180 2190 IF 2C = 0 THEN PRINT “ET Q@ 1850 FOR J = 1 TO lJ 4F20 UE RIEN NE PERMET DE LE SAT 1860 PRINT J;" ~"; D8FE ISFAIRE," F2F 1870 FOR T = 1 TO NACJ) 7701 2200 PRINT "ALORS ";A$(1,1);"RES 1880 IF RIGHTS (AS(J,T),1) = "* TE INSATISFAIT ." 33E5 TREMPLIN MICRO 33 hla a aaa ee EE 2210 2220 2230 2240 2250 2260 2270 2280 2290 2300 2310 2320 2330 2340 2350 2360 2370 2380 2390 2400 2410 2420 2430 2440 2450 2460 2470 2480 2490 2500 2510 2520 2530 LOGIQUE ELEMENTAIRE (svite) a a AS(I,0) = "*":2C = 0:2B = 0 :2D = 0 GOTO 2050 R=J GOSUB 2790 PRINT “ALORS ";A$(1,1) ;AS¢I 92) jAB(I,4) 5ASCT,1) ASC I, 2) IF NACJ) = 4 THEN 2300 FOR K = 5 TO NACJ) PRINT “ET ";AS<1,1) 5;AS¢1,2) jASCT,K) 5086S, 1) ASC, 2) NEXT K A$(1,3) = AS(J,4)1AS(1,4) = AS(J,1):ASK1,5) = ASCJ,2):N ACID = 5 IF NACJ) = 4 THEN 2B = 0: G OTO 2020 FOR K = 5 TO NACJ) W=ls+1 AS(I1J,1) = AS(1,1) :AS(IJ,2) = ASC(1,2):AS(1J,3) = ASCI,K d2AS(1,4) = ASCJ,1) ASCIU, 5) = As(J,2) NACI) = 5 NEXT K 2B = 0: R=J GOSUB 2790 REM ctJctJX POSSEDE YctJctJ ctJ IF AS(J,1) = ASCI1,1) THEN 2 570 GOTO 2020 REM ctJctJZ VEUT VENDRE Yct JctJct FOR K= 1 70 IJ IF AS(K,1) = ASCJ,1) AND AS (K,2) = "VEUT VENDRE " AND AS(K,3) = A$(J,3) THEN 2480 NEXT K PRINT "ET QUE ";A$(J,1);"NE VEUT PAS VENDRE "j;AS(J,3) GOTO 2180 R=K GOSUB 2790 Wwe= "A" IF LEFTS (AS(J,1),3) = "LE " THEN AS(J,1) = MIDS (AS (3,1) ,4):W% = "AU * PRINT "ALORS "3A$(1,1);"ACH ETE ";AS(1,3) ;W;AS(J,1) PRINT "ET ";A8(1,1);"POSSED 161E 6772 1Dé6C 7282 059A 6764 29BC F7C9 AlcD 9984 38E4 29BC B3EF 652B 2778 AICD A545 106C 7282 19C8 8F21 O6AE ACD 3572 SB76 1Bé6D 7282 20F0 O2CF DC466 2540 2550 2560 2570 2580 2590 2600 2610 2620 2630 2640 2650 2660 2670 2680 2690 2700 2710 2720 2730 2740 2750 2760 2770 2780 2790 2800 2810 2820 2830 2840 2850 2860 E ";as(J,3) AS(J,1) = ASCI,1D AS(K,1) = "":AS(K,2) = "A $(K,3) = "":NACK) = 0 2B = 0:2C = 0: GOTO 2020 REM ctJctJUX EST SATISFAITct JctJctd IF 2D = 1 THEN 2660 PRINT "ALORS "; PRINT AS(1,1);"EST SATISFAI ™." FOR L = 1 TO NACI) As(1,L) = "" NEXT L NACI) = 0:2C = 0:2D = 0 2B = 0: GOTO 2050 REM ctJctJD’AUTRES DESIRSct Jetuctd FORL = 170 1J IF A$(L,0) = "*" THEN 2700 IF AS{L,1) = AS<1,1) AND AS (L,2) = A$(1,2) AND A$(L,3) <{ > ASC1,3) AND AS(L,4) = NEXT L PRINT "ALORS ";AS(1,1);"PEU T ";ASCI,5) PRINT "ET "; GOTO 2400 PRINT "ALORS ";A$(1,1);"POU RRAIT ";A%(1,5) R = L:BAS(R) = 0 GOSUB 2820 AS(1,0) = "*" 2B = 0:2C = O:W = L: GOTO 2 020 REM ctJctJS/P RECONSTITUTIO N DE PHRASESctJctJctJ "MAIS ":2D = IF 2B = 0 THEN BAS(R) = "CO MME ":2B = 1: GOTO 2820 BAS(R) = "ET QUE " FOR T = 1 TO NAR) BAS(R) = BAS(R) + ASC(R,T) IF AS<R,2) = "DESIRE " THEN 2870 IF T > 4 AND T ¢ NACR) THEN CAS(R) = CAS(R) + LEFTS (A $(R,T), LEN (AS(R,T)) - 1) + CHRS (44) + " ": GOTO 288 0 IF T > 4 AND T = NACR) THEN E39A FES? B732 ADIC S2DE Fé6DA 9497 SEB8 8088 97CE 6FD8 AB48 8E22 OFD6 97CE 47AE 43F2 5073 CFES 1028 777C 1A99 06c9 Fos4 2A22 8ccy 99B4 AAPB BFOS GUY-HACHETTE CAS(R) = CAS(R) + "ET "+A 2910 REM ctJctJFINctJctJ $(R,T): GOTO 2880 2870 CAS<R) = BAS<R) 2880 NEXT T 2890 PRINT CAS<R) 2900 RETURN EAID 2920 PRINT : PRINT : PRINT : PRI Essayez, dans un premier temps, de construire votre propre base de données a partir de ce petit exemple. Rappelons que ce programme dinitiation a été réalisé dans le cadre des activités du MICROTEL CLUB DE MOURENX. 4065 NT : PRINT 638A A7D6 2930 PRINT D$;"PRE£3" SD9? 9FO5 2940 END 0180 $3B1 EXEMPLE BASE DE DONNEES SIMPLE : ANDRE DESIRE MANGER POUR MANGER IL FAUT DU PAIN ET DE LA CONFITURE INTERMARCHE POSSEDE DE LA CONFITURE LE BOULANGER POSSEDE DU PAIN INTERMARCHE VEUT VENDRE DE LA CONFITURE LE BOULANGER VEUT VENDRE DU PAIN aununwn RAISONNEMENT : COMME ANDRE DESIRE MANGER ET QUE POUR MANGER IL FAUT DU PAIN ET DE LA CONFITURE ALORS ANDRE DESIRE DU PAIN POUR MANGER ET ANDRE DESIRE DE LA CONFITURE POUR MANGER COMME ANDRE DESIRE DU PAIN POUR MANGER ET QUE LE BOULANGER POSSEDE DU PAIN ET QUE LE BOULANGER VEUT VENDRE DU PAIN ALORS ANDRE ACHETE DU PAIN AU BOULANGER ET ANDRE POSSEDE DU PAIN COMME ANDRE DESIRE DU PAIN POUR MANGER ET QUE ANDRE POSSEDE DU PAIN ALORS ANDRE POURRAIT MANGER MAIS ANDRE DESIRE DE LA CONFITURE POUR MANGER COMME ANDRE DESIRE DE LA CONFITURE POUR MANGER ET QUE INTERMARCHE POSSEDE DE LA CONFITURE ET QUE INTERMARCHE VEUT VENDRE DE LA CONFITURE ALORS ANDRE ACHETE DE LA CONFITURE A INTERMARCHE ET ANDRE POSSEDE DE LA CONFITURE COMME ANDRE DESIRE DE LA CONFITURE POUR MANGER ET QUE ANDRE POSSEDE DE LA CONFITURE ALORS ANDRE PEUT MANGER ET ANDRE EST SATISFAIT . C’EST TOUT ! TREMPLIN MICRO Vient de paraitre Les Editeurs nous communiquent : INITIATION A ¢ INITIATION A dBASE Ill Plus (par R. Cowart tradvit de ‘américain par J.-P. Cano) Cet ouvrage permet au néophyte d’ap- prendre en quelques heures les comman- des de base de dBASE Ill Plus. Il se présente sous la forme d'un tutorial qui guide |'utilisateur pas @ pas dans l‘apprentissage des nouvelles fonctions : création d'entrée des données et mise & jour d'une base de données. La descrip- tion de certaines techniques évoluées permet de sélectionner les informations suivant des critéres tres spécifiques, dorganiser et de mettre jour rapide- ment les fichiers et de créer des rapports de type professionnel. Cet ouvrage contient : — recherches élaborées en utilisant les fonctions et les opérateurs de dBASE ; — différents niveaux de tris et d'indexages ; — entrée de commandes 6 partir du point dttente ; — manipulation des nombres, des dates et des champs logiques ; — linkage de fichiers de données multi- ples ; — création de masques de saisies person- nalisés pour I'entrée des données. Tous les exemples de ce livre sont traités sous un aspect professionel : base de données téléphone, étiquettes postales, gestion de stocks, multifichiers, etc... Un livre broché de 308 poges au format 190X220, 248 F SYBEX, 6-8 impasse du Curé 75018 PARIS. © NOUVEAU DICTIONNAIRE BASE Ill ET dBASE Ill Plus (par G. Renner et D. Schmit tra- duit de 'allemand par J. Bourdev) Ouvrage de référence, ce dictionnaire doit essentiellement assister |'utilisa- teur dans son travail quotidien. Toutes les commandes et fonctions sont analysées en détail et classées par catégorie d'emploi. Chacune dentre elles est décrite avec : — sonréle; — la version du logiciel 4 partir de laquelle elle est disponible ; — sa syntaxe complete ; — les conseils d'emploi ainsi que son utilisation avec d'autres commandes ; — les différences entre dBASE Ill et dBASE Ill Plus ov entre les ver- sions frangaises et américaines ; — plusieurs exemples détaillés d'utilisation. Uouvrage aborde également les com- mandes, les fonctions réseaux et les utilitaires tels que le générateur de tables et I'éditeur de liens. Il propose enfin des annexes permet- tant un accés immédiat aux informa- tions le plus souvent recherchées, tel- les que la syntaxe exacte d'une com- mande ou le réle des touches de contrdle. Un livre broché de 618 pages au format 190 230, 298 F SYBEX, 6-8 impasse du Curé 75018 PARIS. ¢ MS-DOS APPROFONDI J. Kamin traduit de ‘américain par J.-L. Gréco) Cet ouvrage s‘adresse aux utilisateurs expérimentés de MS-DOS (versions 2.1 4 3.1). Une section traite les comman- des les moins familiéres de ce systeme d'exploitation. Uessentiel de l'ouvrage a pour but de familiariser l'utilisateur avec les tech- niques les plus évoluées lui permettant d'accroitre sa productivité : configura- tion du systéme, de I'écran et du cla- vier, élaboration de commandes per- sonnalisées, utilitaires de gestion de disques et de mise au point, gestion d'imprimante, etc... ll comporte une bibliothéque de sous- programmes préts a l'emploi et s'impose comme |'outil indispensable de tout utilisateur efficace de MS-DOS. L'AUTEUR: Jonathan Kamin est l‘ovteur de ————— nombreux ouvrages sur les micro-ordinateurs. 1 est également professeur de sociologie et de musique. |I est docteur de Univer. sité de Princeton. Un livre broché de 44? pages au format 190X230, 278 F SYBEX, 6-8 impasse du Curé 75018 PARIS. * INTRODUCTION A PASCAL AVEC TURBO PASCAL (par P. Le Beux) Cet ouvrage s'adresse aux débutants et ne requiert aucune formation préa- lable aux techniques de |'informatique. Les différents concepts du langage y sont présentés de facon progressive et pédagogique, accompagnés de nom- breux exemples. Pour cette seconde édition, le Turbo Pascal est le langage de référence. Le livre met en valeur ses qualités intrin- séques de langage simple et structuré. Le traitement graphique y est égale- ment abordé. Il s'agit essentiellement d'un ouvrage de référence. WAUTEUR: Pierre Le Beux est ingénieur de ————~__ Ecole Centrale et docteur en informatique de |'Université de Californie. |I est louteur, chez Sybex, de nombreux best-sellers. Spécialiste des langages de programmation, i! est professeur 4 I'Université de Technologie de Compiégne. Un livre broché de 686 pages av format 190 230, 248 F SYBEX, 6-8 impasse du Curé 75018 PARIS. INTRODUCTION A 36 GUY-HACHETTE Si ce re ta co co vo de ni sir La BG BD LH LB Cei mo at ajo sof not DH ter cor iis g TRE | AMPERCOMMAND Si l'Applesoft est pour la majeure partie d'entre nous un Basic comportant un certain nombre de déficiences, le systéme dans lequel il navigue permet, heu- reusement, de pallier la plupart de ses manques. Lorsqu’on se penche sur cer- tains vecteurs de la page 3 ($0300 4 $03FF), grande est notre satisfaction en constatant que l'un d’entre eux, le fameux Ampersand, permet d’ajouter des commandes nouvelles 4 ce bon vieil Applesoft. AMPERCOMMAND fonctionne aussi bien en DOS 3.3 qu’en PRODOS et met a votre disposition, dans sa version de base, la possibilité d’afficher des fenétres de n'importe quelle taille (dans les limites de I'écran texte, bien sdr !), a n'importe quel emplacement de |’écran. Le nombre des fenétres affichables simultanément est illimité et ne dépend que de votre humeur. Francois GALLET 1° Reportez-vous a la Table des commandes | SYNTAXE (ligne 281). Insérez le texte de votre com- Lo syntaxe est trés simple : & FENETRE BG,BD,LH,LB mande, si c'est la premiére que vous ajoutez, P e R ek la suite du pointeur de fin de‘commande (octet ' 86 = Bord gauche de la fenétre que l'on désire $00) de FENETRE. Les octets composant votre ' afficher. commande devront étre codés en ASCII bas (bit i BD = Bord droit. 7 40) et se terminer par un $00. ‘ LH = Ligne du haut. ‘ LB = Ligne du bas. Exemple: Vous ajoutez la commande & EFFACE. Ecrivez ASC 'EFFACE' suivi de HEX 00. Le codage hexadécimal de EFFACE devra étre celui-ci : 45 46 46 41 43 45 suivi de 60. Cette commande est active en mode direct ou en mode programme. AMPERCOMMAND apporte également un support & tous ceux qui, pratiquant |'Assembleur, désirent ajouter des instructions supplémentaires 4 |'Apple- soft. On peut ainsi placer jusqu’a 256 commandes nouvelles, comme par exemple, & PRINT USING, & DHGR (Double Haute Résolution Graphique), etc. La longueur de la syntaxe importe peu (255 carac- teres maxi), les espaces, s'ils n'ont pas été définis comme partie intégrante de la commande, sont ignorés lors de l'exécution. COMMENT AJOUTER UNE COMMANDE ? Pour cela, servez-vous du source d'AMPERCOM- MAND et procédez ainsi : Il faut maintenant indiquer 4 AMPERCOMMAND que vous avez ajouté une commande et préci- ser oU trouver le programme de traitement. Reportez-vous 4 la ligne 118 du source. En arri- vant ici, AMPERCOMMAND contirme qu'il a bien trouvé la correspondance entre ce qui est dans le buffer ($0200) et quelque chose dans la table, le registre X contenant le numéro d'ordre de la commande trouvée. Reprenons |'exemple de & EFFACE : NOERROR CPX £00 BNE CDE2 : Commande & FENETRE. SiX<> 0, on passe dla commande n°2. saeneneeseeesscesoesesseesrensenaeneaseeesecsaseeseeesensennsensaeneennCosneeesnansReReeseoeeoRaEDOTee TREMPLIN MICRO 37 JMP FENETRE ; Vers traitement de & mande se termine par I'instruction "JMP BASIC" FENETRE. afin de pouvoir rendre la main au systéme dés CDE2 CPX £$01 ; Commande & EFFACE. l'exécution achevée de votre nouvelle BNE CDE3 —; SiX<> 1, onpasse la commande. commande n°3. JMP EFFACE ; Vers traitement de & La routine a été implantée en $8000, mais peut . EFFACE. tre assemblée n'importe ob en mémoire, selon la masse de codes que vous ne manquerez pas de CDES NOP i Autres commandes... rajouter au fur et 4 mesure de votre développe- Votre nouvelle commande est opérationnelle... ment. Notez qu'AMPERCOMMAND repositionne la si le traitement existe, bien sir ! valeur de HIMEM pour se protéger et qu'un RESET malencontreux ne le perturbe pas. Pour rendre 3° Les traitements d’erreurs se trouvent 4 la ligne actif AMPERCOMMAND, faites "CALL 32768" en 108. Si vous désirez que |'Apples

Showing the first 100000 of 169919 characters.

mp.ls