Skip to main content

tremplin micro newsletter issue 19

  • PublicationApple Periodicals
  • Pages70
  • Sourcetremplin_micro_newsletter_issue_19.pdf
← Magazines tremplin micro newsletter issue 19
/ 70
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
Hh ie Sea | ne rogrammez ussi —— i ge sp eee tremplin | SOMMAIRE micro 19 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 Lo Pesite Motte — Senillé — 86100 CHATELLERAULT Téléphone : 49.93.66.66 PUBLICITE : Raymond JULLIEN (1) 45.75.41.81 Commission Paritaire : Les revues qui choisissent d’étre réel- Jement au service du Lecteur, en ne Vobligeant pas & glaner, dons plu- sieurs magazines, les renseigne- ments concernant sa machine, ne bénéficient pas du numéro de Com- mission Poritaire, et pas d’avantage des torifs postaux réduits TREMPLIN MICRO — Bimestriel — Cest une publication des Editions JIBENA, 4, rue de la Cour-des-Noves, 75020 PARIS — S.A. ou capitol de 3600000 F — Imprimé por CITE-PRESS/PARIS — Service de vente Presse-Promotion, tél, > 49.93.65,08. — Dépat léga! & la date de parution — Inscrip- tion & la Commission Poritaire des Publica tions et Agences de Presse : en cours — Directeur de Ja Publication : Guy-Clément COGNE — Diffusion N.M.P.P. lo disquette TREMPLIN MICRO contient tous les programmes du numéro, ainsi que les sources trop longs pour étre publiés dons les colonnes de la revue. Avec la colla collaboration de : Claude AUBRY, Philippe BORDAS, Robert CAZENAVE, Rofi DERYEGHIYAN, Marc FREFOYE, Guy-HACHETTE, Yvan KOENIG, NESTOR, Hubert PELC, Emile SCHWARZ. Heureusement, il y a l'Amérique | (Guy-HACHETTE) .............-. 2 FICHIER DIRECT INDEXE en Applesoft (Marc FREFOYE) .............. 3 LES NOUVELLES LASERWRITER sont arrivées ..................000. 8 CLASSEMENT-BUF (Langage machine, avec Nestor) .............005 10 LE RETOUR DU RETOUR DE LAM (Yvan KCENIG — APPLESOFT) VW DISQUE DUR DE 20 MEGAS SUR GS (Nestor) .............0..000005 13 FRENCH-USING ET LE GS BASIC (Yvan KOENIG) ........... 00000000 15 LES ERREURS EN APPLESOFT, SOUS PRODOS (Emile SCHWARZ) ..... 7 STATISTIQUES (Rafi DERYEGHIYAN — APPLESOFT) ................ 19 ETICSOFT DISK (Philippe BORDAS — APPLESOFT) ............-..... 23 LANGAGE C ses Choines de caractéres, classification et —_— conversion de types 33 avec C. AUBRY LEJEUDELAVIEEN C. 36 UAC ME cocncccnnomnncicumminasermntawamcanmnoneeive 38 RESOLUTION D'UN SYSTEME D'EQUATIONS (Hubert PELC — APPLESOFT) SE Sasa te eRe eM CAT RULES 39 FREEZER (EXCLUSIVITE, Yvan KCENIG) 0 s:sssasernonsiverersnaens 4) GSB.HELLO (Emile: SCHWARZ) 'svis:si0s0s.ssarcnuairasuncaswsincseaivne 45 GSB Super Haute Résolution (Emile SCHWARZ) ..............005 46 LE TURBO BASIC DE BORLAND ...... ick 48 PREMIERES SURPRISES AVEC LEGS BASIC ..............-00.0000005 49 Le MS-DOS sur votre APPLE Nestor a essayé le PC Transporter ........... 52 APPRENTISSAGE DU CLAVIER (Robert CAZENAVE — APPLESOFT).... 55 LOUPE d'un lecteur, en Applesoft ...........000600ccce cece eee ee 60 US. DRAW GP EJECTION. « i0:cienscmriensinneensnncenmicmnmsrne sername 61 TRACE FLECHE (amusette L.M, por Nestor) .............00cc00eeees 62 CHERCHEZ UERREUR oo :ssnccoasncves 65 MORBO: PROLOG: sacpucissciosganeiese aa ttpeas as snaagaln deaues 67 BIBLIOTHEQUE INFORMATIQUE 6,7, 14, 22, 51, 64, 66 a a / paces f — / Guy HACHETTE—epITO / Heureusement. ily a l'Amerique ! = Que deviendraient les applemania- ques sans I'apport américain ? oui, je sais: la contribution frangaise n'est pas négligeable. La preuve : Jean-Louis Gassée et quelques autres. Nous avons aussi un autre exemple, significatif, personnifié par Philippe Kahn, le fondateur et animateur de Borland. Reste que les applemaniaques heu- reux possesseurs d’un Apple Il et notamment d'un GS, se sentiraient terriblement désemparés s'il n'y avait pas les U.S.A. Parce que |d-bas, amie Lectrice, ami Lecteur, ‘Apple Il n'est pas mort et le GS se porte plutét bien. Les logi- ciels destinés au beau dernier se multiplient, pour la plus grande satisfaction des Fran¢gais comman- dant directement leurs produits outre-Atlantique. Cété programmation, ¢a ne va pas mal non plus. Merlin PRO-16 existe et se révéle — 6 combien ! — plus simple a utiliser que l'assembleur officiel du GS. Cété Basic, en plus du GS BASIC (que je vous conseille d’acquérir sans plus tarder*), on n’annonce pas moins de deux Basics compilés (rassurez-vous : ils recon- naitront vos programmes en GS Basic... sauf erreur de ma part). Bref, on se demande pourquoi le réseau Apple frangais n‘en fait pas plus pour vendre une machine qui — fait nouveau (lire I’article de Nes- tor) — peut méme se transformer / Pace2 / en compatible ? Vous connaissez la réponse : pour vendre du MAC et rien que du MAC. Moi, je veux bien. Je posséde un MAC. Pour étre franc, je dois préci- ser qu'il m‘a codté une fortune puisqu’il provient d'un échange : un Mac Plus contre un Lisa... et quel- ques milliers de francs. Cest effectivement une machine agréable, sympathique, conviviale, mais sans intérét (4 mes yeux du moins) quand elle n'est pas dotée d'un disque dur. J’ajoute que les augures ne prétent au Mac Plus qu'une durée de vie limitée: son remplagant est déja dans les vitrines et ne cote pas beaucoup plus cher. Mais que font les bidouilleurs et autres programmeurs d’un MAC ? Or, n’en déplaise aux voyants extra-lucides des Ulis, cette race dutilisateurs n'est pas encore éteinte. Ni le culte de la vieille Pomme. Je me demande méme si, demain, on ne reviendra pas 4 une programmation plus simple, plus proche du langage machine, sur de géniales petites machines, capa- bles, grace aux astuces des hom- mes, de pédaler comme des grandes. Cun. = / Basic appiesorr / — FICIND La longueur des enregistre- ments a volontairement été limitée & 39 caractéres, mais elle peut 6tre augmentée. OBJET: Mémoriser, dans un fichier & accés direct, un certain nombre d'enregistrements de 39 caractéres maximum, mais pouvoir les retrouver rapidement grace 4 une recherche dans un index des mots-clés. Le programme comprend donc deux fichiers : * FIC qui constitue la base de données, * IND qui est entigrement chargé en mémoire vive et contient la liste des mots-clés et les numéros des enregistrements correspondants de FIC. LIMITES : La mémoire de la machine... Il est évident que l'on n‘a pas intérét 4 multiplier le nombre des mots-clés. Marc FREFOYE. TEXT : NORMAL : HOME : CLEAR DS = CHRS (4): PRINT D$"PRE3": PRINT HOME DIM MO$¢500,1) PRINT D$"OPEN IND": GOTO 560 ONERR GOTO 135 e IND (séquentiel) PRINT D$"OPEN FIC,L41": PRINT D$"READ FI = c,Ro" * FIC (direct) INPUT NE: GOTO 140 sont ouverts au début POKE 216,0: PRINT D$"WRITE FIC,RO": PRIN du programme. On ne T NE les refermera que lors- PRINT Dt que loption 5 (FIN DE INVERSE : FOR I = 1 70 3: FORJ=1705 TRAVAIL) sera choisie. : PRINT * “"3: NEXT : PRINT : NEXT : VTAB 2: PRINT “ “FICHIER DIRECT INDEXE " : NORMAL RESTORE :V = 10: TEXT VTAB 7: PRINT “I] y a "NE" enregistr." . DATA SAISIE,LECTURE ,MODIFICATION,MOTS-CL Le PRINT D$ de la ligne ES,FIN DE TRAVAIL, , 140 indique 4 ProDOS V = V + 2: READ R$: IF R$ = "" THEN 175 que l'on n’accéde plus INVERSE : VTAB V: PRINT (UV - 10) / 23: N (provisoirement) — au ORMAL : PRINT "> “"R$: GOTO 165 fichier ouvert par VTAB V: PRINT " Choix: "z: GET R$: PR PRINT D$"OPEN...”. INT : IF RS < "1" OR RF > STRE CCU - 12 Remarq / Paces / / Ficinn / )» / 2) THEN 175 180 IF R$ = "5" THEN TEXT : GOTO 685 185 GOTO 405 190: 195 REM Saisie 200 : 205 PRINT “Longueur maximum de chaque donnée : 39 caractéres “""""""" "(la ponctuation est autorisée)" 210 EN = NE 215 FOR I = 1 TO 49: PRINT "-";: NEXT : PRIN T 220e POKE 34,5:EN = EN + 1:E% 225 VTAB 12: HTAB 6: FOR I = "-"s3 NEXT : PRINT 230 GOSUB 375 235 VTAB 12: HTAB 6: PRINT “";: CALL =" 240 FOR X = 512 TO 55i: IF PEEK (X) <¢ > 14 1 THEN ES = E$ + CHRS ¢ PEEK (X) - 128) + NEXT 245 IF E$ = "" THEN EN = EN - 1: GOTO 150 250 GOSUB 375 255 VTAB 22: PRINT "(C)ORRECTION <E)NREGISTR EMENT ";: GET R&: PRINT 260 IF R$ = "C" OR RS = "c" THEN 230 265 IF R$ < > “"E"* AND R$ <¢ > "e" THEN 150 270 : 275 REM Ecriture d’un enregistrement 280 : 285 PRINT D$"WRITE FIC,R"EN: PRINT CHRS (34 ) + ES: PRINT DS 290 IF EN > NE THEN NE = EN 295 IF CH = 3 THEN GOSUB 650 300 GOSUB 480 305 IF CH = 3 THEN NU = EN:EN = EM: GOTO 150 310 GOTO 220 315.3 320 REM Lecture des données 325 : 330 VTAB 3: INPUT "Numéro a lire ? ";R$:NU = VAL (R$): IF NU > NE OR NU = 0 THEN HOM E : GOTO 150 335 PRINT D$"READ FIC,R"NU 340 INPUT ES 345 PRINT DS 350 EM = EN:EN = NU: GOSUB 375:NU = EN:EN = EM:EM = 0 355 GOTO 150 360 : 365 REM Affichage d’une donnée 370 : 375 VTAB 12 380 HTAB 1: PRINT EN;: HTAB 6: PRINT E$;: IF ES < > "" THEN CALL - 958 / paces / 1 TO 39: PRINT - 657: 633E 3841 1944 003A 003A ASDC 45F6 F349 CFé1 9ESD 234F 4866 E456 Secs? 234F EBE1 OFSE 4812 003A 0034 C314 605C 3C4A FC4C 3BAF 273F 003A 0034 4c4B B4a9S ACED BF22 D2F9 3341 003A 003A 6605 6014 NE = Nombre de lignes des données. La routine utilisée per- met de saisir la ponc- tuation, mais elle ne filtre pas les caractéres de contréle. Trois phases : @ Saisie de Ia ligne. © Enregistrement ou correction. © Choix des mots- clés. ll n'y a pas de contréle proprement dit de la longueur... mais on ne lit que 40 caractéres (39 + RETURN), ce qui résout le probleme (ligne 240). Ne vous inquiétez pas si votre lecteur de dis- quette ne ronronne pas a la suite de chaque enregistrement. Les données ne sont co- piées sur la disquette que lorsque le buffer est plein. INPUT normal. La ligne est affichée et on retourne aussitét au menu général. Il suffi- rait de modifier la ligne 355 pour éviter ce “détour" : 355 GOTO 330 CH = Code du choix: © = Saisie @® = Lecture ® = Modification @ = Mots-clés © = Fin de travail. option 5 est traitée par la ligne 180. En cas de modification d'une donnée (il peut s'agir d'un remplace- ment radical !), les mots-clés —_correspon- dants sont effacés de la mémoire... et rempla- cés par ceux découlant de Ia nouvelle ligne. Le programme décom- pose la phrase en M mots (3 lettres et au- dessus), affiche ces derniers et vous pro- pose de sélectionner les numéros qui vous conviennent. Il faut ter- miner par @. Atten- tion! on peut sélec- tionner plusieurs fois le méme numéro. Il est facile de remédier 4 ce défaut en modifiant ainsi la ligne 535 : 535 1F M$(R)< > "” THEN NM =NM+1:S=S + 1: MOS(NM,@) MS(R) : MS(R) =": MOS(NM,1) = STR$ (EN) : GOTO 525 385 390 395 400 405 410 415 420 425 430 435 440 445 450 455 460 465 470 475 480 485 490 495 S00 505 510 Sis 520 525 530 535 540 545 550 555 560 565 570 575 580 585 / Basic appiesorr / PRINT : RETURN REM Affichage du choix FOR I = 24 TO 1 STEP - 1: VTAB I: HTAB 27: PRINT CHR$ (255);: NEXT : PRINT POKE 32,30: POKE 33,49:CH = VAL (R$): I F CH < > 3 THEN HOME RESTORE : FOR I = 1 TO CH: READ R$: NEXT VTAB 1: FOR I = 1 TO 49: PRINT ""3: NEX T : PRINT : VTAB 1 INVERSE : HTAB (49 - NT R$: NORMAL POKE 34,2: POKE 35,23: IF CH ¢ HOME ON CH GOTO 205,330,455,585 LEN (R$)) / 2: PRI > 1 THEN REM MODIFICATION IF NOT NU THEN 330 —M = EN:EN = NU: GOTO 230 REM Mots-clés L = LEN (E$):1 = 13M = 0:3 = 0:S = 0: V TAB 13: CALL - 958:K = 0 K = K + 1:R$ = MIDS (E$,K,1): IF RB < * A“ OR R$ > "O" THEN R$ = " “: GOTO 495 IF K = L THEN J = J + 1: GOTO 500 IF R$ <¢ > " “ THEN 510 IF J > = 3 THENM =M + 1:M$(M) = MIDS (E$,1,0) 1=K + 1:J = 0: GOTO 515 Jv=J+1 IF K < L THEN 485 VTAB 14: FOR I = 1 TOM: PRINT I") "MS(I >: NEXT VTAB 22: INPUT "Numéros retenus (0 pour finird: ";R$: IF R$ = "O" THEN 540 R= VAL (R$): IF R ¢ 1 OR R > M THEN 52 5 NM = NM + 1:S MO$(NM,1) = RETURN = S + 1:MO$(NM,0) = M$(R): STR$ (EN): GOTO 525 REM Recherche par mot-clé POKE 216,0: ONERR GOTO 570 PRINT D$"READ IND": FOR I = 1 TO 500: IN PUT MO$(1,0): INPUT MO$¢I,1): NEXT PRINT D$: POKE 216,0 NM = 1 - 1: IF NM < 1 THEN NM = 0 IF NOT CH THEN 120 HOME FEAS 003A 003A 29C4 9180 FOF2 4FBS 5100 oB08 DDDB 003A 003A 7270 A7AF 0034 0034 81CF 9FD3 2881 / Ficinp / 590 595 600 605 610 615 $20 625 630 635 : 640 645 650 655 660 665 670 675 680 685 690 691 695 700 VTAB 22: INPUT “Recherche sur le mot: "; RS ac7? VTAB 5 2607 IF R$ = "" THEN 150 5D91 ae FOR J = 1 TO NM: IF MO$(J,0) < > R® THE ‘Se VAL (MOs¢J,1)) e33 rh ie oka i D$"READ FIC,R"EN: INPUT E$: PRINT nant le mot défini par GOSUB 380: PRINT ye Tunlisateuns Oni ‘peut NEXT J aacc économiser de la place GOTO 590 1349 en resserrant les li- 0034 gnes. Supprimer pour REM Suppression de mots-clé cela le PRINT de la : 003A ligne 620. I= 0 6549 1 = 1 + 1: IF MO$(I,1) = STR$ (EN) THEN FOR J = 1 TO NM:MOS(J,0) = MOS¢J + 1,0): MOS(J,1) = MOS(J + 1,1): NEXT J:NM = NM IF 1 ¢ NM THEN 655 1106 RETURN 63B1 : 003A En fin de travail, il faut REM Mise & jour/fermeture des fichiers ars mettre @ jour le nom- IF NM THEN PRINT D$"CLOSE IND": PRINT D “ heli gatoatelag $"DELETE IND": PRINT D$"OPEN IND": PRINT ans: FIC (NE), enregis- D$*WRITE IND": FOR I = 1 TO NM: PRINT MO trer la nouvelle liste $(1,0): PRINT MO$(1,1): NEXT 3E96 des mots-clés et fermer PRINT D$"WRITE FIC,RO": PRINT NE: PRINT les deux fichiers par un D$"CLOSE" D42E seul : PRINT NM 3955 PRINT D$" CLOSE” HOME 2F97 PRINT D$"PREFIX/T19": PRINT D$"RUNMENU* DEB / LES LIVRES Explorer QuickBASIC /rm / EXPLORER QuickBASIC (Christian Renard) Les lecteurs de Tremplin Micro sont en majorité des amateurs s‘intéressant 4 la programmation et aux langa- ges. Nombreux sont ceux qui, dans leur travail, sont amenés 4 utiliser le BASICA et le GWBasic. Le QuickBASIC de Microsoft commence aussi 4 séduire bon nombre d’adeptes du Basic, sans doute grace a son caractére trés professionnel. Ce livre belge fait le point et montre bien comment tirer le maximum de profit du QuickBASIC... et notamment de ses possibilités cachées. Une disquette (contenant programmes et utilitaires) est disponible. BCM (Belgique) distribué en France par le PS! — 256 pages, 165 FF TTC. | _ / pestvres / — VOTRE BIBLIOTHEQUE INFORMATI © EXPLORING THE APPLE l/GS (Gary B. Little) Vous étes I'heureux possesseur d'un Apple /GS tout neuf, mais un peu mystérieux... et lo “littérature” concer- nant la machine vous a laissé sur votre faim ? Si vous pratiquez |'anglais, offrez-vous cet ouvrage de Gary B. Little et partez 4 la découverte de votre GS en douze chopitres... complétés par huit appendices renfermant un moxi- mum d'informations. Je crois que la simple énumération des sujets abordés saura déjd vous mettre l'eau a la bou- che : Explorer ‘Apple IGS, Program- mer le 65816, Utiliser les outils, Memory management, Event manage- ment, Fenétres et Graphiques, Menus, Accessoires de bureau, ProDOS 16, Son et musique... J'ai dé en oublier quelques-uns, mais ce n'est pas grave, Le bouquin est bien présenté, abondamment documenté, et on y trouve évidemment des exem- ples fort intéressants. Je souhaite qu'il soit bientét traduit en francais 4 l'intention des utilisa- teurs qui restent allergiques Vanglais. Etude attentive (et instruc- tive) 6 conseiller aux autres ! ‘Addison-Wesley Publishing Company De Loiessestraot 9 1071 PJ AMSTERDAM Poys-Bos. * SOS GW/PC BASIC Vaste programme que de retenir les 230 instructions et fonctions de |'inter- préteur GW BASIC de Microsoft. Dans SOS GW/PC BASIC, toutes les instructions et fonctions existantes sont regroupées par familles. Chacune est suivie des paramétres nécessaires. Un court descriptif explique briéve- ment l'action de l'instruction, ainsi que les conseils sur son utilisation prati- que. La recherche est facilitée par la présence d'une table de référence et d'un index. Bien sdr, ce guide est destiné au pro- grammeur ayant déja assimilé les bases du langage BASIC ainsi que le systéme d'exploitation MS/DOS. 150 poges, 99F TTC. EDITIONS MICRO APPLICATION 13, rue Sointe-Cécile 75009 PARIS — Tél. (1) 47.70.3244. * SOS MS/DOS Réalisé pour les utilisateurs du systéme d'exploitation MS/DOS 3.3 et ‘antérieur, ce guide n'est pas un ma- nuel de référence du MS/DOS, mais un aide-mémoire DOS. Complet, SOS MS/DOS présente por ordre olphobétique toutes les comman- des DOS. Méme les fichiers Batch et le fichier CONFIG-SYS y sont détaillés. Pour tous les programmeurs désireux de conserver une certaine portabilité & leurs logiciels, SOS MS/DOS donne la liste des interruptions MS/DOS, 210 pages, 99 F ITC EDITIONS MICRO APPLICATION 13, rue Sainte-Cécile 75008 PARIS — Tel, - (1) 47.70.32.44. * LES DISQUES DURS DES PC & COMPATIBLES (Jonathan Kamin) Voici un ouvrage destiné a tous les infor- ‘maticiens travaillant dans un environne- ment MS-DOS avec un disque dur. I pré- sente les différentes strategies d’organi- sation d'un systéme informatique avec les points suivants : — les disques durs ; comment les orga- niser et les gérer — la configuration et la maintenance du systéme — les procédures d'orchivage et de souvegarde — l'utilisation de la mémoire étendue — l'utilisation de logiciels résidents en RAM et Ia limitation des contlits — organisation des menus systéme. Des renseignements utiles apparaissent tout au long de l'ouvrage, comme la mise en ceuvre du fichier AUTOEXEC.BAT, la définition d'un chemin d'accés, la cons- truction de répertoires arborescents, la mise en ceuvre des disques virtuels, ‘optimisation des temps de chargement de fichiers, etc. Louvrage présente aussi de nombreux programmes pour la plu- part des fichiers Batch, mais aussi des fichiers écrons et macro utilisés pour la gestion du clavier. Bien qu'il soit fait rété- rence a la version 3.2 du DOS, tous les concepts présentés sont applicables a des versions antérieures et les quelques cos spécifiques 4 la version 3.2 sont toujours précédés d'une mise en garde. Jonathan Kamin est diplomé de l'Université de Princeton. Il est l'auteur de nombreux ouvrages parus aux éditions Sybex. SYBEX, 6.8 Imposse du Curé, 75018 PARIS Tel. - (1) 42.03,95.95. 430 pages, 278 F ————————————————————s / PACE? / — a / materi / LaserWriter Ii les imprimantes LaserWriter SC, LaserWriter IINT et Laser- Writer IINTX remplacent le modéle LaserWriter Plus. Elles apportent de nouvelles possibili- tes d'impression, une vitesse accrue ainsi que d'importantes capacités d’extension. La conception modulaire de la nou- velle famille LaserWriter II, cons- truite autour du méme bloc moteur Canon LPB-SX, permet de progres- ser simplement et économique- ment d'un modéle a un autre selon _les besoins de l'utilisateur. Une famille de trois imprimantes Une imprimante LaserWriter II est constituée d'une partie commune 4 toute Ia famille : la carrosserie con- tenant le bloc moteur Canon LPB-SX imprimant 8 pages par minute avec une résolution de 300 points par pouce, chaque modéle ayant une carte contréleur qui en définit les caractéristiques spécifiques. L'imprimante _LaserWriter —IISC (pour “interface SCSI") est le modéle d’entrée de gamme, non partageable. Le traitement des textes et des graphiques est réa- lisé par les routines internes de Macintosh : QuickDraw. L'imprimante LaserWriter _ INT (pour "Ne Tworkable”) est fonc- tionnellement équivalente 4 la précédente LaserWriter Plus. La mémoire vive a été augmentée de 25%, procurant ainsi un gain de vitesse de 25 & 40 % suivant les utilisations. Elle intégre la der- niére version du langage de des- cription de page PostScript. Uimprimante LaserWriter lINTX (pour "Ne Tworkable and eXpan- lable”) est /a premiére impri- monte laser du marché a étre construite autour du microproces- seur Motorola 68020. La LaserWriter IINT est une impri- mante de haute performance, 244 fois plus rapide que |'imprimante LaserWriter Plus et bénéficiant également d'importantes capaci- tés d'extension (mémoire, polices de caractéres...). Comme le modéle LaserWriter IINT, |'impri- mante LaserWriter IINTX est parta- geable sur le réseau Apple Talk et contient également la derniére version de PostScript. Les imprimantes LaserWriter II sont destinées 4 la famille Macin- tosh (Macintosh Plus, Macintosh SE et Macintosh II) ainsi qu’é l’Apple LaserwWriter isc le modéle dientrée de gamme: LaserWriter IISC, s‘adresse 4 I'utiliso- teur indépendant pour de |'édition per- sonnelle de base (correspondance sophistiquée, mémo, présentations, rapports, mise en page de base). Uimprimante LaserWriter IISC est idéale pour l'utilisateur qui, tout en demandant une haute qualité diimpression, ne recherche ni I'utili- sation en réseau, ni l'impression de textes et graphiques complexes. impression pleine page est obtenue par [l'utilisation du langage Quick- Draw, résidant dans tout Macintosh. Limprimante LaserWriter IISC est construite autour du microproces- seur 68000 Motorola et comprend 1Mo de RAM nécessaire pour une résolution de 300-dpi tout en conser- vant une grande vitesse de sortie. Quatre polices 4 intégrer au systeme de Macintosh sont livrées avec Vimprimante : Times, Courrier, Hel- vetica et Symbol, disponibles du corps 9 au corps 24. Une interface SCSI permet un trans- fert de données accéléré pour une impression rapide ainsi que la flexi- bilité pour chainer jusqua 6 périphériques. . UNE NOUVELLE FAMILLE D’IMPRIMANTES NGS dans le cadre de certaines applications. Les utilisateurs MS-DOS et OS/2 peuvent également imprimer sur LaserWriter IINTX ou LaserWriter IINT, soit par l'intermédiaire de la carte Apple Talk PC, soit grace aux modes émulations qu‘autorisent les deux imprimantes. "Notre succés croissant dans les Entreprises, |'Administration et \'Education Universitaire ne tient pas seulement & Macintosh mais aussi aux imprimantes LaserWriter et @ leur utilisation généralisée comme outil universel de producti- vité", rappelle Sébastien Sisom- bat, Directeur du Marketing d'Apple France. "L'arrivée de la nouvelle famille de LaserWriter souligne la volonté d‘Apple de res- ter leader dans I'édition person- nelle, tout en apportant une amé- lioration constante de la qualité d'impression et cela pour un plus grand nombre d'utilisateurs.” Un nouveau bloc moteur pour la famille LaserWriter II Construites autour du nouveau moteur Canon LPB-SX, les impri- mantes LaserWriter II impriment a une vitesse d’entrainement de 8 pages par minute, avec une réso- lution de 300 points par pouce (dpi). Leur durée de vie de 300 000 pages représente le triple de celle de Iimprimante LaserWriter Plus, déja connue pour sa fiabilité. La qualité des noirs et des aplats a aussi été améliorée ainsi que la durée de vie de leur cartouche d’encre (+ 25%). La contenance du bac 4 papier en format A4 a été accrue, elle passe 206 feuilles. Un bac 4 papier pour format américain (lettre US) ainsi qu'un bac 4 papier 4 enveloppes pouvant accepter jusqu’d 15 envelop- pes sont également disponibles. Un chargeur manuel réglable du format lettre au format enveloppe est éga- lement disponible. — / aces | ———————— errr LaserWriter lINT Imprimante de haute _ perfor- mance, 4 un codt inférieur 4 celui de la LaserWriter Plus d’Apple, limprimante LaserWriter IINT peut &tre utilisée de fagons variées, de la simple correspondance a des Présentations complexes. Elle tépond parfaitement aux attentes de petits groupes de travail grace 4 ses possibilités de mise en réseau. Construite autour du microproces- seur 68006 Motorola, I'imprimante laserWriter IINT dispose de 35 polices de caractéres en standard et d'une architecture Apple Talk permettant le partage en réseau. Une architecture mode émula- tion Diablo 636 permet la compa- tibilité avec les systemes MS- DOS et OS/2 et un port série RS- 232 autorise la connection avec d'autres ordinateurs. Uimprimante LaserWriter IINT uti- lise généralement la derniére ver- sion de PostScript ; elle comporte 1 Mo de ROM et 2 Mo de RAM. Ce gain de mémoire permet une augmentation de la vitesse d'im- Pression ainsi que le télécharge- ment de polices de caractéres. = Enfin, le bloc moteur est moins volumineux et plus léger (20,5 kg) que le modéle précédent (32 kg). Une architecture modulaire la principale caractéristique de la famille LaserWriter II réside dans son architecture modulaire. Les trois imprimantes partagent une plate-forme commune et peuvent tre converties au modéle supé- rieur par un concessionnaire Apple por simple changement de la carte contréleur, ce qui préserve ainsi les investissements initiaux. "Associées aux Macintosh, les nouvelles LaserWriter Il amélio- rent les possibilités d’intégration de systéme donnant ainsi aux utili- sateurs Apple une solution homo- gene, qui est actuellement la plus simple 4 utiliser et la plus perfor- mante”, commente Jean-Louis Gassée, Senior Vice Président d'Apple, en charge de la Recher- che et du Développement. “Apple crée un nouveau standard dans impression laser avec |'introduc- tion de |'imprimante LaserWriter IINTX basée sur le microproces- seur Motorola 68020, tenant ainsi une fois de plus ses promesses de Proposer 4 ses utilisateurs des pro- duits toujours plus performants. Avec l'arrivée de lo LaserWriter Il, Apple propose une large gamme d'iimprimantes laser totalement modulable”. . Prix et disponibilité Uimprimante LaserWriter IINT est disponible au lancement et les imprimantes LaserWriter IISC et NTX le seront en mars. LaserWriter IISC 19900 F HT LaserWriter IINT 29900 F HT LaserWriter IINTX 39900 F HT La LaserWriter Plus n'est plus livrée, mais Apple continue d’en assurer le service Aprés-Vente. Par la suite, cette base installée bénéficiera de révisions du sys- téme des drivers d'impression. LaserWriter IINTX alate Uimprimante LaserWriter IINTX répond aux besoins en rapidité et en volume des groupes de travail. Elle est également 4 méme de pro- duire les textes et graphiques sophistiqués qu’attendent les gra- phistes professionnels. Construite autour du microproces- seur Motorola 68020, @ 16,5 Mhz, cette imprimante est jusqu’d 4 fois plus rapide que 'imprimante LoserWriter Plus. _ L'imprimante LaserWriter IINTX utilise PostScript comme langage de description de Page, ce qui permet d'imprimer des textes et des graphiques sophisti- qués et de trés haute qualité. La configuration standard Laser- Writer IINTX comprend 1 Mo de ROM, 2 Mo de RAM, 35 polices de caractéres. L'architecture Apple Talk autorise le partage en réseau de l'imprimante. Uimprimante LaserWriter IINTX a trois possibilités d’extension : addi- tion de ROM, extensibilité de la RAM jvsqu’d 12 Mo et possibilité de chai- ner un ou plusieurs disques durs. Des cartes d’extension de polices de caractéres, proposées par des partenaires, peuvent étre instal- lées directement sur le connecteur de la carte contréleur, augmentant ainsi le nombre de polices de ca- ractéres résidentes dans la ROM. Les caractéres pouvant étre toute forme de graphique, ces cartes d'extension de polices peuvent étre utilisées pour stocker les logos ou des marques déposées. La RAM interne peut étre étendde de 2 4 12 Mo. Cette augmentation de mémoire améliore la vitesse de traitement de l'impression, la pos- sibilité de téléchargement de poli- ces de caractéres et permet de conserver en mémoire sous forme de bitmaps des polices de caracté- res en prévision d'utilisations futures. Un ou plusieurs disques durs SCSI peuvent étre chainés directement a l'imprimante ;_ piloté par celle-ci, l'utilisateur dispose d'une vaste capacité de stockage pour des poli- ces de caractéres supplémentaires, tout en y accédant rapidement. Uimprimante LaserWriter IINTX josséde un port série RS-232 pour la connection avec d'autres ordina- teurs. Elle offre également la pos- sibilité de travailler en mode ému- lation Diablo 630 ainsi qu'en mode émulation LaserJetPlus, assurant de cette facgon l’ouverture avec deux des imprimantes les plus uti- lisées dans I'univers MS-DOS et OS/2. . Ls | PACES /— — / NESTOR —LANGAGE MACHINE / CLASSEMENT-BUF QUESTION : Comment saisir un texte et le réafficher instantanément, mais avec tous ses éléments triés, suivant leur valeur ASCII, en commengant par Ia plus petite, et ainsi de suite ? * VIDER L’'ECRAN (FACULTATIF) 00/6300 : FC58 * SAISIE 00/0363 : FD6F Saut a INPUT ($FD6F). 00/0306: 86 06 A la sortie, la longueur est dans X. * DEBUT DU TRI te ; 4 fag Y sert de pointeur pour le tri. 00/630C: BD G2060,X Valeur de rang X... 00/036F: DD GIFF,X comparée 4 valeur de rang X - 1. 00/0312: Bd 0320 6+@0Cé Siplus grande ou égale, saut. * PERMUTATION ———— 00/0314 : BC GIFF,X Valeur X - 1 dans Y. 00/0317 : 9D OIFF,X Valeur X dans X - 1. GG/O31A: 98 Y dans A. 00/031B: 9D 0206,X Valeur X - 1 dans X. Q0/G31E: E6 O7 07 Pointeur incrémenté. 00/0326: CA x=x-1. 00/0321: DG E9 @30C é6-17@ Six est différent de @, encore... 00/0323 : Aé G6 06 Sinon x retrouve sa valeur maxi. 00/0325: AS 07 07 —} Si le pointeur est 4G, pas de permuta- 00/0327: DG DF 0308 6-21e _! tion : tri terminé. Sinon ¢a repart. - REAFFICHAGE 00/0329 : 9D Gi 0201,X @ ala suite du texte, dans le buffer. 00/032C: AG G2 £02 Partie haute de l’adresse dans Y. @0/G32E: 4C 3A DB3A Affichage de la chaine pointée par Y et A. Désossemblage sur GS BSAVE CLASSEMENT-BUF, A$300, L$31 UTILISATION: BRUN CLASSEMENT.BUF ou BLOAD, puis CALL 768 @ partir d'un pro- gramme en Basic. REMAROUE: $DBS3A affiche une chaine pointée A (partie basse) et Y (partie haute) et terminée par @ (ou “). EXEMPLE (les espaces — CHR$(32) — sont évidemment en téte) : COMMENT ETRE CERTAIN d’etre le premier & 13 heures ? *13?RACCEEEEIMMNNORRTTTdeeeeeeehi Imprrrrstu = / 2690 —————— / Yvan KOENIG — APPLE Iie, lic, Gs / — le retour du retour de LAM Dans Tremplin Micro n°16, je vous avais proposé une formule permettant d’employer la bonne vieille routine de LAM sur votre GS tout neuf. Ne croyez pas au Pére Noél, la nou- velle Rom de la machine n‘a rien changé sur ce point. Par contre, j‘ai encore gratté mes méninges et les entrailles de la béte (4 moins que je n‘aie fait I'inverse) et je vous apporte une solution TOUT BASIC. Regardons le programme listé ci-dessous : Lorsque la ligne 40 a copié la chaine dans le tam- | pon d'input, c'est la ligne 45 qui s‘exécute, puis | la ligne 50. Or, celle-ci contient délibérément Une simple démo ne me semble pas suffisante. Je reprends le texte d'un article oublié dans les tiroirs présentant un reméde & un vieux BUG du BASIC.SYSTEM et vous offre la mise en place de ce patch @ l'aide de la routine de LAM (pro- gramme Basic PRO.LAM2). Depuis plusieurs mois, le bug du BASIC. SYSTEM 1.1 relatif aux fonctions CHAIN et STORE fait l'objet de tentatives de corrections. Je souhaite apporter ma contribution qui, me semble-t-il, regle complétement le probléme. Hélas ! cela me conduit 4 vous demander de modifier légerement les patches que je fais dans la disquette THGS. @Modifications de mon patch une erreur de syntaxe. Asoft nous envoie alors en HANDLERR ($F2E9)... ot le pointeur de pile (rangé par NEWSTT en $F8) est copié bien a l'abri en $DF. Nous exécutons ensuite le CALL-144 puis CALL 62248 ($F328) récupére le pointeur de pile sauvé en $DF. La classe non ? Je dois remercier Open-APPLE qui m'a mis sur la voie en signalant que la mise en place de la sée par APPLE il y a bien longtemps était inutile puisque CALL 62248 nous dispense d'implanter ladite routine, et fait le travail a sa place. Rappe- lons au passage que les possesseurs d'un 1TT2626 sont priés de s'abstenir de manipuler la pile en cas d'erreur. L'instruction TXS omise dans | | | bonne vieille routine de correction de pile propo- | | f | I'APPLESOFT existe dans le PALSOFT. 1 REM Py 3 REM 20 FOR PASS = 110 20 30 HEX$ = "1000:4C 58 FF” 31 GOSUB 49 32 PRINT "PASS: "PASS 33 NEXT : END 40 HEX$ = HEX$ + " ND823G": FOR! = 1 TOLEN (HEX$): POKE 511 + 1, ASC ( MID$ (HEX$,1,1)) + 128: NEXT : POKE 72,0 45 ONERR GOTO 70 50 HOM : REM faute d'orthographe délibérée ! 70 CALL - 144 75 CALL 62248 80 POKE 126,0 100 RETURN Yvan KOENIC — 5 décembre 1987 Le catalogue de BASIC.SYSTEM n‘affichait pas AuxType pour les fichiers de type '$xx’. Avec un petit patch, cette lacune est com- blée et vous pouvez identifier les fichiers images lors du CATALOG. BEDF : JSR A612, LDY £4E, LDA £D8, RTS A4F2 : JSR BEDF, BNE A516 @Correction de CHAIN AGID: 20 47 AG JSR $AQ47 A044: A9 07 LDA £307 AG46.: 2C (BIT) saute instruction suivante AG47:: AI 03 LDA £$03 AG49:: 20 E7 BE JSR $BEE7 AG4C: EA NOP AG4D: EA NOP (suite page 12) ee — / Pr 1 | — — / van keenic— apPicie, 16.168 [——————— @ Correction de CHAIN (suite) BEE7 : 8D 83 A3 STA $A383 BEEA: A9 00 LDA £00 BEEC: 8D 83 BC STA £883 BEEF : A9 03 LDA £803 BEF]: 8D 7E BC STA $BC7E BEF4 : 60 RTS REM ¥#RHRHHRERE REM * PRO.LAM2 * REM ##¥#eRHRRRHEC TI TEXT : HOME Toutes mes excuses 4 APPLE : pour corriger ce BUG exaspérant, j'ai pris la liberté de suppri- mer un ‘COPYRIGHT APPLE, 1983’, mais il n'était pas question que j‘aille dans le trou connu du B.l ov Sandy Mossberg a déja implanté un patch INDISPENSABLE de la com- mande BSAVE (cf. NIBBLE V7, N8, p93). PRINT "Utilisons 1a routine de LAM pour patcher BASIC.SYSTEM." HEX = "A01D:20 47 AD N A044:A9 7 2C AY 3 20 E7 BE EA EA": GOSUB 200 HEX HEX HEX HEX D C9 BE 8D CA BE AY CE DO D9": GOSUB 200 HEXS HEX PRINT “J’ai fini, au revoir.": END HEX$ = HEX$ + " ND7D2G": FOR I = 1 TO LEN ‘HEX$): POKE S11 + 1,1 28 + ONERR GOTO 230 HOM CALL ASC ¢ MIDS (HEX$,1,1)): NEXT - 144: CALL 62248: POKE 216,0: RETURN QUAND ATARI FRANCE S’OFFRE LA TELEVISION... ATARI étend son audience a un plus large public avec la diffusion d'un film publicitaire trés remarqué. Ce film télé est dé au talent du célébre réalisateur international Jean-Baptiste MONDINO. II a pour but de présenter les ordinateurs ATARI comme des armes dans la compétition: “Au- jourd’hui, la compétition commence trés tt et ne s‘arréte jamais. Mais, sans arme, pourrons-nous longtemps faire face ?'". Il traduit la volonté d’ATARI de mieux faire connaitre ses produits et de les imposer sur tous les marchés de la micro-informatique. ATARI renforce ainsi son action dans le domaine professionnel avec la com- mercialisation de sa configuration MEGA LASER comprenant : ‘ATARI MEGA ST 2, un écran monochrome haute résolution, une imprimante laser et la garantie d'un an avec maintenance sur site, au prix révolutionnaire de 21900 F HT. Le marché de la micro-édition laser est peel 6 un trés fort développement fans les prochaines années car le niveau de qualité de I'impression laser est tel que plus personne ne pourra s‘en passer. ATARI propose, dés aujourd'hui, cette qualité 4 un prix particuliére- ment compétitif et accessible. Sur le theme : “Lo Révolution Laser, c'est de faire d'une simple feuille de papier une arme dans la compéti- tion”, ATARI s‘attaque 4 Ia fois au marché de la PAO et de la micro- : POKE 72.0 “BEE7:8D 83 A3 AP 0 8D 83 BC AP 3 8D 7E BC 60": GOSUB 200 “B1D9:20 55 Bé": GOSUB 200 "B621:20 70 BE BO 5S AY FF 8D 44 BE 60": GOSUB 200 "Bé2C:A9 1 8D 4F BE AD 57 BE 29 1 18 FO ED A 0 8) CB BE 8B "B648:0 0000000000 0 0": GOSUB 200 "B655:AC BB BC AD BA BC C9 FF DO 6 68 68": GOSUB 200 dition ainsi qu’au marché de la bureautique ef du traitement de texte avec impression laser. De cette facon, ATARI s‘adresse, pour la pre- miére fois, & tous les milieux profes- sionnels, depuis les professions libé- rales jusqu‘aux grandes sociétés, en passant par les PME/PMI. Rappelons que bénéficiant des der- niéres innovations technologiques en matiére d'impression laser, limprimante laser ATARI est directe- ment pilotée par le Mega ST auquel elle emprunte la capacité mémoire nécessaire a l'exécution des travaux d'édition. Sans s'encombrer d'aucune électroni- ue covteuse, elle tire profit de toute la puissance et de la rapidité de trans- fert des données du Mega ST pour édi- ter, dans un temps record, les pages graphiques les plus complexes. = | 12)... vn _—_c—— / NESTOR —APPLENCS / — J'ai gonfle mon Apple tics avec un disque dur Winchester 3.5 de 20 Mo ! Figurant au nombre des applemaniaques confiants qui ont acquis leur Apple //GS au prix fort, j‘ai eu l'insigne avantage d'essuyer les platres. Le service commercial de la firme prétendra sans doute que les nouvelles versions des premiers logiciels bogués ont été gratuitement mises 4 ma disposi- tion. II ajoutera que la ROM 1987 figure aussi dans la corbeille de cadeaux généreusement distribués par Apple 4 tous les possesseurs de machines défectueuses. Peut-étre. Que mes compagnons d'infortune, oubliés par la machine @ adresser d’Apple France ou par celle de leur concessionnaire, lévent la main ! J'irai plus loin : organisons un défilé des plus satisfaits d’entre nous de l'auto- route Al0 jusqu’aux Ulis. Je ne pense pas qu'il soit dans ce cas nécessaire de déplacer un seul représentant de la gendarmerie nationale : aucun embouteillage 4 redouter. Ah ! s'il s‘agis- sait de regrouper les décus... Bref ! vous avez devant vous un “jeune” homme peu enctin 4 desserrer les cordons de sa bourse en faveur de sa danseuse en Technicolor : Apple //GS. N'empéche qu'il I’a fait. D'abord parce qu'il lit Tremplin Micro, \a seule revue au monde 4 avoir consacré, @ l'heure ov j’écris ces lignes, autant de pages au GS. Eh oui! il y a la-bas des gens qui ne désespérent pas de faire changer les mécon- tents de camp, au grand désespoir d'Apple France qui préférerait sans doute que l'on oublie son enfant chéri d’hier, et au grand dam de cer- tains concessionnaires, plus chauds pour vendre un Mac que la bébéte qu'ils n‘ont méme pas pris la peine d'apprivoiser. J‘ai mon disque dur Passons. Qu’est-ce que je dirais si j'avais acheté un Lisa ! Lui, au moins, possédait un disque dur. Mon GS aussi, mais c'est grace 4 |'initiative d'un homme dont on ne dira jamais assez tout ce qu'il fait pour les possesseurs d’Apple // : J.-M. Bré- sard, de la Société Bréjoux. Tiens ! ce nom-la vous dit quelque chose ? pas étonnant : on vous a déja parlé de lui, ici et ail- leurs, 4 propos de moult produits d'Applied En- gineering U.S.A, et notamment de la fameuse RAMFACTOR et de TRANSWARP, carte accéléra- trice 3,6 MGz pour /k et Ik. Il sévit @ Lyon, au 29 de la rue de Montribloud, dans le 9° arrondissement. Si ca vous chante de lui télé- phoner, appelez le 78.36.52.69 et gare dla note ! Il vous parlera de votre machine et de ce que vous pourriez en tirer comme nul autre, mais la commu- nication sera longue, je vous le promets. Seulement voila, ce n‘est pas un plaisantin : il commercialise, en France, avec des notices en francais, des produits garantis, non seulement testés par des spécialistes, mais souvent (pour ne pas dire toujours) accompagnés de logiciels qui facilitent la vie des utilisateurs. C'est le cas de mon DISQUE DUR WINCHESTER 3.5 partitionnable. Installé depuis un mois sur mon GS, il me permet enfin de tirer efficacement parti d'une machine dont je continue de penser le plus grand bien, mais qui est encore handica- pée par la lenteur du chargement de ses systé- mes d'exploitation. Avec ce disque dur, utiliser APW et APW.C devient un plaisir et il en va de méme pour accéder au GSBasic. Muilti-machines Je vous parle sans cesse du GS, mais je vous signale que le bijou de Bréjoux fonctionne aussi sur Apple /le, avantage non négligeable quand on connait le prix des lecteurs 3 pouces et demi. En fait, pour le prix de deux lecteurs, on peut s‘offrir 20 Mo et, par-dessus le marché, Ia ver- sion 3.0 de ProSel, le fameux sélecteur de pro- grammes de Glen Bredon, accompagné d'une notice en francais. (suite page 14) / Pace13 / — — / xestor— apes | Vous aimeriez évidemment en savoir plus sur le disque dur lui-méme, mais ¢a vous donnera quoi ? Si vous disposez d'un Apple //e, vous installerez la carte contréleur en slot 5, 6 ou 7. Si vous pos- sédez un GS, vous n’aurez droit qu’au slot 6 (je crois savoir que |'on travaille la-dessus et qu'il sera plus tard possible de glisser la carte dans une autre fente). Je vous signale au passage que vous ne pourrez plus utiliser le lecteur 5.1/4 con- necté sur un lecteur 3.5, mais rien ne vous inter- dit de passer par une carte contrdleur 5.1/4 ins- tallée dans un autre slot. Votre fournisseur — M. Brésard — vous expli- quera en quelques mots (par lettre et par télé- phone si besoin est) comment configurer le CONTROL PANEL du GS (élémentaire). Votre disque dur sera reconnu en Slot 6, Volume 1, Drive 1 de la partition DOS 3.3 (parfaitement : vous disposerez aussi de l’ancétre !), La Société Bréjoux vous livrera un disque dur préenregistré et vous ne serez donc pas obligé de passer par la disquette d'initialisation PRODOS 1.9. J'ai dit : Dos, ProDOS... mais ce n'est pas limita- tif. Ca marchera aussi avec Pascal. Quant 4 Pro- Sel (avec ou sans souris), il vous installera auto- matiquement ses éditeurs, sélecteur et utilitai- res, y compris le ProDOS 8 version 1.4B. Rapidité et discrétion Je m'attendais 4 recevoir un disque dur compact, mais pas 4 ce point. Moins haut que deux lec- teurs 3.5, mais de largeur identique, le BJX 20 se fait complétement oublier. Est-il bruyant ? moins que celui du compatible qui chatouille désagréablement mes oreilles. II n'est pas plus génant que celui du ventilateur qui refroidit l'un de mes radiateurs favoris : un Apple /le bourré de diverses cartes. Rapidité ? Chez Bréjoux, on vous affirmera qu'il est super-rapide. Habitué 4 l'instantanéité de chargement que permettent les cartes-mémoire du méme fournisseur, je manque d'éléments de comparaison. J'ai effectué quelques petits tests par rapport au compatible cité plus haut, mais les systémes d’exploitation n’étant pas les mémes, les résultats ne sont pas significatifs. Vous ne serez certainement pas décu si vous devenez demain I'heureux possesseur de |'une de ces unités de stockage et vous aurez enfin le plaisir d’accéder RAPIDEMENT aux excellents outils qui, ne l'oublions pas, sont bel et bien fournis avec |'Apple //GS. NESTOR. Japprends que la Société Bréjoux fera bénéficier les abon- nés de Tremplin Micro (sur justification de leur numéro de client) d'un prix spécial fort intéressant : environ 6000 F HT au lieu de 6600 F HT (y compris ProSel de Glen Bredon). 449 pages — 199 F TTC — Couverture cartonnée. EDITIONS MICRO APPLICATION 13, rve Sainte-Cécile 75009 PARIS — Tél. (1) 47.70.92.44 LE LIVRE DU TURBO BASIC TURBO BASIC est le nouveau compilateur BASIC ultra rapide de BORLAND pour 1BM PC et Compatibles. Adopté rapidement par de nombreux programmeurs, ce nouveau BASIC avait besoin d'étre détaillé. Véritable manuel d‘apprentis- sage “LE LIVRE DU TURBO BASIC" a une vocation didactique. S‘adressant tout particuliérement aux programmeurs débutants, il pré- sente progressivement et par ordre de complexité, les commandes du TURBO BASIC. Agrémenté de nombreux exemples qui illustrent les com- mandes décrites et les algorithmes présentés, “LE LIVRE DU TURBO BASIC” évite néanmoins les considérations trop techniques et constitue une intro- duction pratique 4 ce nouveau compilateur BASIC. Description de I’éditeur — Installation du TURBO BASIC — Les bases du TURBO BASIC : boucles, gestion de données, variables, fonctions — Des applications en TURBO BASIC : traitement de données, gestion de fichiers — Quelques particularités de TURBO BASIC : liaison avec le langage machine, gestion des interfaces... — Présentation de TURBO BASIC en quelques pages : liste des fonctions avec leur syntoxe et une description trés courte — Les différences entre TURBO BASIC et GW BASIC. . — /acenu | ——_—_—_—_—_—_—_—_—_.. nea / Yvan KOENIG —GsBasic / — French.Using Le GSBASIC souffre, & mes yeux, d'une tare insi- gne : son Print Using ne sait pas imprimer en francais. Une fois encore, le passeport de J.-L. Gassée ne lui a pas rappelé quelles sont les exi- gences de sa langue maternelle. Pendant que mon ami Emile SCHWARZ met la derniére main & son guide du GSBASIC, il m'a semblé utile de combler cette lacune déplorable. Il s'agit, je l'espére, d'une formule provisoire, car j‘ai demandé aux auteurs du GSBASIC d’ajou- ter une option ‘F’ dans la syntaxe de leur Print Using ('F' pour format Frangais). Mon petit programme fait appel 4 des fonctions qui, si elles sont nouvelles pour les habitués de \'APPLESOFT, sont familigres aux adeptes du BUSINESS BASIC de I'APPLE /i//. * IMAGE permet de définir un format d'affichage. * Structure ‘procédure’, localisée par le GS- BASIC lors du chargement du programme, et de ce fait accessible rapidement, alors qu'une routine exige un balayage du pro- gramme 4 chaque appel. * Utilisation du fichier virtuel de 255 octets ‘MEMBUFR’. On initialise le pointeur sur ce tampon en y écrivant un RETURN. Ensuite, on y inscrit le nombre @ traiter selon le format retenu. On extrait de ce tampon la chaine for- matée et on utilise les commandes INSTR( et SUB$ pour remplacer les caractéres incorrects. Cette solution est sans doute pénalisante en terme de vitesse d'exécution, mais la version compilée par TML.BASIC devrait améliorer ses performances. Afin de limiter autant que possi- ble le ralentissement lié & la manipulation pro- posée, j'ai choisi la formule ‘procédure’ dont l'appel s'exécute plus rapidement que celui d'une routine. En outre, le recours a DO__WHILE_UNTIL m‘a permis d’exclure de la ‘procédure’ tout GOTO / GOSUB. Il serait judicieux de commencer par saisir les lignes de la procédure et de les ‘capturer’ dans un fichier TXT (FRENCHU.PROC par exemple). A l'avenir, chaque fois que vous aurez besoin d'insérer cette procédure dans un programme, il vous suffira de taper : EXEC FRENCHU.PROC. | Il serait possible de réduire le nombre de lignes de la procédure en regroupant des instructions. Si je ne I'ai pas fait, malgré mon godt pour les programmes compacts, c'est 4 cause d'un bug dans la routine d'indentation de la version actuelle du GSBASIC. Afin de faciliter la capture d'un programme GSB sous forme de fichier texte, je vous propose le fichier EXEC CAPTURE. La commande directe EXEC CAPTURE,"PATHNAME listera dans le fichier TXT PATHNAME le programme GSBasic en mémoire. Pour créer ces fichiers EXEC, Schwarz vous don- nera une formule ‘tout GSB’. Personnellement, j'ai eu recours au bon vieil APPLEWRITER qui me donne toujours satisfaction. REM exec CAPTURE, "'TXTfile home open é1é, filtyp=TXT for output as £29 outrec=@ : indent =2 output £29 : list : output £6 outrec=80 close £29 type élé Une variante permet de spécifier le nom du pro- gramme GSBasic 4 charger et le nom du fichier TXT a créer dans une seule commande. REM exec CAPTURE2,GSBfile, TXTfile home load é1é open €28, filtyp=TXT for output as £29 outrec=@ : indent =2 output £29 : list : output £6 outrec = 80 close £29 type 628 (suite page 16) es | PACES | — — / wan xosnic—cssasie f. — A Enfin, pour simplifier l'exécution des listages papier, je vous propose PAPLIST, PAPLYST et PAPTYPE. REM exec PAPLIST home open ".PRINTER”, as £1 output £1 : list close £1 | REM exec PAPLYST,"lignDeb-lignFin ("- liste prog complet home open ".PRINTER”, as £1 output £1 : list 61é close £1 REM exec PAPTYPE,"TXTfile home open ".PRINTER”, as £1 output £1 : type é1é close £1 4 exécuter avant la 1°* impression REM exec CONFIGIMP atin de supprimer home lajout systémati- assign "PRINTER", -1 que d'un LineFeed assign ".PRINTER”,1 aprés chaque CarriageReturn. Si vous oubliez la syntaxe d’appel, pas de pro- bléme, un simple TYPE execCmd affichera le contenu du fichier EXEC sur I’écran. Yvan KOENIG — 12 décembre 1987. \ A 10 REM * French Using 20 REM 30 HOME 49 SHOWDIGITS=9 56 FORMAT$="++78.2Z" 60 IMAGE 20R , 26A ,20A 70 NB=1234.53 75 FS="FEFF':N =789:PV% =345 76 PRINT "F F$,"N= "N,"PV% = ";PV% 80 FORI%=0TO1 90 PROC French(FORMATS$,NB) 100 NB$=STR$(NB) 110 PRINT ~USING 60;"£","formaté",”nor mal” 126. PRINT USING 60;"Format américain”, US$,NB$ 130 PRINT USING 60;"Format francais”, FRS$,NBS 140 NB=-PI * NB 150 NEXT 200 PRINT 210 PRINT "F$= "F$,"N= "N,"PV%= ";PV% 900 END 65263 REM ------------ F$= format, N=nombre 65264 DEF PROC French(F$,N) 65265 REM —-----_______ sortie FR$ 65266 LOCAL PV% 65267 OPEN ".MEMBUFR”, AS£29 65268 PRINT£29 65269 +PRINT£29 USING F$;N 65270 INPUT£29;FR$ 65271 US$=FR$:REM sortie US$ uniquement pour démo 65272 DO:PV% =INSTR(FR$,”,”) 65273 WHILE PV%:SUBS$(FR$,PV%)=" " 65274 ~UNTIL 65275 DO:PV% =INSTR(FRS,”.") 65276 WHILE PV%:SUB$(FR$,PV%)="," 65277. ‘UNTIL 65278 CLOSE£29 65279 END PROC P.S. : J'ai cité APPLEWRITER; ceux qui souhaitent continuer 4 utiliser ce programme peuvent con- tacter le support technique APPLE qui pourra leur fournir un ensemble de patches YK permet- tant entre autres : la recopie d'images HGR ou DHGR, Ia présence de 3 fontes personnalisées en mémoire et, bien entendu, l'impression possi- ble par le port série du GS. 0 a / Emile ScHwaRz—APPLESOFY / — LES ERREURS 2 12010s0r. sous ProDOs i 0 ONERR GOTO 63600 } 10 GOTO 100: REM Erreur intentionnelle 63580 END 63585 REM - 63590 REM Sous-Programme de traitement d'erreur 63595 REM - 63600 POKE 216,0:E = PEEK (222): TEXT HOME PRINT "Erreur n° " 63610 PRINT "A la ligne: " PEEK (219) * 256 + PEEK (218) 63620 IF E = 0 THEN PRINT "Next without for" 63630 IF E = 2 THEN PRINT "Range error" 63640 IF E = 3 THEN PRINT "No device connected" 63650 IF E = 4 THEN PRINT "Write protected" 63660 IF E = 5 THEN PRINT "End of data" 63670 IFE 6 OR E = 7 THEN PRINT "Path not found" 63680 IF E = 8 THEN PRINT "I / O error" 63690 IF E = 9 THEN PRINT "Disk full" | 63700 IF E = 10 THEN PRINT "File locked" | T 63710 IF E = 11 THEN PRINT "Invalid option" 63720 IF E = 12 THEN PRINT "No buffer available" Un programme | 63730 IF E = 13 THEN PRINT "File type mismatch" d'affichage de | 63740 IF E = 14 THEN PRINT "Program too large" I" t H 63750 IF E = 15 THEN PRINT "Not direct command" Grreur peut se | 63760 IF E = 16 THEN PRINT “Syntax error" construire de cette 63770 IF E = 17 THEN PRINT “Directory full" sy V |) 63780 IF E = 18 THEN PRINT "File not open" maniere: (VOUS | 63790 IF E = 19 THEN PRINT "Duplicate file name" trouverez, au 1 63800 IF E = 20 THEN PRINT "File busy" |ey 63810 IF E = 21 THEN PRINT “File(s) still open" verso, la {J 63820 IF E = 22 THEN PRINT “Return without gosub error" traduction des | 63830 IF E = 42 THEN PRINT “Out of data" | 63840 IF E = 53 THEN PRINT "Illegal quantity" messages et des 63850 IF E = 69 THEN PRINT "Overflow" explications 63860 IF E = 77 THEN PRINT “Out of memory" Z . \ 63870 IF E = 90 THEN PRINT "Undef'd statement" complémentaires. | 63880 IF E = 107 THEN PRINT "Bad subscript" i] 63890 IF E = 120 THEN PRINT "Redim'd array" L 63900 IF E = 133 THEN PRINT "Division by zero" | 63910 IF E = 163 THEN PRINT "Type mismatch" af 63920 IF E 176 THEN PRINT "String too long" 4 63930 IF E = 191 THEN PRINT "Formula too complex" i 63940 IF E = 224 THEN PRINT "Undef'd function" | 63950 IF E = 254 THEN PRINT "Bad response to an INPUT statement" } 63960 IF E = 255 THEN PRINT "CTRL-C interrupt attempted" 63970 VTAB 20: PRINT "<A> = Retour Applesoft": PRINT 1) 63980 PRINT "<B> = Re-exécuter le programme: "; Ki) 63985 GET A$: IF AS = “A” THEN TEXT : HOME : END : 63990 IF A$ = "B" THEN CLEAR : TEXT : HOME : GOTO 1 f 63995 GOTO 63970: REM Si A$ <> "A" ou AS <> "B" GOTO 63270 (suite page 18) } —_—_——— / nc [| — —f/eseeess ff ———— Tableau des différents messages d’erreur ProDOS 8 et Applesoft. Dans ce tableau vous trouverez : 1. Le numéro de I'erreur. | 3. A pour erreur Applesoft ou P pour erreur ProDOS. 2. Le texte anglais de l'erreur. 4. La signification en francais de l'erreur. Ne Texte de erreur : * Signification : 0 | Next without for A Utilisation de NEXT sans FOR 2 Range error Pp Nombre trop grand 3 | No device connected Pp Ce périphérique n'est pas connecté 4 | Write protected P Ecriture interdite sur ce disque 5 | End of data PB Fin du fichier 6 | Path not found P Fichier inconnu 7 +| Path not found P Fichier inconnu 8 I / O error P Erreur d'entrée / sortie 9 Disk full Pp Ce disque est plein 10 | File locked P Ce fichier est verrouillé 13 Invalid option Pp Cette option n'existe pas 12 | No buffer available P Pas de mémoire disponnible 13 | File type mismatch Pp Type de fichier différent 14 | Program too large Pp Programme trop grand 15 | Not direct command PB Commande 4 utiliser dans un pgm 16 | Syntax error Ap | Erreur de syntaxe 17 | Directory full Pp Catalogue principal plein 18 | File not open P Ce fichier est fermé 19 | Duplicate file name Pp Nom de fichier en double 20 | File busy Pp Ce fichier est occupé 21 | File(s) still open Pp Fichier encore ouvert 22 | Return without gosub A Utilisation de RETURN sans GOSUB 42 | Out of data A Vous avez plus de variable aprés READ que de DATA 4 lire 53 | Illegal quantity A Nombre trop grand 69 | Overflow A Résultat trop grand pour Applesoft 77 | Out of memory A Erreur afférente a la mémoire 90 | Undef'd statement A Numéro de ligne indéterminé 107 | Bad subscript A Numéro de dimension hors tableau 120 | Redim'd array A Tableau déja dimensionné 133 | Division by zero A Division par zéro impossible 163 | Type mismatch A Type de ces variables incompatible 176 | String too long A Chaine trop grande 191 | Formula too complex A Formule trop complexe 224 | Undef'd function A Fonction inconnue 254 | Bad response to an INPUT A La donnée n'est pas du type statement demandé dans un INPUT 255 | Ctrl-C interrupt attempted A Vous avez pressé Ctrl-C Vous devez débuter votre programme par : ONERR GOTO numéro de ligne du sous-programme de traitement des erreurs. La premiére ligne de ce sous-programme DOIT IMPERATIVEMENT comporter un POKE 216,0 pour rétablir le traitement d’erreur standard. Votre S.P. peut : corriger l’erreur, puis reprendre I’exécution du programme avec I'instruction RESUME ; afficher le message d’erreur, puis recommencer ou terminer le programme ; soit traiter toutes les erreurs possibles (hum !) ou seulement quelques-unes (ce qui est plus raisonnable !). —_— / 66628 ff — — / RAFI DERYEGHIVAN — APPLESOFT / ——= | STATISTIQUES Ce programme offre deux options : (6) \ étude par classe ® ua de données numériques Prenons tout de suite un exemple : la taille des éléves de seconde. Supposons que : 2 éléves ont une taille comprise entre 145.5 et 154.5 cm Vous pouvez traiter les notes d'un élave, les Gges d'un groupe de personnes, etc. 9 " 154.5 et 159.5 cm Prenons le premier exemple: des notes | 0" " 159.5 et 164.5cm d'un éléve au cours d'un trimestre. Suppo- | “ur "164.5 et 169.5 cm sons qu'il a successivement obtenu : 58 . 169.5 et 174.5 cm trois 12 cing 11 Il y a cing intervalles. La borne inférieure z un 8 un 18 du premier intervalle est 145.5. Il faut | deux 15 trois 13 ensuite entrer /amplitude* de chaque Le nombre de valeurs est égal 4 6. La | intervalle, ainsi que /‘effectif. Par exem- premiére valeur est de 12 et a un effectif | ple, le premier intervalle a une amplitude de trois. Quand vous lui aurez fourni toutes de 9 et un effectif de 2. Les intervalles sui- les données, l'ordinateur calculera les vants ont une méme amplitude de 5, mais caractéristiques de la série statistique et des effectifs différents. Une fois les don- ‘ vous en proposera une représentation gra- nées entrées, |'ordinateur calculera a nou- phique haute résolution. Les effectifs | veau les éléments caractéristiques de la seront portés en ordonnées, et les valeurs | série, et en proposera une représentation en abscisses. Si l'effectif maximum est : graphique. Cette fois, pas de graduation — inférieur & 10: l'amplitude des gradua- | verticale, car c'est la surface des rectan- tions sera de 1. gles qui est proportionnelle aux effectifs. — compris entre 10 et 50: elle sera de 5. ATTENTION ! le programme nécessite une carte 80 colonnes. — supérieur 450 : elle sera de 10. * ompliade = diffrence entre lo file maximum et lo taille minimum, dans chaque cotégorie CLEAR : TEXT LOMEM: 17900 0S = CHR (4) PRINT DS + “PRE3" + CHR (13) 1$ = DS + “PRE1" + CHRB (13) = DS + "PREO" + CHRS (13) sHT = 1403 POKE HT, 24: PRINT "“#####H HHH HRHHERAEE ERE EERE RRE EEE" POKE HT,24: PRINT "* ~ “aes POKE HT,24: PRINT “* ETUDE DE SERIES STATISTIQUES *" POKE HT,24: PRINT "* 2 SEDI RS Nt a ttt aa POKE HT, 24: PRINT “#4 4#HHRHHHR EHR RHRHE EE ERERE ERE" PRINT : PRINT : PRINT POKE HT,10: PRINT "1 - SERIES A UNE VARIABLE ": PRINT POKE HT,10: PRINT "2 - ETUDE PAR CLASSE” PRINT : PRINT : PRINT POKE HT,20: PRINT "VOTRE CHOIX :°"; GET AS: PRINT At / statistiques / 190 IF AS < "1" OR AS > "2" THEN CALL ~ 198: GOTO 185 195 ON VAL (A$) GOTO 200,630 F351 200 HOME : GOSUB 205: GOTO 235 BB97 205 POKE HT,29: PRINT "EERE B7cO 210 POKE HT,29: PRINT "# “"~77 7" *" E9F8 215 POKE HT,29: PRINT "* SAISIE DES DONNEES *" 729E 220 POKE HT,29: PRINT "* 777777777 uM E9F8 225 POKE HT,29: PRINT "aaa HaeEHeeoHeeeaeaaee : PRINT : PRINT + PRINT CC9C 230 POKE 34,6: RETURN 076D 235 INPUT "NOMBRE DE VALEURS :°";N 3579 240 DIM X<N) ,N<N) CESS 245 PRINT : PRINT 15AE 250 FOR I = 1 TON E10A 255 INPUT "VALEUR :~"3X<¢1) AE3E 260 VTAB PEEK (37): POKE HT,40: INPUT “EFECTIF 2° "3N¢1) EEF3 265 NEXT 0582 270 TEXT : HOME : VTAB 11: POKE HT,31: INVERSE : PRINT "7°" 7T UU 275 POKE HT,31: PRINT “ CALCUL COURS " po70 280 POKE HT,31: PRINT " see NORMAL 6F14 285 FOR 1 = 1 TON E1DA 290 Vi = V1 + XI) * NOT) 37440 295 V2 = V2 + X¢1) * XC1) # NCI) £308 300 V3 = V3 + (X¢1)) * 3 * NCI) 3B9E 305 V4 = V4 + (X¢1)) * 4 * NCI) OAA1 310 V5 = V5 + N¢I) * LOG ¢X¢I)) 187F 315 V6 = V6 + NID / XK1D FSSS 320 M=™M + N(ID 1E1A 325 NEXT 0582 330 A=V1/M CBBO 335 FOR 1 = 1 TON:E = E + NCI) * ABS (A - X¢1)): NEXT Focs 340 G = EXP (VS 7 M) 1AE8 345 H=M / V6 6BBC 350 @ = SQR (V2 / M) EOEC 355 VA=V2/M-A#A FFIC 360 ET = SOR (VA) D628 365 EM=E/M O1BF 370 M2 = (V2-2* AVI tA AM 7M 4202 375 M3 = (V3 -3*ARV2+3 FAK ARV -A* 3M ZN E110 BD M4= (V4 - 4H ARVE+E RAHA RUZ-GHATIEVI TAT A M) /M 5c70 385 AP = M4 / M2 / M2 4F76 390 AS = M3 / M2 * 1.5 DISE 395 HOME : GOSUB 415 2C1iB 400 PRINT : PRINT : PRINT "IMPRESSION DES RESULTATS ? "j? GET BS 40EA 405 IF BS = "0" THEN PRINT "QUI" » PRINT 1%: GOSUB 415: PRINT Es: GOT 0 495 27EE 410 PRINT "NON": GOTO 495 F170 415 PRINT “CARACTERISTIQUES DE LA SERIE :" F302 420 PRINT : PRINT : PRINT 74A2 425 POKE HT,10: PRINT "NOMBRE D’ELEMENTS....+ =; SM O3CF 430 POKE HT,10: PRINT "VARIANCE..+++eeees ;VA DpoSS 435 POKE HT,10: PRINT "ECART-TYPE . ser 6590 440 POKE HT,10: PRINT "ECART MOYEN..++++++++ "3EM / pacezo / imme / RAFI DERYEGHIYAN — APPLESOFT / 445 POKE HT,10: PRINT "MOYENNE ARITHMETIQUE. 450 POKE HT,10: PRINT “MOYENNE GEOMETRIQUE.. 455 POKE HT,10: PRINT "MOYENNE QUADRATIQUE.. 460 POKE HT,10: PRINT "MOYENNE HARMONIQUE.... 465 POKE HT,10: PRINT "MOMENT D’ORDRE 2........ 470 POKE HT,10: PRINT "MOMENT D’ORDRE 3... 2 "5A cESB "36 6F4a4 "30 8c4p “3H 8A25 "3M2 O8AD “3M3 COAF 475 POKE HT,10: PRINT "MOMENT D’ORDRE 4......eeee0008 "GM4 csBi 480 POKE HT,10: PRINT "COEFFICIENT D’APLATISSEMENT..: "jAP 6820 485 POKE HT,10: PRINT "COEFFICIENT D’ASSYMETRIE.....: "jAS 90D9 490 RETURN 6381 495 PRINT : PRINT "“YVOULEZ-VOUS UNE REPRESENTATION GRAPHIQUE DES RESUL TATS ? "3: GET BS 956D 500 IF B& = "0" THEN PRINT "QUI": ON VAL (A$) GOTO 510,685 06BE 505 PRINT "NON": END Agda3 510 HOME : HGR : HCOLOR= 3 5Dé1 515 HPLOT 2,10 TO 2,159 TO 279,159 CC3E 520 NI = - 1: FORI = 1 TON 4775 525 IF NCI) > NI THEN NI = N(I):10 = I 8CDA 530 NEXT 0582 535 GY = 150 / NI 1D68 540 GX = 270 / N:X0 = 9:0 = 159 F61E 545 FOR I = 1 TON E108 550 YH = N¢I) * GY 54C3 555 HPLOT X0,Y0 TO X0,Y0 - YH TO XO + GX,YO - YH TO XO + GX,YO 296C 560 XO = X0 + GX: NEXT 4E03 565 HOME penisde 570 VTAB 21: PRINT "MODE DE LA SERIE :°";X¢10);: POKE HT,40: PRINT "E FFECTIF :~*;N(I0) 41c2 575 YO = 159:X0 = 2 158C 580 P= 1 * (NI < = 10) + 5 * ((NI > 10) AND (NI ¢ = 50)) + 10 * (N 1 > 50) 92FF 585 FOR I = 0 TO NI STEP P 7€39 590 Y = YO - I * GY 8S2E 595 HPLOT XO - 2,¥ TO XO + 2,Y: NEXT 901F 600 PRINT : PRINT "VOULEZ-VOUS SAUVEGARDER L’ECRAN SUR DISQUETTE ? "; : GET BS E4B0 605 IF BS = "N" THEN PRINT "NON": TEXT : HOME : END 8F70 610 PRINT “OUI" CSEB 615 INPUT "NOM DU FICHIER :~";NS 33AC 620 PRINT D$"BSAVE"NS" ,A$2000 ,L$1FFF* OFF 625 HOME : TEXT : END 7614 630 HOME : GOSUB 205 1618 635 INPUT "NOMBRE D’INTERVALLES :°"jN: PRINT F056 $40 INPUT "BORNE INFERIEURE DU PREMIER INTERVALLE :°";8:BI = B 8210 645 DIM X<N),N(ND ACN): PRINT : PRINT BEBA 650 FOR I = 1 TON E1DA 655 PRINT "INTERVALLE NUMERO “;1;" 3"; 67A2 660 POKE HT,30: INPUT “AMPLITUDE : 6E1B 665 VTAB PEEK (37): POKE HT,55: INPUT "EFFECTIF :~";N¢I) 123F 670 BO = B + ACI):X(1) = (B + BO) / 2:B = BO DéAB 675 NEXT 0582 680 GOTO 270 4544 685 HOME 2F97 690 HGR : HCOLOR= 3 F190 / Pace 21 / / stamistigues / 695 HPLOT 2,10 TO 2,159 TO 279,159 700 = 705 270 / AM 710 - i:NI = - 1: FORI = 715 1) > NI THEN NI = N(I):10 = 720 (1) 7 ACID 725 730 735 740 745 750 755 760 XO = XO + X: NEXT 765 FORI = 17010 -1 770 BI = BI + ACI): NEXT 775 HOME : VTAB 21: 780 785 GOTO 600 PROGRAMMATION STRUCTUREE +) ASSEMBLEUR bo02 1 TO N:AM = AM + ACI): NEXT 1 TON I PRINT "CLASSE MODALE :~ POKE HT,50: PRINT “EFFECTIF :~";N¢10) HPLOT X0,Y0 TO X0,Y TO XO + X,Y TO XO + X,YO qB13" 3 “sBI + ACID 3"S"3 TROIS BONS OUVRAGES MASSON SUR L’ASSEMBLEUR Quatre auteurs (J.-P. Malengé, S. Albertsen, P. Collard et L. Andréani) pour une série d’ouvra- ges* que je trouve remarquables : la program- mation structurée en Assembleur 6502 (et 65C02), 68000 et 8086 (ou 80286). Le but des auteurs était de montrer qu'il est tout 4 fait pos- sible de normaliser la programmation en assem- bleur. Ils y parviennent avec bonheur. Evidemment, on s‘en doute, ma préférence va au volume consacré au 6502, mais il est fort intéres- sant de comparer, pour des exemples identi- ques, les instructions utilisées par les trois mi- — / Pace22 / croprocesseurs. Je ferai néanmoins un léger reproche aux auteurs : pourquoi avoir adopté l'assembleur Lisa (dans le volume 6502), alors qu'il existe un ProCODE frangais ? Notez que le dernier chapitre de chaque cours (c'est le mot qui convient) fournit au lecteur la possibilité de concevoir un petit éditeur de texte (attention ! ce n'est pas un logiciel, mais une application élémentaire expliquée). Un veeu : que MASSON poursuive cette politique d'édition ! NESTOR. * De 152 6 184 pages. format 17,5 X 24, broché ! / Philippe BoRDAS — APPLEsoFT / — ETICSOFT DISK DISK est un éditeur d’étiquettes pour classement de disquettes. II fonctionne sous PRODOS et utilise quatre polices de caractéres personnalisés. L'impression s'‘effec- tue sur l'imprimante IMAGEWRITER, avec possibilité d'imprimer huit étiquettes iden- tiques de format 89 X 36. Le programme utilise la routine CARAC.CH, parue dans le n°6 de TREMPLIN MICRO, qui permet I’envoi des caractéres personnalisés 4 |'imprimante. DISK propose des petits catalogues permettant de limiter les entrées au clavier. C’est par exemple le cas pour la catégorie du programme, le copieur et le DOS. L'affichage des divers choix et la sélection s'effectuent en frappant respectivement sur la barre d’espacement et sur la touche FGM. A ce sujet, l'utilisateur, s’il le désire, peut compléter ces catalogues en incrémentant les variables TI ou PC ou DO des lignes 1360 ou 1560 ou 1700 en fonction du nombre d’éléments 4 ajouter. pete C tLe Creer errrrrrrerer ere rrerrres Attention ! Philippe BORDAS stocke % les fontes de caractéres & partir de Vedresse $4000. Votre programme ETICSOFT : DISQUETTES * BORDAS Philippe * ne doit donc pas dépasser $3FFF.. ce 1987 * qui sera le cas si vous tapez toutes * les lignes de REM. * REAR REEL EE EERE EEK RHEE AEA KERER ARE DETECTION DES ERREURS POKE 216,0: POKE 838,104: POKE 839,168: POKE 840,104: POKE 841,16 6: POKE 842,223: POKE 843,154: POKE 844,72: POKE 845,152: POKE 84 6,72: POKE 847,96 ONERR GOTO 4230 REM INITIALISATION DES VARIABLES DS = CHRS (4): PRINT PRINT DS"PRE3" HOME : INVERSE PRINT " “>>>>> ETICSOFT : DISQUETTES 1987 NORMAL N'oubliez pas de taper POKE 34,1 lindispensable CARAC.CH ES$ = CHR$ (27): HOME (c'est lui qui permet l'envoi K = 1: PRINT des caractéres PRINT D$"BLOAD CARAC.CH" personnalisés & K=2 Vimprimante GOSUB 1360 IMAGEWRITER) REM LECTURE ET CONTROLE DE LA DATE / Pace23 / / evicsorr-pisk / 280 GOSUB 820 290 REM LECTURE ET CONTROLE D’UNE REPONSE 900 REM qq-<e8r a eee ene rerrr sas te 310 HOME 320 MESS$ = "VOULEZ-VOUS EDITER UNE ETIQUETTE ‘O/N) ? * 330 GOSUB 1280 340 REM POUR CHAQUE ETIQUETTE 360 IF REPS = "N" THEN GOTO 770 370 REM LECTURE ET CONTROLE DU No. DE LA DISQUETTE 380 REM ---------------------------------------0-- 390 ER = 0 400 GOSUB 1800 410 REM GESTION DE LA FACE A ; 420 REM -------------------- io 430 FC$ = "A": GOSUB 2350 de vores RN) 440 Tas = TYPES n a 450 Cas = COPS : cal eTURN) infer on 460 DAS = DOSS + 69.8 se JOM ig lire 470 PAS = NMS Ne): 480 AA = ANNEE 490 REM GESTION DE LA FACE 8 510 HOME 520 MESS$ = " LA FACE B A T-ELLE LA MEME DESIGNATION QUE LA FACE A (0 ANY: 3? © 530 GOSUB 1280 540 IF REPS = "Q" THEN GOTO 620 550 FCS = "B": GOSUB 2350 560 TBS = TYPES 570 CBS = COPS 580 DBS = DOSS 590 PBS = NMS 600 AB = ANNEE 610 GOTO 690 620 TBS = TAS 630 CBS = CAS 640 DBS = DAS 650 PBS = PAS 660 AB = AA $70 REM LECTURE ET CONTROLE DU COMMENTAIRE 680. REM senene ss 690 GOSUB 2130 700 REM EDITION DE L’ETIQUETTE 710 REM s~osedesemeressenen— 720 GOSUB 3190 730 MESS$ = "VOULEZ2-VOUS EDITER UNE AUTRE ETIQUETTE “(O/N) 7? " 740 GOSUB 1280 750 IF REPS = "N" THEN GOTO 770 760 GOTO 400 770 HOME : ONERR 790 END 800 REM ROUTINE DE LECTURE ET CONTROLE DE LA DATE 810 REM = =a == / pace2a / 2F9? Bi4dA 6578 6E27 6297 6979 ESBS CéEF 637E 5683 £644 3FB9 2°97 251C 6578 F322 F287 86F0 AB?7F C884 9945 COBA 01448 E743 9221 E23 993B 1505 8776 807D 9B0B 6578 6E27 OF3F 4476 0180 / Philippe BorDAS — APPLESOFT / 820 REM LECTURE DU JOUR 1F17 850 POKE 36,33: VTAB @: PRINT "ENTRER LA DATE :" 3F15 860 POKE 36,33: VTAB 9: PRINT " : AIFI 870 POKE 36,H: VTAB V 66c8 880 PRINT "../ 3370 890 POKE 36,H: VTAB V: GET AS A825 900 IF <A’ < "O") OR (AS > "3") THEN POKE 36,H: VTAB VU: GET As: GOTO 900 5209 910 PRINT As DIIF 920 URS = AS 4DF5 930 POKE 36,H + 1: VTAB V: GET As 421E 940 IF JR$ = "0" THEN IF (AS < "1") OR (AS > "9") THEN POKE 36,H + 1: UTAB Vi GET A$: GOTO 940 F352 950 IF JR$ = "3" THEN IF (AS < "O") OR (AS > "1") THEN POKE 36,H + 1: VTAB V: GET AS: GOTO 950 724D 960 IF JR$ < "3" THEN IF (AS < “O") OR CAS > "9") THEN POKE 36,H + 1: VTAB V: GET A$: GOTO 960 5F57 970 PRINT AS DIIF 980 DTES = "Date :°" + URS + AS 86462 990 REM LECTURE DU MOI 1000 REM - -- 1010 POKE 36,H + 3: VTAB V: GET As 5020 1020 IF (AS < "O") OR (AS > "1") THEN POKE 36,H + 3: VTAB V: GET AS: GOTO 1020 4EFC 1030 PRINT As DIIF 1040 MS$ = AS E2F9 1050 POKE 36,H + 4: UTAB V: GET As 3521 1060 IF MS$ = "0" THEN IF (AS < "1") OR (AS > "9") THEN POKE 36,H + 4: VTAB V: GET AS: GOTO 1060 5483 1070 IF MS$ = "1" THEN IF (AS < "O") OR (AS > "2") THEN POKE 36,H + 4: VTAB Vr GET A$: GOTO 1070 FF7D 1080 PRINT As DIF 1090 DTES = DTES + "/" + MSS + As 50cé 1100 REM LECTURE DE L’ANNEE 1110 REM ------------------ 1120 POKE 36,H + 6: VTAB V: GET As co23 1130 IF (AS <¢ "S") OR (AS > "9") THEN POKE 36,H + 6: VTAB V: GET AS: GOTO 1130 9211 1140 PRINT As DIF 1150 ANS = As 20€8 1160 POKE 36,H + 7: UTAB U: GET As 5724 1170 IF ANS = "8" THEN IF (AS ¢ "7") OR (AS > "9") THEN POKE 36,H + 7: VTAB V: GET A$: GOTO 1170 c08s 1180 IF ANS < "8" THEN IF (AS ¢ "0") OR (AS > "9") THEN POKE 36,H + 7: VTAB V: GET AS: GOTO 1180 7E80 1190 PRINT As DIIF 1200 DTES = DTES + "/" + ANS + AS AgBS 1210 VTAB 20: POKE 36,36: PRINT "OK (O/N) ? " 6183 1220 UTAB 20: POKE 36,47: GET REPS EIFA 1230 IF (REPS < > "O") AND (REPS < > “N") THEN GOTO 1220 AECB 1240 IF REPS = "N" THEN UTAB 20: POKE 36,1: PRINT SPC( 80):V = 13:H = 37: GOTO 870 11E7 1250 RETURN 6381 / Pace2s / / evicsorr-pisx / 1260 REM ROUTINE DE LECTURE ET CONTROLE D/UNE REPONSE 1270 REM ====: Sosa 1280 HOME 2F97 1290 H = (80 - LEN (MESS$)) / 2:V = 12 52EA 1300 VTAB 12: POKE 36,H: PRINT MESS$ pe2s5 1310 POKE 36,H + LEN (MESS$): VTAB V: GET REPS 9923 1320 IF (REP$ < > "0") AND (REPS < > "N") THEN POKE 36,H + LEN (ME SS$): VTAB V: GET REP$: GOTO 1320 9429 1330 RETURN 63B1 1340 REM ROUTINE D’INITIALISATION DES VARIABLES 1360 TI = 19: DIM TIS<TI) B546 1570 224C 1370 T1$(1) = "GRAPHISME" 47F7 1580 SO4E 1380 TI$(2) = "TRAIT. TEXTE" 8BB4 1590 9850 1390 T1$¢3) = *LANGAGE" £048 1600 O9A0 1400 TI$(4) = "TABLEUR” OFS? 1610 A27E 1410 TI$(5) = "INTEGRE" C269 1620 0280 1420 T1$(6) = "SONORE" 3A32 1630 A182 1430 T1$(7) = "GESTION" 7076 1440 3100 1440 TI$(8) = "EDITEUR" 6F70 1650 OF BC 1450 TI$(9) = "UTILITAIRE" EESB 1660 PC$(10) = "DM2.0" O79 1460 TI$(10) = "COPIEUR" 149E 1670 PCS(11) = "II+ 4" 318F 1470 TI$(11) = "GRAPH. IMPR." 1BAE 1680 PC$(12) = "I1+ 6" BE92 1480 T1$(12) = "ARCADE" 7529 1690 PC$(13) = "II+ 7" 1094 1490 TI$(13) = "AVENTURE" 18F4 1700 DO = 6: DIM DOS<DO) 41F4 1500 TI$(14) = "ROLE" 528) 1710 DO$<1) = "3.3" SSE1 1510 TI$(15) = "SIMULATION" 0291 1720 DOs<2) = "3.2" E7E1 1520 TI$(16) = "EDUCATIF" 4E02 1730 DO$¢3) = "PRO" 2540 1530 T1$(17) = "ECHECS" 5C39 1740 DOs<4) = "Pas" 9934 1540 T1$(18) = "REFLEXION" 1838 1750 DO$<5) = "CPM" 8D31 1550 T1$(19) = "AUTRE" 3F11 1760 DO0$(6) = "SPE" 803A 1560 PC = 13: DIM PCS<PC) 6822 1770 RETURN 63B1 1780 REM ROUTINE DE LECTURE ET CONTROLE DU No. DE LA DISQUETTE 1790 REM ==ssssssssssss===== 1800 HOME :V = 13:H = 38:0K = 0 8BEC 1810 POKE 36,25: VTAB 8: PRINT "ENTRER LE No. DE LA DISQUETTE :" 63F5 1820 POKE 36,25: VTAB 9: PRINT “ a A583 1830 POKE 36,H: VTAB V: PRINT "...." AFBS 1840 REM LECTURE ler CARACTERE 1850 REM --------------------- 1860 POKE 36,H: VTAB V: GET At 4825 1870 IF OK = 1 THEN GOTO 1930 CAg4 1880 IF A$ < "0" THEN POKE 36,H: VTAB V: GET A$: GOTO 1920 EAF! 1890 IF (A$ > "9") AND (A$ < "A") THEN POKE 36,H: VTAB V: GET A$: GOT 0 1920 5522 1900 IF AS > "2" THEN POKE 36,H: VTAB VY: GET AS: GOTO 1920 EDI? 1910 OK = 1 1920 GOTO 1870 1930 PRINT AS 1940 NOS = AS / Philippe BorpaAS — apPLEsoFT / 1950 REM LECTURE CARACTERES SUIVANTS 1960 REM) —--—- nannies 1970 1 =1 6344 } 1980 IF I > = 4 THEN GOTO 2100 BOFB 1990 POKE 36,H + I: YTAB V: GET AS 8736 2000 IF A’ = CHR (8) THEN IF I = 1 THEN V = 13:H = 38:0K = 0: GOTO 1860 9SA0 2010 IF A’ = CHR$ (8) THEN IF I > 1 THEN I = I - 1:NO$ = LEFT$ (NOS +1): POKE 36,H + I: YVTAB V: PRINT ".": GOTO 2090 ESF 2020 IF A’ = CHR (13) THEN LET I = 5: GOTO 2090 DAEA 4 2030 IF A’ < "0" THEN GOTO 2090 0691 | 2040 IF (A$ > "9") AND (AS < "A") THEN GOTO 2090 BAC2 2050 IF A’ > "2" THEN GOTO 2090 84B9 2060 1=1+4+1 8058 | 2070 NOS = NOS + AS 817F 2080 PRINT AS DIF 4 2090 GOTO 1980 $170 | 2100 RETURN 6381 2110 REM ROUTINE DE LECTURE ET CONTROLE D’UN | COMMENTATRE 2120 2130 MESS$ = "COMMENTAIRES <0/N) ? " 0263 2140 GOSUB 1280 6578 2150 IF REP$ = "0" THEN GOTO 2170 9054 2160 RETURN 63B1 2170 HOME :H = 15:V = 14: POKE 36,33: VTAB 9: PRINT “COMMENTAIRES :": POKE 36,33: VTAB 10: PRINT " 2180 POKE 36,H: VTAB Vs PRINT “wosecseves de eeeweene eee ceeereceeeveees Fécs FAFC 2190 1 = 0:Cs aa A3FE 2200 IF I > = 50 THEN GOTO 2290 0136 2210 POKE 36,H + I: VTAB V: GET AS B736 2220 IF A$ = CHRS (13) THEN GOTO 2290 DIBA 2230 IF AS’ = CHRS (8) THEN GOTO 2300 F386 2240 IF (AS = CHR$ (100) OR (A$ = CHRS (11)) THEN GOTO 2280 FBFS 2250 IF A’ = CHRS (21) THEN AS = " "; GOTO 2260 7B89 2260 C$ = C$ + AS: PRINT A GA24 2270 1=1+4+1 80SB 2280 GOTO 2200 SS6F 2290 C$ = " Commentaires :°" + C$: RETURN 1EBS 2300 IF 1 = 0 THEN GOTO 2200 8B29 2310 IF I = 1 THEN I = O:C$ = "": POKE 36,H: VTAB V: PRINT ".": GOTO 2 200 c3CA 2320 IF 1 > 1 THEN I = I - 1:C$ = LEFT$ (C$,1): POKE 36,H + I: VTAB V : PRINT ".": GOTO 2200 A7BE 2330 REM ROUTINE DE GESTION D’UNE FACE 2340 REM — == 2350 REM TYPE 2360 REM ---- 2370 HOME 2F97 2380 VTAB 4: POKE 36,25: PRINT "CARACTERISTIQUES DE LA FACE “;FC$;" :* FOIF 2390 VTAB S: POKE 36,25: PRINT " 7F VTAB 9: POKE 36,28: PRINT “Catégorie : " 9849 / Pace27 / _ / evicsorr-pisx / 2410 2420 2430 2440 2450 2460 2470 2480 2490 2500 2510 2520 2530 2540 2550 2560 2570 2580 2590 2600 2610 2620 2630 2640 2650 2660 2670 2680 2690 POKE 36,12: VTAB 22: INVERSE : PRINT ">>> “LES ““DIVERS ““CHOIX “"""""<<<" POKE 36,16: VTAB 23: PRINT ">>> ~~~"~”~<RETURN> NER “>> >" <<<" 3 NORMAL r2=1 VTAB 9: POKE 36,40: PRINT TI$(1); SPC¢ 10) VUTAB POKE 36,39: GET AS IF A¥ = CHRS (13) THEN GOTO 2500 IF AS < > CHRS (32) THEN GOTO 2450 T=1 + 1: IF 1 > TI THENI =1 GOTO 2440 TYPES = TIS(1) IF LEFT$ ¢TYPE$,5) < > "AUTRE" THEN GOTO 2680 POKE 36,40: VTAB 9: PRINT “..cveccscoee” 1 = O:TYPES = "":H = 40:V = 9 IF I > = 12 THEN GOTO 2680 POKE 36,H + I: VTAB V: GET AS IF A’ = CHR (13) THEN GOTO 2680 IF A$ = CHRS (8) THEN GOTO 2630 <ESPACE> “POUR ~ ~“ POUR SELECTION IF (AS = CHRS (10)) OR (AS = CHRS (11)) THEN GOTO 2620 IF AS CHR$ (21) THEN AS = " ": GOTO 2600 TYPES = TYPES + A$: PRINT AS Ts1+1 GOTO 2540 IF I = 0 THEN GOTO 2540 IF I] = 1 THEN LET I = O:TYPE$ = "": POKE 36,H: VTAB V: PRINT "." : GOTO 2540 IF 1 > 1 THEN LET I = 1 - 1:TYPES = LEFT® <TYPE$,1): POKE 36,H + 1: VIAB VY: PRINT ".": GOTO 2540 REM COPIEUR REM -~-~---- VTAB 20: POKE 36,10: PRINT “ Copieur :°..... o- aL) Fc 1=1 bos 3°. 2700 VTAB 20: POKE 36,21: PRINT PC8<I) 2710 VTAB 20: POKE 36,20: GET As 2720 IF A$ = CHR$ (13) THEN GOTO 2740 2730 IF A$’ < > CHR$ (32) THEN GOTO 2710 2740 1 = 1+ 4: IF I > PC THEN LET 1 =1 2750 GOTO 2790 2760 COPS = PCS(I) 2770 REM DOS 2780 REM --- 2790 1 = 1 2800 VTAB 20: POKE 36,46: PRINT DO$<1) 2810 VTAB 20: POKE 36,45: GET As 2820 IF A’ = CHR$ (13) THEN GOTO 2940 2830 IF A$ < > CHR (32) THEN GOTO 2810 2840 1 = 1+ 1: IF I > DO THEN I = 1 2850 GOTO 2800 2860 DOSS = DOI) 2870 REM ANNEE 2880 REM ----- 2890 POKE 36,1: YTAB 22: PRINT SPC¢ @0): POKE 36,1: VTAB 23: PRINT $ PC 80) / Pacezs / 034C 711E 634A 869E 212C DIB4 £789 $905 2A75 4691 9C51 C927 AgaC 2337 B736 F3BD 208C CFF3 9EB7 bC22 8058 6B76 A930 0A7A 136D c3co 634A 2134 2448 DIBC £188 FEAS 3074 8527 63448 1E38 8152 2EBD 2789 43FB 4975 4E28 / Philippe BorDAS — APPLESOFT / 2900 VTAB 20: POKE 36,69: GET AS ocss 2905 IF A$ = CHRS (13) THEN POKE 36,60: VTAB 20: PRINT " 7 ":ANNEE = 0: GOTO 3010 5936 2910 IF {AS < "7") OR (AS > “9") THEN POKE 36,69: VTAB 20: GET A$: GO TO 2910 cc4c 2920 PRINT AS D1iF 2930 ANNEE = VAL (AS) * 10 DOFD 2940 POKE 36,70: VTAB 20: GET AS 3050 2950 IF ANNEE = 70 THEN IF (AS < "7") GR (AS > "9") THEN POKE 36,70: VTAB 20: GET A$: GOTO 2950 9057 2960 1F ANNEE > 70 THEN IF ‘AS < "O") OR (AS > "9") THEN POKE 36,70: VTAB 20: GET A$: GOTO 2960 2450 2970 PRINT At DIIF 29780 ANNEE = ANNEE + VAL (A$): IF STR& (ANNEE) > RIGHTS (DTES,2) TH EN VTAB 20: POKE 36,49: PRINT “..": GOTO 2900 S4EF 2990 REM NOM 3000 REM --- 3010 H = 30:4 = 14 cD40 3020 POKE 36,21: VTAB 14: PRINT “Face "jFCS3" ts” sccecsceseveveece seeee oe 3F42 3030 pia DBSS 3040 1F 1 > = 28 THEN GOTO 3130 FE35 3050 POKE 36,H + I: VTAB V: GET AS B736 3060 IF A’ = CHRS (13) THEN GOTO 3130 D1B4 3070 IF AS = CHR (8) THEN GOTO 3140 2E89 3080 IF (A$ = CHRS (10)) OR (AS = CHRS (11)) THEN GOTO 3120 EBEF 3090 IF A$ = CHRS (21) THEN AS = " ": GOTO 3100 9683 3100 NM& = NMS + AS: PRINT AS ABD4 30 TST +1 8058 3120 GOTO 3040 5B72 3130 RETURN 6381 3140 IF I = 0 THEN GOTO 3040 bB2c 3150 IF 1 = 1 THEN I = O:NM% = "": POKE 36,H: VTAB V: PRINT ".": GOTO 3040 A625 3160 IF I > 1 THEN I = 1 - 1:NMS% = LEFT (NM$,I1): POKE 36,H + I: VTAB Us PRINT ".": GOTO 3040 BA71 3170 REM ROUTINE D’EDITION DE L’ETIQUETTE 3180 REM =s=ss==sssss=ss=ss=s============ 3190 HOME 2F97 3200 MESS$ = "ETIQUETTES POSITIONNEES (0/N) ? " E?F9 3210 GOSUB 1280 6578 3220 1F REPS = "N" THEN GOTO 4020 1FaF 3230 HOME : POKE 36,21: VTAB 12: PRINT "NOMBRE D’ETIQUETTES A EDITER ¢ 0/8)?" ccig 3240 POKE 36,58: VTAB 12: GET AS E757 3250 IF (AS < "0") GR (AS > "8") THEN GOTO 3240 C3AF 3260 NE = VAL (AS) OCFE 3270 1F NE = 0 THEN GOTO 4010 OF74 3280 HOME : VTAB 11: POKE 36,27: INVERSE : PRINT " s:": VTAB 12: POKE 36,27: PRINT ": EDITION “El POKE 36,27: PRINT “: 3290 PRINT ES$; CHR$ ¢7) 3300 FOR P = 1 TO NE 3310 D$ = CHRS <4) PRINT D$"BLOAD BYTE.SET,A$4000" PRINT : PRINT : PRINT : PRINT PRINT D$"PRE1" PRINT ES$;"LO01"; PRINT CHR$ (24); PRINT ES$"#"; PRINT ES$"TO1"; PRINT CHR$ (14) ;ES$"q"; GOSUB 4150 PRINT NO$;: PRINT CHR$ (15) ‘PRINT D$"PREO" PRINT D$"BLOAD OUTLINE.SET,A$4000" PRINT D$"PRE1" GOSUB 4150 PRINT ES$"r";: PRINT : PRINT : PRINT : PRINT : PRINT : PRINT ; eto a Tags = *S TBS PRINT ESS"#"; PRINT ES$"T03";: PRINT : PRINT : PRINT PRINT ES$"X"; PRINT ES$*TO1"; PRINT ES$"Y" PRINT D$"PREO" REM CORPS PRINT D$"BLOAD BYTE.SET ,A$4000" PRINT D$"PRE1" PRINT ES$"TOS"; GOSUB 4150 PRINT ES$"T16"; PRINT ES$"e"; LA = 29 - LEN <PA$):LB = 29 - LEN (PBS) PRINT ES$"X";"FACE A" ;ES$"Y";" :°"3PA$; SPC LA) ;ES$"Q"; IF AA = 0 THEN GOTO 3668 PRINT " (C) 19"5;AA; PRINT ES$"TO1" ;ESS"e" ;ES$"T16"; PRINT ES$"X";"FACE BY ;ESS"Y";" :°";PB$; SPC¢ LB) ;ES$"Q"; IF AB = 0 THEN GOTO 3688 PRINT " (C) 19";AB; PRINT ES$"T05" PRINT ES$"N"; PRINT ES$"X"; PRINT PRINT ES$"TO1"; PRINT " cooooo* PRINT ES$"TO1"; PRINT ES$"Y" PRINT DS"PREO" PRINT D$"BLOAD BLIPPO.SET ,A$4000" PRINT D$"PREi" 3810 3820 3830 3840 3850 3860 3870 3880 3890 3900 3910 3920 3930 3940 3950 3960 3970 3780 3990 4000 4010 4020 4030 4040 4050 4060 4070 4080 4090 4100 4110 4130 4140 4150 4160 4170 4180 4190 4200 4210 4220 4230 4240 4250 4260 4270 4280 4290 / Philippe BorDAS — APPLESOFT / PRINT ES$"T04"; 8FAD GOSUB 4150 AI7A PRINT ES$"O"; $946 PRINT " Copieur :°";CA$;"-";CBS;" ~~";"DOS :°";DA%;"-";DB$;" "°°" ;DTES 5090 PRINT DS"PREO" 3ASB PRINT D$"BLOAD TM2.SET ,A$4000" SF2A PRINT DS"PRE1" 3csc PRINT ES$"T02"; 93AB GOSUB 4150 AP7A PRINT ESS"P"; S5B45 PRINT C%: PRINT : PRINT 6co? PRINT ES$"c" B9FD PRINT 75BA PRINT DS"PREO" 3ASB NEXT P AFD2 PRINT D$"PRE3" 305E INVERSE 3D9E PRINT " ~>>>>> “77 UT ~“ETICSOFT +” DISQUETTES 1987 _ ae SS RERES =O 11BF NORMAL 3B9D POKE 34,1 8A7D RETURN 63B1 VTAB 15: POKE 36,20: PRINT "1- IMPRESSION DE L’ETIQUETTE" D4Aa7 VTAB 16: POKE 36,20: PRINT "2- EDITION D’UNE AUTRE ETIQUETTE" 2BA4 VTAB 17: POKE 36,20: PRINT "3- QUITTER LE PROGRAMME" 9355 VTAB 19: POKE 36,20: PRINT “VOTRE CHOIX :°" Fid3 VTAB 19: POKE 36,33: GET AS D257 IF (AS < "1") OR (AS > "3") THEN GOTO 4060 SCAC PRINT AS D1IF IF AS = "1" THEN GOTO 3230 E48E IF At "2" THEN IF ER = 1 THEN GOTO 730 036A IF A$ = "2" THEN RETURN BOCD HOME : ONERR 4476 END 0180 REM ROUTINE DE CHARGEMENT D’UNE POLICE DE CARACTERES PRINT ES$"N": PRINT CHR$ (9)"80N": PRINT CHR$ (15); CHR (9)"2" Dba CALL 768: PRINT ES$"D 0" 51B9 PRINT D$: PRINT ES$"’"; 4378 RETURN $381 REM ROUTINE DE GESTION DES ERREURS REM sosssessssssssssssssssss5== CALL 838:ER = 1 IF PEEK (222) IF PEEK (222) END HOME ; INVERSE : VTAB 9: POKE 36,29: PRINT “iis: prssrs 3 ": YVTAB 10: POKE 36,29: PRINT ": ERREUR DE FICHIER :": VTAB 11: P 6 THEN GOTO 4270 3 THEN GOTO 4310 wou OKE 36,29: PRINT ": NORMAL 5227 GOSUB 4350 7E7C IF K = 1 THEN GOTO 220 25FC / evicsorr-pisx / 4300 HOME : GOTO 4020 4310 HOME : VTAB 8: POKE 36,27: INVERSE : PRINT “: wre $3 VTAB 9: POKE 36,27: PRINT ": PROBLEME DE DISQUETT! VTA POKE 36,27: PRINT “seecesiceteisrssseieegede"s NORMAL. 4320 GOSUB 4350 4330 IF K = 1 THEN GOTO 220 4340 HOME : GOTO 4020 4350 VTAB 22: POKE 36,15: INVERSE : PRINT “ >>>> ““FRAPPER ~<RETURN> ~ POUR “CONTINUER ~~>>>> “: NORMAL 4360 GET AS 4370 IF AS < > CHRS (13) THEN GOTO 4360 4380 RETURN CARAC.CH carac.ch,as0300,1$0033 LTE : 0300: A9 FF 85 06 A9 3F 85 07 AD C8 BE 85 08 AD C9 BE Routine 0310: 85 09 E46 06 AS 046 DO 02 ES 07 Cé 08 AS 08 CP FF extraite de 0320: D0 06 AS 09 FO OC C4 09 AD 00 B1 06 20 ED FD 4C TM n° 0330: 12 03 60 Deux exemples réalisés avec ETICSOFT-DISK Logiciel intelligent, le programme de notre ami Philippe BORDAS sait faire la différence entre les capita- les et les minuscules, comme vous le révéle la premiére ligne de |'éti- quette ci-dessus. Comment réaliser des fontes* ? Tout simplement en utilisant le programme paru dans le numéro 6 de TREMPLIN MICRO. Grace aux divers program- mes de ce numéro, vous pourrez, non seulement réaliser vos propres polices de caractéres, mais en récupérer, 4 partir des fontes graphiques (TOOL KIT APPLE et CHAT MAUVE). * Sur la disquette 19. Philippe BORDAS vous en propose quelques-unes. / Paces2 / 2642 AANS 7E7C 25FC 2642 EEF2 9923 F88A 6381 9298 1027 B6FC 9675 / Claude ausry —Lancacec / — CLIB MEIN LIEBE Sans vous en douter, avancant en visibilité minimum dans Ia jungle du pays de C , trébu- chant sur des structures, vous enfoncant dans des flots de données, vous approchez péni- blement de I’ilot de la connaissance supréme ! Aprés vous avoir fait franchir les derniers sables mouvants, je vais lacher votre petite menotte, et sans crainte ni regard en arriére, vous partirez... Vous vous en souvenez certainement, lecteur attentionné, dans le dernier numéro de cette revue presti- gieuse, nous avons défini les instructions "internes" du langage C , celles qui sont comprises par le compila- teur. Les plus futés d'entre vous en ont déduit que les autres instructions de C étaient “externes” et ils avaient raison ! En effet, tout ce qui est entrée-sortie est décrit en € dans la bibliothéque standard, appelée par le linker aprés compilation. Théoriquement cette librairie (nommée CLIB sur Apple, STDLIB ou CSLIB sur d'autres systémes) implémente les mémes instructions d'une machine 4 l'autre ou d'un C 4 l'autre, instruc- tions définies par la norme ANSI. Pratiquement, quelques différences subtiles entretiennent un taux d’adré- naline nettement supérieur 4 la normale, chez les développeurs qui travaillent sur plusieurs systemes. Si la liste des mots réservés de C est plutét modeste, il n’en est pas de méme en ce qui concerne la bibliothéque standard : celle du TURBO C de BORLAND ne comprend pas moins de 300 mots, celle de 'Apple 130. Pour nous y retrouver dans cette forét vierge, nous allons essayer de regrouper ces instruc- tions de maniére logique : 1. Manipulation de chaines de caractéres. 5. Manipulation de mémoire. 2. Classification de types de caractéres. 6. Systéme. 3. Conversion de types. 7. Entrées Sorties. 4. Mathématique. LES CHAINES DE CARACTERES La librairie standard de C permet toutes les manips que le plus masochiste des manipulateurs de chaine peut souhaiter. Ces instructions débutent par STR (elles s‘appliquent alors 4 des chaines entiéres) ou par STRN (elles s‘appliquent alors a n caractéres de la chaine concernée). Par exemple streat(dest,source) effectue une concaténation de source 4 la suite de dest alors que strncat(dest,source,n) effectue la concaténation de n caractéres de source 4 la suite de dest. Ces fonctions renvoient soit un entier (par exemple strlen(s) renvoie le nombre de caractéres de la chaine s) soit un pointeur vers la chaine destination. On peut écrire par exemple : printf(streat("Claude ","Aubry")). Voici une liste des fonctions de manipulation de chaines de caractéres. Je ne saurais trop vous conseiller de vous entrainer a les utiliser : STRCAT(s1,s2) STRNCAT(s1,s2,n) Concaténation s2 s1. STRCMP(s1,s2) STRNCMP(s1,s2,n) Comparaison de s2 et s1. STRCPY(s1,s2) STRNCPY(s1,s2,n) Copie de s2 dans s1. STRCHR(s1,c) STRRCHR(s1,c) Renvoie un pointeur vers la premiére (derniére) occur- rence dec dans s1. (suite poge 34) / pacess / — — J cnn ce ff —<—< <_< STRLEN(s1) Renvoie le nombre de caractéres de s1. STRPBRK(s1,s2) Pointeur vers la premiére occurrence d'une des lettres de s2 dans s1. STRSPN(s1,s2) Nombre de caractéres depuis le début de s] ne comportant que des caractéres de s2. STRCSPN(s1,s2) Nombre de caractéres depuis le début de s] et ne contenant pas de carac- téres de s2. STRTOK(s1,s2) Sert 4 décomposer une chaine de caractéres en ses divers composants (tokens) séparés par un caractére de la chaine s2. Si un tel caractére est rencontré, il est remplacé par un @. Un nouvel appel de STRTOK avec NULL comme paramétre retourne un pointeur vers le second token. Tenez, je vais étre sympa avec vous, voici un petit exemple d'utilisation de STRTOK, le moins évident 4 utiliser : £include<string.h> £include<stdio.h> main() é char *chaine="LUNDI,MARDI;MERCREDI ! JEUDI : VENDREDI-SAMEDI=DIMANCHE" ; char *separateur=",;!:-=",*s,i; puts(strtok(chaine,separateur) ); while(s) puts(s=strtok(NULL,separateur ) ); é CLASSIFICATION DE TYPES DE CARACTERES Ces fonctions débutent par IS suivit du type a tester et retournent la valeur 0 (faux) ou !0 (vrai). Elles sont trés précieuses pour faire des saisies contrélées (et toutes les saisies devraient étre contrélées). Selon les versions de C, les classifications de types de caractéres sont implémen- tées en bibliotheque standard ou en macro (£include <ctype.h> ) ou les deux au choix. ISALPHA(c) Vrai sic est une lettre. ISUPPER(c) Vrai si ¢ est une majuscule. ISLOWER(c) Vrai si c est une minuscule. ISDIGIT(c) Vrai si c est un chiffre (0-9). ISXDIGIT(c) Vrai sic est un chiffre hexadécimal (0-9, A-F ou a-f). ISALNUM(c) Vrai sic est une lettre ou un chiffre. ISSPACE(c) Vrai si c est un espace tab return LF CR tab vertical. ISPUNCT(c) Vrai si ¢ est un caractére de ponctuation. ISPRINT(c) Vrai si ¢ est un caractére imprimable (de l'espace au tilde). ISGRAPH(c) Identique 4 isprint mais |'espace en moins. ISCNTRL(c) Vrai si ¢ est un caractére de contréle. ISASCII(c) Vrai sic est un caractére ASCII. — | cese f aan ec oo / crave avery —cancacec / — /* PETIT EXEMPLE DE RECONNAISSANCE DE TYPES s/f #include <ctype.h> #include <stdio.h> main( ) é char i=0,c=0,chaine[80]; /* Sur Apple GS [=° et ]=§ */ printf("Tapez une chaine comportant des lettres et des chiffres: "); scanf("%s",chaine); for (i=0;i<strlen(chaine);i++) é c=chaine[i]; if (isdigit(c)) printf("%c est un chiffre",c); else é printf("%c est une lettre ",c); if(isupper(c)) puts("majuscule" ); else puts( "minuscule" ); é Il est parfois utile de forcer un type de caractére, lors de la saisie,de facon 4 éliminer les problemes de minuscules/majuscules dans des zones de recherche. Les instructions de conversions de types de carac- téres sont 1a pour résoudre ce genre de probléme. Ces instructions débutent par TO et permettent de transformer une majuscule en minuscule et vice-versa. L'objet retourné est un entier. toupper(c) Renvoie une majuscule correspondant ac. tolower(c) — Renvoie une minuscule correspondant a c. toascii(c) Renvoie un entier dont les bits de poids > 47 sont fixés a0. La fonction ci-dessous permet de convertir une chaine de minuscules en majuscules, elle existe dans la plupart des C, mais pas sur I'Apple. char *strupr(str) char *str; é char *p=str; /* crée un pointeur vers la chaine str*/ while((*str=toupper(*str))!=0) ++str; return(p); é main() é printf(strupr("salut")); é Suffit pour aujourd'hui : Vous avez bien travaillé. La prochaine fois, des maths et des fichiers. (svite page 36) —_e_e_—_—_—o—o—OoO— oO cess | — — / ce MEIN LiEBE / Pour nous distraire je vous propose de vous prendre quelque temps pour des dieux... Vous allez voir naitre et disparaitre, devant vous, des civilisations entiéres dans le jeu de la vie. Pour des raisons de lisibilité j'ai remplacé les caracétres ° et § de I'Apple par | et ]... Ne vous affolez pas et surtout n'écrivez pas 4 Apple pour leur demander ou ils ont caché ces sacrés caractéres. Edetine nb-co 80 Le jeu de la vie ou jeu de CONWAY char on genes Sonne. | nb oo a char next_generation[nb_li}[nb_co]: PD =, ; Coy) a oe . Auteur Claude AUBRY a al PROPRIO HEPAT BNO: Adaptation APPLE GS Emile SCHWARZ ** Création de la premiére génération aléatoire me void init_generation() e.. . , Le mathématicien CONWAY a imaginé un weaned char I.co.aleatowre: jeu dit de la vie : dans un univers modélisé, for (li=1 ;li<cnb_lisli++) un certain nombre de cellules naissent, for Keon :€o<nb_co;co++) vivent et meurent selon les régles de géné- old_ generation[li][co] =0: tique simplifiées. Une cellule et ses 8 voisi- next Feteciaerl| {co]=0; nes apparaissent ainsi : 8 s I 123 i On fabrique les grands ancétres 4*5 for (roi ssnopuation. departs} 578 aleatoire=rand(); co=aleatoire*80/256; aleatoire=rand(); lizaleatoire*24/256; O17 generation {ty [co]=1; é I* bay Calcule une nouvelle génération en fonction des régles de vie ag calc_generation() unsied Shar Hreoeaperance: Les régles sont les suivantes : =1sli<i slit) - " sas ha ont Osan co:co++) 1. si une cellule posséde deux ou trois voi- ~ oii sines elle survie esperance= eneration|li-1}[co 9 es +old cereration i+1 co Ico} 2. si une cellule posséde plus de 3 voisines soltgeneraton il co-1 elle meurt par surpopulation + Fordsocreration Weteoet 3. si une cellule posséde 1 ou pas de voisine aeration Lae cor elle meurt par isolement +old—generation|li+1 }{co- . sok generation i+ ‘co+t}: 4. chaque emplacement adjacent 4 trois cel- Sener (espétenice) lules donne naissance a | nouvelle cellule. case 4: incon [li] [co] :break; generation |i] [co] :break: ibreak; case 0: Case 1 :next_generation|li] [co case 2 :next_generation|Ii] {co} aces :next_generation|li][co! é é / Pacesc / / Claude ausRY —LANGAGEC / i: ** Compte le nombre d'individus d'une génération Vous pourriez vous amuser 4 changer méchamment les int nb_individus() olihest — char li,co; univers, en y prévoyant des intx : épidémies, des guerres ov des for i ) baby-booms ! ==1) x++; return(x) Mais comme vous figurez au * nombre peop = y 5 mise a jour de I'ancienne génération universelle, non ? yout met_a_jour() unsigned char |i,co; for (li=1 ;li<nb_li;li++) for (co=1;€o<nb_co;co++) “ old_generation|li] [co] =next_generation|li] [co]: I *s Affichage de I'univers yor affiche_univers() ned char li,co; orn “Generation : %3d Population :%3den".nb_generation++,nb )_individus()); lor ee sli<nb. ) lisli++) rintf("En"); for {cont ;co<nb_co;co++) if (old Seat ltcol= =0) printf("+"): else print , e printf("¢n¢nRETURN pour prochaine génération ou 'q' pour quitter —> "); e iad | 7 PROGRAMME PRINCIPAL | main(. é char c; " printf(“¢fPopulation de départ (inferieure 4 1000 -> "); geant("7ec" & population separ); TREMPLIN MICRO while(population_depart > 999); consacre un article & srand(population depart); tous les ouvrages sur le = langage C, et cela init_generation(: depuis un an. Rares, en do effet sont les langages é ayant suscités, en si peu affiche_univers(); de temps, un aussi grand calc_géneration(); meta Jour): nombre de bouquins prone jar(); traitant ite remarquablement whe (=a) loww oot / Pace37 / —— / nesTor —pipacticie: / BASICANIME Qui n’‘a pas révé (comme vous, peut-étre ?) — chez les enseignants... ou les parents — de pouvoir mettre un vrai didacticiel entre les mains de ses éléves ou de ses enfants ? Tenez ! personnellement, lorsque je fis mes débuts, en Basic, sur un modeste — mais terrrrible — PC1210 de Sharp, combien de fois ai-je pesté contre le manque d‘intérét des rares “méthodes” existant alors ! Je n’en suis que plus heureux de pouvoir vous annoncer ; «Le Basicanimé existe et je l'ai testé». C'est une réalisation des Productions SNEIL, avec le label France-Logiciel, pour PC compatibles. Précision inutile, quand on con- nait un peu |’univers du MS.DOS ; le Basica- nimé ne s'intéresse qu’au langage bien connu des utilisateurs : le GWBasic ou le Basica. VRAI ou FAUX ? Peut-on réellement apprendre un langage en visualisant la succession de legons animées ('adjectif n'est pas trop fort) d'un didacti- ciel ? la réponse est oui... On en est d’ail- leurs convaincu dés la premiére lecon. En théorie, Basicanimé a été concu pour étre facilement 4 la portée d’éléves d’au moins 13-14 ans (4 partir de la classe de 3°)... mais sans limite supérieure. y = i {ULLAL wereeeer — / Pacess / Les auteurs prévoient un "apprentissage” couvrant de 60 4 100 heures, selon le rythme personnel d'acquisition, mais il est évident que le temps ne compte plus lorsqu’on atteint un certain niveau. Tous les program- meurs savent que cette activité est une grande “mangeuse” de loisirs... et s‘en félicitent. DES PEDAGOCGUES Avec Basicanimé, on se trouve en présence d'un bon produit, soigneusement mis au point par des pédagogues. L’éditeur n’a pas Iésiné sur le nombre de disquettes (10, trés exactement) et si le fascicule d'utilisation est mince, c'est tout simplement parce que celle-ci se révéle on ne peut plus simple. Un seul regret : on perd |'usage du disque dur pendant la formation, ce qui empéche certai- nement les copies, mais pénalise |'uti- lisateur, un accés disque dur étant plus agréable qu'un accés disquette. Ce n'est la qu'un petit grief. Je sup- pose que des accords pourront étre conclus entre lI'éditeur et d'éventuels multi-utilisateurs. Productions SNEIL 14, rue Pergolése 75016 PARIS — Tél. : (1) 45.01.52.94 / Hubert PELC— MATHEMATIQUES / — RESOLUTION d'un systeme de 2 équations @ 2 inconnues Il faut savoir que, dans un plan muni d'un repére (celui du programme est orthonormé, cest-a-dire formé d’axes perpendiculaires d'origine 0, avec graduation identique), |’équa- tion d'une droite est de la forme : ax+by+c=0 ou a, b et c sont des réels quelconques : Vr ; - 2 ; etc. 3 Le programme RESO.EQ] permet de résoudre un systeme de deux équations linéaires, et de trou- ver ainsi leur point d'intersection dans le repére. 0 G x+y +2 3x + 3y Le programme donnera, pour ce systéme : i y=2 Ce couple (-2 ; 2) correspond aux coordonnées du point commun aux deux droites, par rap- port a l’origine 0 du repére. TEXT : HOME 1 PRINT TAB 5)"RESOLUTION D’ UN SYSTEME DE": PRINT TAB‘ 10)"2 EQUATIONS A 2 INCONNUE s" VTAB 6: PRINT “FORME DE L’EQ UATION :°" PRINT : PRINT TAB 10)"A x +By+cC=0" D1 D2 et M (- 2) “Ta Ces coordonnées vérifient aussi les deux équations de droites, c'est-d-dire que les équations s'annulent en remplacant x et y par leur valeur respectives : 2*(-2)+2+2=0 3%*(-2)+3+*2=0 Remearques : Pour supprimer le sous-programme tra- cant les deux droites, il sutfit de suppri- mer le GOSUB 430 de Ia ligne 260 et les lignes 430 4 560. Il est possible de mémoriser l'image par BSAVE nom,A$4000,L$1FFF. PRINT TAB 10)"A’x + B’y + c’= 0" B197 POKE 34,12 FBAF PRINT : PRINT : 7402 INPUT "Valeur 8819 INPUT “Valeur 991B INPUT "Valeur 7010 GOSUB 300 F643 HOME 2F97 (suite page 40) / Pace39 / / Hubert PELC — MATHEMATIQUES / — 340 IF ACI) < 0 THEN PRINT "- 140 INPUT "Valeur de A’ : 0341 3 ABS (ACI))5" x "G BC25 150 INPUT "Valeur de B’ : of43 | 350 IF B{I) = 1 THEN PRINT “+ y 160 INPUT "Valeur de C’ : 9A45 ";: GOTO 390 Socc 170 GOSUB 300 F643 | 360 IF BCI) = - 1 THEN PRINT " 180 HOME 2F97 - y "3: GOTO 390 0c97 185 : 0034 | 370 IF B¢I) > 0 THEN PRINT “+ * 186 REM CALCUL DE delta,X ET Y 3BC1D 3" ¥ "3 B3FF 187; 003q | 380 IF B(1) < 0 THEN PRINT "- * 190 D = (AC1) * BC2)) - (AC2) * 3 ABS (BCID) 5" y "G 9E28 B(1)) 1923 | 390 IF C¢1) < 0 THEN PRINT "- “ 200 IF D = 0 THEN PRINT : PRINT 3 ABS (C(1)); 4D12 : PRINT "L’EQUATION N’A PAS 400 IF C¢1) > 0 THEN PRINT "+ " DE SOLUTION.": GET A$: TEXT 3CC1); BEE? : RUN 4FC8 | 410 PRINT "= 0 “""""7"""* a508 210 X = (¢BC(1) * C¢2)) - (BC2) * 420 RETURN 6381 C610) 4D 2298 | 425: 0034 220 Y = (¢C¢1) * AC2)) - (C(2) * 426 REM TRACE DES 2 DROITES Av) 7D 159q | 427 : 003A 225: 003A | 430 HOME : HGR2 : HCOLOR= 3: FOR 226 REM IMPRESS" DES RESULTATS I= 170 2:H=0 FBDA 227 3 0034 | 440 HPLOT 139,189 TO 139,0: HPLO 230 PRINT : PRINT "DELTA VAUT :~ T 0,98 TO 279,98 ccs2 "3D péBs | 450 FOR A = 4 TO 274 STEP 15: HP 240 PRINT : PRINT TAB 5)"X = " LOT A,100 TO A,96: NEXT 6075 x 9578 | 460 FOR A = 8 TO 188 STEP 15: HP 250 PRINT TAB 5)"Y = ";¥ E186 LOT 137,A TO 141,A: NEXT 37AE 260 VTAB 24: HTAB 39: GET A$: GO 470 IF BCI) = 0 THEN HPLOT -C SUB 430: GET AS 047F (1D) / ACID *# 15 + 139.0 TO 270 POKE 34,0 887C - CCI) / ACI) * 15 + 139,191 280 IF A$ = "F" THEN PRINT CHR : GOTO 550 1905 % (4)"RUN STARTUP" FSE2 | 480 FORX = - 9.2 TO 9.2 05465 290 RUN sac | 490 Y= ¢ - ACID *X - C61) 4B 295 : 003A aD 8D8D 296 REM IMPRESS" DES EQUATIONS 500 IF - Y * 15 + 98 > 189 OR 297: 0034 -¥ #15 + 98 ¢ 0 THEN 540 = 1440 300 1 = 1 + 1: VTAB 7 + I: HTAB 510 IF H = 0 THEN HPLOT X * 15 10 D1B0 + 139, - Y * 15 + 98 3BFO 310 IF ACI) = 1 THEN PRINT "x * 520 HPLOT TO X * 15 + 139, - Y 3: GOTO 350 SA7B #15 + 98 ASF 320 IF ACI) = - 1 THEN PRINT “ 530 H=1 5149 - x "3: GOTO 350 7E91 | 540 NEXT 0582 330 IF ACI) >) 0 THEN PRINT ACI) 550 NEXT 0582 yxy 0132 | 560 RETURN 6381 SS Avez-vous commandé le quatriéme volet de nos petits recueils de routines en langage machine ? compatibles Apple //GS, bien str / paceso / Avec disquette : 160 F Une exclusivité Tremplin Micro Vous possédez un GS tout frais et vous vous inquiétez, a juste titre, du devenir de la carte mére, injustement martyrisée par des extinc- tions/allumages répétés, pour cause de confi- guration inadéquate du RAMdisk. Vous avez en effet remarqué que la sélection effectuée au tableau de bord ne prend effet qu’a la suite d'une séquence extinction/allu- mage de la machine. Aprés FREEZER, qui venait 4 votre secours sous ProDOS8, voila comme promis FREEZER.CDA. Lors du démarrage, la fonction MMBootinit du Memory Manager s'oriente vers un démar- rage 4 froid ou 4 chaud, en fonction du contenu d'un octet. Comme 4 peu prés tout ce qui est dans le GS, cet octet peut se promener. II ne I’a pas fait 4 l'occasion du changement de ROM, mais ¢a nous pend au nez. J'ai donc choisi de récupérer son adresse dans le code méme de loutil en question, en respectant scrupuleuse- ment les procédures d'approche réglementai- res. Rich WILLIAMS n‘ayant pas répondu a mon courrier (pourtant vieux de prés de trois mois), je ne suis pas en mesure de garantir que le MMBootInit commencera toujours de la méme facon.. Il y ad’ailleurs déja un cas déviant. Lorsque l'on démarre sous P16 avec la vieille ROM (précipitez-vous chez votre concession- naire pour la remplacer par la nouvelle), les outils en ROM sont largement patchés et le code MMBootinit est remplacé par un simple RTL. C'est pourquoi j'ai été amené 4 introduire une identification de ROM provoquant un trai- tement en force dans le cas de la ROM.00. Jiespére que les commentaires du source vous permettront de comprendre le fonctionnement de FREEZER.CDA. Celui-ci n'est pas publié dans la revue 4 cause de sa longueur, mais figure sur la disquette d'accompagnement. Pour ceux qui ne veulent pas (ou ne peuvent pas) s'offrir cette disquette, il est bien entendu possible d'effectuer une saisie directe du code HEXA, mais les caractéristiques du systeme P16 compliquent les choses. / Yvan KoeNnic—apPLencs / —— FREEZER Je conseille d'effectuer la saisie en commen- cant en $2000, de sauver en mode BIN par BSAVE FRIZ,A$2000,E$27FF. \| vous sera alors possible d’utiliser SIGNATURE pour contréler votre saisie. Lorsque tout sera d’aplomb, faites : * BLOAD FRIZ © CREATE FREEZER.CDA ,T$B9 * BSAVE FREEZER.CDA,A$2000 ,E$27FF,T$89 ATTENTION ! MERLIN 816 respecte les contra- intes du LOADER P16, mais ne le fait pas exac- tement comme APW. De ce fait, les fichiers générés par ces assembleurs ne sont pas iden- tiques. La disquette T.M. reprend les deux ver- sions : APW et MERLIN. Pour ceux qui ne maitrisent pas APW (ou qui ont acquis, pour environ 150 francs, chez DDA les seules disquettes APW, APW.U et DEBUG- GER), je rappelle que les Clefs pour APPLE NGS, malgré quelques coquilles, contiennent une présentation d'APW et de l'assembleur. Sous APW, il faut d’abord recopier FREE- ZER.SRC sur une disquette de travail 3 p. 1/2. Ensuite, depuis le SHELL taper : * MACGEN FREEZER.SRC FREEZER.MACROS 2/AINCLUDE/M16 = afin de faire générer le fichier Macros par APW. * Faire ensuite ASML +E +T FREEZER.SRC pour effectuer l’assemblage et le ‘linkage’. Les paramétres employés sont bien agréables : © +T provoquera un arrét de l'assemblage en cas d'erreur (quelle qu’en soit la nature). © +E vous renverra alors directement en mode éditeur 4 I'emplacement de l'erreur. Inutile de répéter ces paramétres 4 chaque tentative : ils sont mémorisés (jusqu’d ce que vous quittiez APW). Il est cependant possible de les désactiver par -E ou -T. II existe d'autres paramétres, mais ¢a suffira pour aujourd'hui. (suite page 42) _—_—_—_—_ ee / Pact ts | — [a — / FREEZER / ll reste encore 4 taper depuis le SHELL : FILETYPE FRE

Showing the first 100000 of 169125 characters.

mp.ls