Skip to main content

tremplin micro newsletter issue 21

  • PublicationApple Periodicals
  • Pages68
  • Sourcetremplin_micro_newsletter_issue_21.pdf
← Magazines tremplin micro newsletter issue 21
/ 68
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
tremplin Un programme de facturation comple: et sur Apple M 1631 - ci Mh = i © GESTION DU DISQUE DUR SUR MICRO-ORDINATEUR Collection QUE Don Berl'ner et Chris De Voney Texte fiangais d'Olivier Engler, Tellig Vous possédez un micro-ordinateur — PC ou compatible ? Alors, un jour ou l'autre, vous ourez besoin... et envie dun disque dur. Peut-étre méme en avez-vous déjé un, et envisogez-vous l'achat d'un second disque dur. Peut-étre aussi désirez-vous tirer le meilleur parti possible du disque dur que ‘vous possédez deja. Quelle que soit votre situation, ce livre est pour vous. débutonts ou utilisoteurs chevron- 1iés. Ilse divise en quatre parties : — La premiére examine les avontages et inconvénients respectils des disquettes et des disques durs, les principes de base, lo technologie, les fonctions et les dittérentes corociéristiques dun disque dur. Puls on apprend a l'nstaller, a le structurer et 6 le mettre en service. — ladeuxiéme portie présente les connais- sonces de base & acquérir avant de com- mencer d trovailler avec un disque dur. Les auteurs y analysent les fonctions du DOS. — la troisiéme partie o pour but de vous aider 6 améliorer l'organisation de votre disque dur et d lo rendre plus performonte. _— Lo derniére partie illustre les différentes fi méthodes possibles pour améliorer lo gestion du disque dur. Les techniques et Jes progrommes présentés permettent diorgoniser le disque et de faire des copies de sauvegarde, / BIBLIOTHEQUE INFORMATIQUE / « IBM PC, STRUCTURE ET ENVIRONNEMENT Deuxiame édition Peter Norton Texte francais de Dimitri Stoquort La pluport des utilisateurs de lo gamme IBM PC connaissent déjé bien l'ouvrage de Peter Norton, qui est devenu une véritoble “bible” (evolution dy DOS, I'cpparition des nou- veoux modales de lo gamme ont rendu indis- pensable une nouvelle édition entiérement retondue et remise 4 jour. Peter Norton nous donne aujourd'hui une version nouvelle de son livre, tenant compte, en particulier, des nouvelles versions du DOS (iusqu'au DOS 3} et des machines de type PC XT et AT. Les lecteurs qui conncissent deja l‘ouvrage trouveront donc une mine dinformations complémentaires. Ceux qui ne fe connaissent pas encore découvriront un précieux quide de travail. Le livre permet en effet diacquérir une compréhension totale de Ia structure, du fonctionnement et de l'environnement des machines de la gamme IBM PC. C'est une ini- tiation oux caractéristiques et aux possibili tés quietles offrent. Il permet en outre doacquérir une bonne matirise du sysiéme dexploitation MS-DOS’PC-DOS. Cette mai- trise permettro aux utilisateurs d'obtenir de leur matériel les résultots es plus performants. Les commondes, les fonctions et les utilitai- ces du MS-DOS /PC-DOS sont présentés, illus- trés ef discutés. Vovteur s‘attoche 4 foire découvrir, pos 4 pas, les différentes copaci tés du micro-ordinateur et de son environne- ment. Il propose de nombreux exemples, & travers des progrommes que le lecteur pourra tester lui-méme Reliure souple, 180% 240, 408 poges — 260 F n « dBASE Ill Plus Programmation avancée Collection QUE Josaph-David Corrabis Texte francois d'tric Terrier, Groupe ESC, Pau BASE Ill Plus s'est imposé comme le stan- dord des systémes de gestion de bose de don- nées sur micro-ordinoteur ~ PC ou compati- ble. Son principal attrait est de fonctionner en réseau. Il dispose en outre d'un généra- teur d'applications intégré. Avec cel ouvrage, écrit dans un style trés convivial, par un spécialiste chevronné de lo progrommation, l'utilisateur pourra tirer de BASE Ill Plus le meilleur profit possible. |! s‘agit en effet d'un ovtil logique de program- mation, ef non pas d'un livre contenant des tecettes qu'il sulfirait de copier. Toutes les techniques utilisées sont expliquées de tagon trés pédagogique et illustrées de nombreux exemples. Une fois assimilées, elles permet- tront au lecteur de les reproduire el de les adopter 4 ses besoins. le livre est divisé en trois parties. Lo pre- miére es! consacrée aux quatre principes de lo programmation avancée en dBASE (écri- ture de programmes compacts ; développe- ment de programmes minimisont le temps dexécution et l'espace disque ; écriture de programmes modulaires: développement dune connaissance avancée des spécificites de BASE), Lo deuxieme examine les techni- ques 6 utiliser pour développer les applica- tions protessionnelles. Lo troisi¢me est con- sacrée 6 l'utilisation de dBASE Ill Plus couplé 4 des logiciels complémentaires permettant de développer des applications completes. Relivre souple, 158X230, 384 pages — 295 F Ces J ouvrages sont édités chee INTER EDITIONS. 97. ov. du Maine 75014 PARIS tremplin | SOMMAIRE Apple et ProDOS (noms et logos) sont des marques dépo- aé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 : Lo Petite Motte — Senillé — 86100 CHATELLERAULT. Téléphone : 49.93.66 .66 PuBLiCiTe : Raymond JULLIEN (1) 45.75,41.81 Commission Paritaire : Les revues qui choisissent d'étre réel- lement ov service du Lecteur, en ne Tobligeent pas & glaner, dans plu- sieurs mogazines, les renseigne- ‘ments concernant sa machine, ne bénéticient pas du numéro de Com- mission Poritaire, et pas d’ovantage des tarifs postoux réduits. TREMPLIN MICRO — Bimestriel — C'est one publication des Editions JIBENA, 4, rue de la Courdes-Noves, 75000 PARIS — S.A. au <opitol de 3600000 F — Imprimé por CITE-PRESS/PARIS — Service de vente Presse-Promotion, él: 49.93.48.03. — ‘Dépit lage! & lo date de porution — Inserip- tion @ fa Commission Poritatre des Publica- tions et Agences de Presse en cours — Directeur de lo Publication : Guy-Clément COGNE — Diftusion N.M.P.P. la disquette TREMPLIN MICRO contient tous les progrommes du numéro, ainsi Ligh les sources trop longs pour étre publiés dons les peecsid de la revue. Avec la collaboration de : André BROSSAUD, CHARLY et F. SIGAL, Marc FREFOYE, Stephan HADINGER, Yvan KCENIG, NESTOR, Jean PERROT, Emile SCHWARZ. Yvan KOENIG s‘interroge... TREMPLIN MICRO aussi! .........-... 2 APPLESOFT La France et le Monde FRANCE 3 sur votre Apple (Jean PERROT) 7 FACTARIF = Un programme complet de facturation, mms | (Yon KOENIG) Nombres premiers (NESTOR) eee rare ne neat eres Apprendre le € dans les livres - DE L’APPLESOFT au langage C Une contribution majeure de CHARLY et F. SIGAL ................ 26 GS Basic LE JEU DE YAM (André BROSSAUD) Ce logiciel inédit, entigrement écrit en GS Basic exploite les possibilités graphiques de l'Apple // GS. initiez-vous & l'assembleur Tout le monde comprendra comment fonctionnent les trois versions CU GRY SPECIAL Ha NES ON 4) ord swesincmunaina’s dawiiy sue aaron ga 13 LE TAL BASIC Il existe et Emile I'a essayé. Trés puissant, il compile les program- Wide Geri feen GSS. Bases as ces een mwrerecersmrnn 6:4 rere nario nee oe a MS-DOS sur APPLE TURBO BASIC Appel de sous-programmes ...... en sur Apple 11 GS Utilisation de DEF SEG ................. 50 (avec PC Transporter) Encadrez vos listages ............ as SY Prodos.NDA Un nouvel accessoire de bureau pour votre Apple // GS, (Stephon. HAGINGER): «ics. 020s cena ree crm amicoownynrne J Pace! {| — / Yvan xoenic—épiro / Yvan KOENIG sinterroge TREMPLIN MICRO AUSSI ! Aprés de longs mois de flottement, APPLE France a enfin un Directeur Général. Nous attendons avec impatience que celui-ci veuille bien nous dire si, comme l‘affirme J. SCULLEY, le GS est encore un produit d'avenir, ou si, comme de nombreuses sirénes cherchent 4 nous en convaincre, ce n'est (en France tout au moins) que |'APPLE if et le LISA réunis. Sans doute n’est-il pas inutile de déballer quelques échantillons du fonctionnement quasi svici- daire de ce qui était, il y a peu, un réseau de distribution... «Si vous m‘achetez un MAC, j‘assurerai le service permet — en particulier — d'utiliser & fond le disque 60 oprés-vente moi-méme, mais si vous prenez un GS, i! eg Puisque Apple France ne semble pas pres de foudra vous dém... avec Les Ulis». diffuser la révision € de sa rom SCSI (et son logiciel de Signé : un concessionnaire agréé Apple. partitionnage). pensez-vous pouvoir importer la corte Un autre. non moins agréé : we norrive pasdme | CMS» procurer les compo- Réponse : Bof ! sants pour la mise & niveau du GS que je vous aivenduil | yx. ; y a six mois. — Le client : «Allo ! il porait que vous étes CLARIS-France, est-il possible d'obtenir, en France, fa version nouvelle APPLEWORKS 2.0 (américaine) aux mémes conditions qu‘aux U.S.A., lorsqu‘on est OFFICIELLEMENT en possession d'APPLEWORKS 71 Réponse: Bof! vous savez, ce qui nous inté- resse, c'est le Mac. «Dommage : j‘envisogeais d’en acheter trois exemplaires supplémentaires». «Ah bon ! alors revenez dans huit jours, (ourai le nécessoire.» Le pire. c'est que, huit jours plus tard, lo mise 4 jour otten- l‘agréé: due depuis des semaines étoit effectivement réalisée. ¥.K.: «Allo! dons le mogosine T... vous publiez une page de pub proposant, entre autres, des logiciels pour le GS. Lun de s’étant pos compotible avec fa nouvelle Rom. pouvez-vous me dire ce qu'il en est des autres ?» Réponse : ¥. ‘Allo ! dans le défunt Echo des Apple, vous proposiez les disques durs CMS. Je sais que CMS propose pour ceux-ci, aux U.S.A., une carte inter- face SCSI permettant un partitionnage du disque, ce qui Bof ! jen’en sais rien. Y.K.: «Ah oui ! pourtant, CLARIS fait la plus grosse part de son bénéfice avec APPLEWORKS et tait de la pub a tout va pour ce programme ?» Réponse : C'est vrai, mais c'est aux U.S.A. x, compagnie ; Attendez-vous 4 voir bientét un GS pertormant grace av 65¢832. Réponse de W. MENSCH pare des 4502, d5c02, A5cB16, 65c802 et WASC265) «Nous prévoyons que les prototypes du 65c832 seront disponi- bles dans 18 mois et que la fabricotion de !o version 8Mhz com- mencera en 1990 (c’était le 25 avril 1988 sur GENIE). Comme vous le voyez, le moral est au plus bas. Envolé l'optimisme des lendemains d'AppleExpo ! Cependant, je suis tétu et j'aimerais qu'on nous explique pourquoi la gamme /! est si mal traitée en France, alors qu'aprés avoir remodelé le fle, APPLE US se prépare a rajeunir le fic (d'aucuns, bien informés, annongaient I'abandon de ces deux machines). D'accord : Apple France est en avance sur les U.S.A., puisque la firme livre désormais le GS en version 1,2mégas, alors que les U.S.A. introduisent enfin la version 512 k, mais pourquoi n‘ont-ils pas utilisé leur fichier clients pour informer directement les possesseurs de GS de la procédure de mise 4 niveau ? Pour propo- ser un abonnement a /'Echo des Apple quatre mois avant sa disparition, ON avait été capable diouvrir ces fichiers, Echo était-il plus important que le GS ? Dernier détail avant de vous quitter : acheter du matériel aux U.S.A. peut conduire a des situations délica- tes... en cas de panne. Par contre, dans l'état de décrépitude actuel du réseau de distribution francais (non, je ne parle pas de SIVEA Cannes), n’hésitez pas commander directement aux U.S.A. Pour moins de $30 (port inclus) PBI software vous enverra MONTE-CARLO. Ce n’est pas de la pub, juste un exemple pour rappeler que, lorsque les prix sont corrects, mieux vaut un original qu'une copie. Bien sir, la doc est en anglais, mais il en est de méme chez les rares importateurs. Yvan KOENIG — 5 juin 1988. / Pace2 / / Jean Perrot —appiesorr / — La FRANCE ef le MONDE sur votre Apple ! Désirez-vous savoir quelle distance sépore Angers de Toulon ? Utilisez le programme FRANCE de Jean Perrot. Le petit cousin de votre grand-mére passe un week-end @ Guadalajara et vous désirez lui téléphoner, mais en étant sér de ne point le réveiller. Autrement dit : quelle heure est-il la-bas et (ca ne cote pas plus !) combien de kilométres vous séparent ? Lancez le programme MONDE ! Un conseil : lisez d’abord les explications de Jean Perrot. Mieux : tapez-les et n'hésitez pas a les revoir de temps en temps. C'est un peu longuet, mais cela vous évitera, par la suite, si vous donnez une copie de votre disquette 4 un copain, d‘avoir a lui photocopier deux pages de TREMPLIN MICRO ! Second conseil ; créez d’abord un sous-catalogue intitulé DISTANCES (ou HEURES), puis commencez par y mettre le micro-menu que nous avons baptisé START. Suivront EXPLICATIONS, FRANCE et MONDE. Bonne copie ! START 100 DS = CHR (4): PRINT DS"PR "“NR$" le programme “MONDE’" £3": PRINT D®"PREFIX/T21/D1 : PRINT 6803 STANCES" 2750 155 POKE 1403,10: PRINT IV$" 3 105 1V$ = CHRS (15):NR& = CHR "NRS" le programme ‘FRANCE’ $ (14) 449C “: PRINT 7910 120 T$ = "Par Jean PERROT 27 Ru 160 POKE 1403,10: PRINT IVS" 4 e du Clos Beaumois 14000 CA "NRS" abandonner les recher EN": GOSUB 130 4287 ches": PRINT F771 125 GOTO 135 2144 165 VTAB 19: PRINT "Votre choix 130 L = LEN (T$): POKE 1403,40 “3s GET H$: PRINT H® 2E8E - L / 2: PRINT T$: RETURN 767C 170 IF H® = "1" THEN PRINT DS" 135 PRINT : PRINT :T$ = "MEN RUN EXPLICATIONS" 7730 Ue"b 1 SOU BT TE *F I 175 IF H$ = "2" THEN PRINT DS" NVERSE : GOSUB 130: NORMAL RUN MONDE" 2011 : PRINT 4082 180 IF H$ = "3" THEN PRINT D0$* 140 PRINT "Voulez-vous :": PRIN RUN FRANCE" 424E J) t 185 IF H$ = "4" THEN HOME ; PR 145 POKE 1403,10: PRINT IV$" 1 INT D$"PREFIX/T21": PRINT D “NR$" le programme “EXPLICA $"“RUN STARTUP” 4BFB TIONS*’": PRINT 24F2 190 CALL - 198; GOTO 165 F378 150 POKE 1403,10: PRINT I1V$" 2 > / Paces / / FRANCE/MONDE / EXPLICATIONS --------------- { EXPLICATIONS )-----------------~--- DS = CHRS (4): PRINT D$"PRE3": PRINT IV$ = CHR (15):NRB = CHRS (14) PRINT "Voici quelques explications concernant les programmes “IVS “ MONDE "NR$" et "IVS" FRANCE "NRS PRINT : PRINT IV$" PROGRAMME ‘FRANCE’ “NR&" :": PRINT PRINT "-I] permet de déterminer les distances entre 46 villes de F RANCE (2 a 2 )" POKE 1403,10: PRINT “Le calcul est basé sur le fait que :* PRINT 1¥$" 1 “NRS" 1a lonqueur (MR) d’une portion de méridien de 1 minute d’angle est égale": PRINT " ~""& 1,852 Km (équivalent au m ille marin international?" PRINT 1VS* 2 “NR&“ la longueur (PR) d’une portion de paralléle de 1 minute est égale (en Km)": PRINT “ “""a 1.852 * COS (LA) “-LA ét ant la latitude du “paralléle-." PRINT IVS" 3 "NR$"“ sur une faible tance (quelques centaines de Kilométres) la distance": PRINT " ~~ entre 2 points est sensibleme nt l’hypoténuse d’un triangle rectangle dont” PRINT " “““les 2 cotés de l’angle droit sont :": PRINT “- 1 portio n de “paralléle (PR) égale & la différence des longitudes des 2 po ints"; PRINT "~ 1 portion de méridien (MR) égale a la différence des lati tudes des 2 points": PRINT PRINT "-Le théoreme de PYTHAGORE permet le calcul de cette hypotén use" VTAB 23: POKE 1403,60: PRINT 1¥$" TOUCHE S.V.P. "NRS" “;: GET H$: HOME PRINT IV$" PROGRAMME ‘MONDE’ “NRS" ;" POKE 1403,25: PRINT “-Ce programme détermine :" PRINT IVS" 1 “NRS" I’heure d’un lieu de la terre, soit par rapport au méridien de GREENWICH": PRINT " ~""(temps universel TU), soit par rapport & I‘heure légale de PARIS aussi" PRINT “ “""bien heure d’été que d’hiver)." PRINT : PRINT IVS" 2 "NRS“ la distance entre 2 points de la terre, ainsi que les heures en ces 2"; PRINT “ “““points ¢ TU ou heure 1 égale de PARIS) donnés par longitudes et latitudes" PRINT +: PRINT IV$" 3 "NRS" On peut avoir la liste des 102 villes e ntrées en DATAS": PRINT PRINT IV$" 4 "NR&" les distances (2 & 2) entre 102 principales vil Jes du monde, ainsi que les": PRINT " ““"heures dans ces 2 villes (TU ou heure de PARIS)" PRINT : PRINT "1] donne aussi I’heure dans l’une des villes lorsqu ‘on a l’heure dans i’autre." PRINT : PRINT “ ~-A noter que le programme ne tient pas compte des heures d’été ou d’hiver qui“: PRINT "peuvent exister dans d’autre S$ pays que la FRANCE, mais il tient compte des dates"; / Paces / Ce programme de présentation pourrait aussi étre mémorisé sous forme de pages ou bien utiliser une courte routine lisant un fichier texte. Jean Perrot a choisi la formule BASIC “totale”. BD30 449C F78E 0612 3761 9B9C 2179 2709 0504 110F 4439 1A?2 BIEE DFIS E40E 0275 DF 25 7078 CCCE 6637 220 225 230 235 240 245 250 255 260 265 270 PRINT "en précisant, & la suite de chaque heure, s’il s’agit du jo ur J ou J-1 ou J+i." PRINT : PRINT " “-L’utilisateur pourra, & son gré, augmenter le no mbre des villes du monde” PRINT “entrées en DATA. I] suffira de modifier la valeur de NU a | a ligne 50 de “MONDE‘" VTAB 23: PQKE 1403,60: PRINT IV$" TOUCHE S.V.P. "NR$" "“y: GET H#: HOME PRINT "-Le principe du calcul est basé sur la résolution des trian gles sphériques": PRINT “Le triangle envisagé est ici 1’intersecti on du tétraédre dont te sommet est le" PRINT “centre de la terre,et dont les arétes passent par le pole N ORD de la terre et": PRINT "chacun des 2 points envisagés.” PRINT ; PRINT "Si a, b, c sont les faces du tétraédre (cotés du tr iangle sphérique) et A, B et C, les angles di@dres opposés on a no tamment ja FORMULE suivante :” PRINT ; POKE 1403,15: PRINT “COS¢c)=COS<a) * COS(b) + SINCa> * SIN tb) * COS¢C)" PRINT : PRINT “-Les cotes du triangle spherique sont alors des por tions de GRANDS CERCLES de laterre supposee spherique (longueur d’ un grand cercle --> 40000 Km)" VTAB 23: PRINT IV$" R "NR$" = Revoir explications ~"IV$" M "NR$" = MENU disquette ““IV$" F "NRS" = Abandonner "; GET HS: PRINT H$: IF Hé = “R"™ THEN RUN / sean Perrot —appesorr / B16D 0038 SCBS E716 1A92 7046 2E95 2B1E 148E CiBS 275 IF H$ = "M* THEN PRINT CHR (4)"RUN START" DF4B 280 IF H8 = "F" THEN HOME : PRINT CHRS (4)"PREFIX/T21": PRINT CHRS ¢4)"RUN STARTUP" 3312 285 CALL - 998: GOTO 265 Fos) 100 REM -n--e en == ( PROGRAMME VI FRANCE LE FARCE 105 D$ = CHRS (4); PRINT DS"PRE 3°: PRINT BD30 110 PI = 3.1415926535:R = 20000 / PIiA = O:B = 0 EC7c 115 RESTORE :IV$ = CHR (15):NR $= CHR (14) FBS4 120 GOSUB 320 2B45 125 PRINT : PRINT "Voulez-yous uv oir les villes concernées ? (taper "IVS" 0 “NRS" pour OU 1) "3: GET H$: PRINT H® CE7B 130 IF H® = "0" THEN GOSUB 325 288A 135 RESTORE : PRINT 20A2 140 PRINT : INPUT "Nom de la pre miére ville DANS L’ORDRE ALP HABETIQUE (RETURN = FIN) “;V 1$: PRINT : IF V1% = "“ THEN HOME : END E093 145 INPUT “Nom de la seconde :"" y¥2: IF V2S < VIS THEN 225 4EF6 150 FOR 1 = 1 TO 46 * 3 STEP 3 DIED READ V$,L0,LA 5281 / Paces / —/raa | ——————_—_—__—__...al 160 165 170 175 180 A 185 190 195 200 205 210 215 216 220 225 230 235 240 245 250 255 IF V$ = V1$ THEN LAC1) = LA: LOC1) = LO:Vis = VS:A = 1 IF VS = Y2$ THEN LAC 2) LA: LO(2) = LO:V2s = V$:B = 1 NEXT IF A = 0 OR B = 0 THEN 355 = 0:0N = ABS (LOCI) - LOK 2)):DP = 1.855 # DN * COS ¢ LAC1) * PI / 10800) DL = ABS (LAC!) - LAC2)):DM = 1.852 * DL DS = SQR (DP * 2 + DM * 2): 0S = INT (DS) FOR 1 = 1 TO 30:82 = PEEK ¢ 49200): NEXT PRINT : PRINT "A vol d’oisea u, la distance entre ";1V$V1 SNRS;" et ";1VS$V2$NR$;" est de :°";1V;DS;NR$;"_ Km" TAB 22: POKE 1403,1: PRINT 1¥s" C “NR$;" pour continuer vee" TUS" M "NR&" pour ME NU de disquette """""~ “1V$" F "NR$" = FIN ““j: GET HS: P RINT : IF H® = "C" THEN KOM £ : RUN 1F HS = "F" THEN HOME : NT CHRS (4)“PREFIX/T21": NT CHR ¢4)"RUN STARTUP“ IF H$ = "M" THEN PRINT $ ¢4)"RUN START” IF H& = CHRS (27) THEN E : END GOTO 205 CALL - 198; PRINT : PRINT : PRINT : PRINT 1U$"J’Al DIT % PAR ORDRE ALPHABETIQUE’ . COMMENCE2... TOUCHE S.V.P."N RS;" “"33 CALL ~- 198: GET H $:A = 0:B = 0: PRINT : HOME PRI PRI CHR HOM : GOTO 135 END CALL - 198: PRINT "L’une de s villes ne figure pas dans ma liste...RECOMMENCEZ....To uche S.V.P. “"3: CALL ~- 198 : GET Ht: GOTO 135 DATA ANGERS ,-34,2850 ,AMIENS, 154, 3053 ,AVRANCHES ,-82, 2921 DATA BASTIA,568, 2543 , BAYONNE 3790, 2610, BESANCON , 362 , 2834 DATA BEZIERS,198,2600 ,BORDEA UX ,-34, 2650 , BOURGES , 144, 2824 DATA BREST ,-270,2903,CAEN,-2 AC3F 9744 0582 CCSF 9330 E660 ODD? 087E 3312 OF 4B a29F 2042 FBO 0180 3416 3128 BA2A AGIE 260 265 270 275 280 285 290 295 300 305 310 315 320 325 330 335 340 345 350 355 360 365 370 02951 ,CANNES,420,2433 ~~ DATA CHERBOURG ,-97,2980 ,CLER MONT-FERRAND , 187,2747,DIJON, 302,2960 ~ DATA DUNKERQUE ,142,3062,GREN OBLE ,343,2711,LE HAVRE, 10,29 70 DATA LE MANS,12,2880,LILLE,! 81,3040 ,LIMOGES, 76,2750 DATA LOURDES,1,2587,LYON, 290 12744 MARSEILLE , 325, 2598 DATA MONACO, 447, 2623 ,MONTPEL LIER, 233,2616 ,MULHOUSE , 440 ,2 864 DATA NANCY , 370, 2921 ,NANTES 9 0, 2834 NICE ,438, 2622 DATA NIMES, 259, 2630 , ORLEANS, 115,2875,PARIS,140,2930 DATA PERPIGNAN, 174,2563,POIT TERS, 21,2791 ,REIMS , 242, 2955 DATA RENNES ,-102,2887,ROUBAI X,182,3041 , ROUEN, 65,2965 DATA ST-ETIENNE ,262,2725,ST- QUENTIN, 196, 2990 , STRASBOURG, 465,2915 DATA TOULON, 356 ,2588,TOULOUS E,88, 2603, TOURS ,42,2844 DATA VERSAILLES, 128, 2928 POKE 1403,14: PRINT 1V$" DIS TANCE A VOL D’/OISEAU DE DEUX VILLES FRANCAISES "NR#: RET URN HOME :H = 1:V = 0; FOR 1 TO 46: READ V$,LO,LA:V = 1 VTAB V: POKE 1403,H: PRINT V 1 + <u $:B2 = PEEK (49200) IF 1 = 17 OR I = 34 THEN V = O:H = H + 20 NEXT : VTAS 23: PRINT "Touch e SVP pour la suite.... "3 GET H$: RESTORE : HOME : GOS UB 320 : PRINT 1V$" ";V1%;" N’EST PAS SUR M IF A = 0 THEN PRINT A LISTE... "NRS" ~"j IF B = 0 THEN PRINT : PRINT : PRINT IVS" "j¥26;" N’EST P AS SUR MA LISTE... “NRS" ~"j CALL - 198: GET H$: HOME : RUN 86EB 8015 4F06 7ALS 3606 479C oss! Sp20 2385 ABCY 4B45 32F7 BD44 9060 925A DFCC BA62 $381 2A07 DeFD 0812 — fac ff $A <_< 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 REM = PROGRAMME MO NDE )= === OS = CHRS (4): PRINT DS"PRE 3": PRINT IVS = CHR$ (15):NR$ = CHRS (14) PI = 3,1415926535:R = 20000 ff PE Z = O:NV = 106: REM Nombre d e villes en DATA REM, — << MEY POKE 1403,35: PRINT IVS" M E N U “NR#: PRINT : RESTORE PRINT “Voule-vous :* PRINT : POKE 1403,1: PRINT I VS" 1 "NRS“ Avoir 1’heure en un lieu de la Terre par rap port au méridien de GREENWIC H.* PRINT : POKE 1403,1: PRINT I VS" 2 "NR&" Avoir la distanc e entre 2 paints du monde,do nnés par latitudes/longi tude 5. PRINT : POKE 1403,1: PRINT I Vs" 3 "NRS" Voir la liste de s villes du monde concernées PRINT : POKE 1403,1: PRINT I VS" 4 "NR$" Avoir la distanc e entre 2 villes et les heur es dans ces 2 villes." PRINT : POKE 1403,1; PRINT I Vs" S "NRS" Revenir au MENU de disquette." PRINT : POKE 1403,1: PRINT 1 VS" 6 "NRS" Abandonner le pr ogramme* VTAB 19: HTAB 1: PRINT "Votr e choix :~";: GET H$:H = VA L CHS) IF H < 1 OR H > 6 THEN PRIN T : GOTO 170 BD30 449C Ec8s 2C9F 9485 BDSD E2E7 AFSS bA3F 18BE B87D ocoD 180 185 190 195 200 205 210 215 220 225 230 235 240 245 250 255 260 265 270 275 ON H GOTO 240,240,490,530,18 5,190 PRINT CHRS (4)"RUN STARTUP" HOME : END VTAB 6: PRINT "Taper G,E OU H suivant qu’il s’agit de 1’ heure TU (de GREENWICH), de \’heure “""légale d’été en F RANCE ou de I’heure d’hiver" 3: GET KS: PRINT :K1$ = K& IF K& = “G" THEN K$ = "(TU o u de GREENWICH)":CR = 0; GOT 0 220 IF K$ = "E" THEN K% = “été en FRANCE)":CR = 2: GOTO 220 IF KB = "H" THEN K@ = “Chive rt en FRANCE)":CR = 1: GOTO 2 20 CALL - 198: GOTO 180 REM -- --( NE PAS EFFACER — a VTAB 9: PRI “Heure "IV$;" "GK$;" "GNRB;" "3: CALL - 8 68: INPUT HG$:HG = VAL (HGS 2: IF HGS = "0" THEN RETURN IF NOT HG OR HG > 24 THEN CALL - 198: GOTO 225 RETURN K = HiV$¢1) = " A "3V8C2) = “Be HOME : PRINT “Les latitudes et longitudes sont exprimées en DEGRES ou DEGRES.MINUTES ": VIAB 3 PRINT "Latitude NORD :~entre 0 et +90 “/ Latitude SUD ~~ “: entre 0 et ~90" PRINT “Longitude EST :"entre 0 et +180 / Longitude QUEST rentre O et -180" GOSUB 195 FOR 1 = 1 TO K: IF K = 1 THE N 290 VTAB 7 + I * K: POKE 1403,45 : PRINT "Latitude de 5 INPUT LA$CI):LACT) = VAL <L A$(1)): IF LAS(1) = “O* THEN 285 “"SUSCT B1ic BéB2 SES! 6118 7E29 FC23 4659 8075 84AB 57¢b 6381 C552 FA70 4548 134F 4F69 C656 cosa —_—_—X—_—_ewss ee / PvE? / — 280 285 290 295 300 305 310 315 320 325 330 335 340 345 350 355 360 w= / Paces / (suite) IF NOT LACI) OR ABS (LACI) ) > 90 THEN CALL - 198: GO TO 270 N = LACI):2 = 0: GOSUB 460:P ACI) = PI / 2 - NR VTAB 8 + 1 * K: POKE 1403,45 : IF K = 1 THEN PRINT “Long itude du lieu “";: GOTO 300 PRINT “Longitude de ““;VS<¢I) i INPUT LOS(1):LO¢I) = VAL (L O${1)): IF LOS<I) = "0" 310 THEN IF NOT LOCI) OR ABS (LOCI) ) > 180 THEN CALL - 198: G OTO 290 N = LO(1):2 = 1: GOSUB 460:6 O¢1) = NR:HCI) = HG + HL:HC(I 2 = INT (HCI) # 100 + 0.5) / 100 H(I) = H{I) ~ CR NEXT : POKE 216,0: IF K = 2 THEN 355 IF H{1) > 23 THEN H(1) = H¢1 d - 24:3$8¢1) = "Cjour J#1)": GOTO 340 IF H¢1) ¢ 0 THEN H(1) = H¢1) + 24:09(1) = "Cjour J-1)": G oTO 340 JS(1) = "Kjour J" VTAB 12: PRINT "S’il est "IV $" "“SHG;" "NR&" heures ";K$; "le jour J, i] est "1V8" "H €1)5" "NRS" heures au lieu": PRINT "de longitude "IVS" “L OC1) 3" "NRS;" degrés ";JSC1) 1 TO 20:82 = NEXT FOR II = PEEK GOTO 435 DL ABS (G01) ~ GOC2)): R EM DIFFERENCE DE LONGITUDE C= COS (PAC1)) x COS (PAC B325 CE91 8DEB 391C D487 F973 77Et 2CFF 2F83 ab4C BO7F 365 370 375 380 385 390 395 400 405 410 415 420 425 430 435 440 445 450 455 460 465 470 N 475 22) + SIN (PA(1)) * SIN (P AC2)) * COS <DL) IF C = 0 THEN THETA = PI / 2 : GOTO 375 $= SOR -C* 2:T=S/ C:THETA = ATN {T) IF C <¢ 0 THEN THETA = THETA + PI RT = INT (R # THETA + 0.5): tL = LEN (V$(1)) + LEN (U8¢ 2.) + 26 VTAB 14; POKE 1403,40 - L / 2: PRINT "Distance entre "IV SVSCIONRS" et "IVSUSC2)NRS;" => *gRTs" Km* FOR 1 = 1 TO 2: IF H«ID <0 THEN H(1) = HCI) + 24:38¢1) = “(jour J-1)": GOTO 405 IF H(1) > 23 THEN H(I) = H¢1 > - 24:U$¢1) = "Cjour J#1d": GOTO 405 J$(1) = NEXT PRINT + PRINT "Il est ";IV$; " "SHC1) 3" "SNRS;" heures a “Z1US;VSC1) SNRS SPCC 1)US¢1) “Cjour J)" 3 PRINT “... et “gIVS;" "3H¢2) y" ";NRS;" heures a ";1USVS( 2)NR$; SPC( 1)J$<2) FOR I] = 1 TO 30:82 = 49200): NEXT GOTO 415 REM PEEK VTAB 23: POKE 1403,1: PRINT 1V$" C "NR&" pour (Ciontinue ee "IVS" M “NRS" pour au (Menu de disquet te “";: GET H$: CALL - 958 “C" THEN RUN "M" THEN PRINT CHR $ (4)"RUN START” IF H$ = CHR® (27) THEN END GOTO 435 Ni = N:N = N * SGN (N):MIN = N - INT (N>}EMIN = MIN # 1 46 = INT (N) + MIN:NR = N.* 1 / 180 =N* SGN (N1): IF 2 = URN FOR J = 0 N P SGN <N1):NR = NR * 0 THEN RET - 12 TO i2 4804 0314 944E AaD2 1136 1538 6675 Agi? 0582 APSA EDgS AFCC Fad? A747 EVEO DF4B AACE 1347 S4F3 2944 CDEB —_ee ee _ / sean Perror—appiesorr / — 480 485 490 495 500 505 510 Sis 520 525 530 535 540 545 550 SSS A= 560 565 570 375 IF LOGI) > - 7.58 4+ Je ASA ND LOCI) ¢ 7.5 + J * 15 THEN = J: RETURN NEXT +: RETURN HOME :H = 1:V = 0; FOR 1 = 1 TO NV - 4: READ V$,LO,LA:V = Va tf VIAB V: POKE 1403,H: PRINT V $:B2 = PEEK (49200) IF I = 21 OR I = 42 OR 1 3 OR I = 84 THEN V = O:H +16 NEXT : FOR I = PEEK (49200): 5 PRINT ; CALL é H ou 1 TO 10:B2 = NEXT +: GOTO 43 - 198: PRINT 1 Vs" J’AI DIT..PAR ORDRE ALPH ABETIQUE..."NR$;: CALL - 19 8: PRINT " “~“Touche S.V.P. “5: GET HS REM ------ ( DISTANCES ET HEU RES DES PRINCIPALES )---~-- aan------=--==- © VILLES HOME : GOSUB 195 INPUT “Nom de la premiére vi lle dans l’ordre alphabétiqu e :°"3V$¢C1)s PRINT INPUT "Nom de la seconde :°* IF V$¢€2) <¢ VSC1) THE jV$C2): N 510 PRINT POKE 1403,32: VTAB 14: PRINT IVs" PATIENCE "NR 0:B = 0: FORS = + READ V$,L0,LA:Z = IF V$ = V$(1) THEN ASN = LA:I = 1:4 460:PAC(1) = PI / = LO:N = LO 460:60(1) = NI Loe IF VS = V$(2) THEN LAC2)? = L = LA:] = 2:B = 1: GOSUB i? 1 TO NY 0 LAGID = L = 1: GOSUB 2 - NR:L0¢1 :: GOSUB 5] 1 wZomt R:H(1) = HG + H 460:PA(2) = P 2 - NR:LO¢2 > = LO:IN = LO:2 = 1:; GOSsUB 460:G0(2) = NR:H(2) = HG + H L ~ CR:Z = 0: G NEXT IF V$(1) =°"CAEN" OR ¥$(1) = OTO 575 2E62 6E6D OF7B 9DSD C9BE 312E 003A 1620 8B1A OFES 4B5A DS7B 1080 SSF 1EB! 0582 Seo 585 590 S95 600 405 61s 620 625 $30 635 640 645 650 655 660 665 "PARIS" THEN H(1) = H(1) + C R IF V$(2) = "CAEN" OR V$(2) = "PARIS" THEN H(2) = H¢2) + C R IF A = 1 AND B = 1 THEN 355 IF A = 0 AND B = 0 THEN PRI NT "Ni "IVS" "Y$C19" "NRE" i "IVS" “U$<2)" "NRE" ne fig urent sur ma liste.,.,RETURN S.V.P. “"3: GOTO 605 IF A = 0 THEN PRINT IVs" "Vv $¢1)" "NRS;" n’existe pas su roma liste...RETURN SVP “*;: GOTO 605 IF B = 0 THEN PRINT IVS" “VU $(2)" "NRS" n’existe pas sur ma liste,..8ETURN S.V.P, “" VTAB 18: CALL - 958: PRINT "=Si on donne |l’heure d’un 1 ieu (taper 1 pour Je premier et 2 pour le second)" PRINT “on obtiendra )’heure de I’autre lieu.,."1V$" M "N R$" revient au menu" VTAB 22: PRINT "Si 1’heure e st en TU il faut ajouter 1h eure en HIVER et 2 en ETE po up avoir “~"l*heure légale e n FRANCE." VTAB 19: POKE 1403,61 GET K$:K = VAL (KS): CALL - 938: PRINT : IF K&@ = “M” T HEN RUN 1F K ¢ 1 OR K > 2 THEN 415 VTAB 21: CALL - 958: PRINT "Si heure de ";V$C(K);" = "G3 INPUT " "3K¢K): VTAB 21: POK E 1403,15 + LEN (V$CK)): PR INT IVE" "SKCK) 3" "SNRS3" "3 “(jour J)"; IF K¢K) ¢ 0 OR KCK) > 24 THE N 645 Ka - K) = KCK> + HC3 = KD - H¢K) IF K¢3 - K> ¢ 0 THEN K(3 - K > = K(3 - K) + 24:08¢3 - K) = "(jour J-1)": GOTO 675 IF K(3 - K) > 23 THEN Ki3 ~ BSBS ESBA 4460 7714 2359 Féio CFA2 é6DDe 73C7 785A 6177 8074 BAN? 9DEF OAD —_—_—_—_—:__aa_ nn / nce | — == /monve / (suite) K) = K(3 - K) - 24:J$(3 - KD = "(jour J+#i)": GOTO 675 J3(3 - KD = "“Cjour J)" PRINT ” alors il est ";1U$" "sK(2 - Kd3" "sNRS;" heures a "s¥8C3 - K) SPCC 1)J8¢3 - K) VTAB 22: POKE 1403,11: PRINT "Taper "IVS" A "NR$" si on v eut entrer une autre heure “ yi GET L$: PRINT LS IF L@ = "A" THEN 615 CALL - 198: RUN DATA ABIDJAN ,-4.30,5.21,ADDI S-ABEBA ,38.48,8.45,ALEXANDRI E,29.50,31.06 DATA ALGER ,3,36.38,AMSTERDAM 14.50 ,52.22,ANDORRE,1.30,42, 30 DATA ANKARA , 32.47,39,56,ATHE NES, 23.45,38,BAGDAD ,44.27,33 -07 DATA BARCELONE,2.10,41.21,BA SSETERRE ,-61.20,16.36,BELGRA DE, 20.30,44.45 DATA BERLIN,13.25,52.32,BERN E,7.2%,46.57,BEYROUTH ,35.21, 33.48 DATA BIRMINGHAM ,~-1.53,52.27, BOGOTA, -73.48,4.22,BONN,7.05 790.45 DATA BRAZZAVILLE,14.22,-4.12 , BRUXELLES ,4.19,50.50,BUCARE ST ,26.07,44.25 DATA BUDAPEST ,19.05,47.30,CA EN,-0.20,49.10,CARACAS ,-66.5 2,108.39 DATA CAYENNE ,-52.40,5,CHICAG 0,-87.45,41.45, COPENHAGE ,12. 30 ,55.42 DATA DAKAR,-17.30,14.35,DELH 1,77.09,28.09, DETROIT ,-83.02 742.20 670 675 680 685 690 695 700 705 710 ais 720 725 730 735 740 B97F 9415 FBFA AaEP? 1ADZ c70D 06608 SEAS BB?d 985F 1B3D 1ES? 35DF 3148 400A EBOC 745 DATA DJAKARTA,104.49,-6.05,0 JIBOUTI ,43.09,11.59, DUBLIN, - $.16,53.18 DATA FORT DE FRANCE,-41,14.4 0 GUADALAJARA ,~102.44,20.50, HAMBOURG ,10 ,53.32 DATA HANOI , 105.47, 21 ,HELSINK 1,25,60.08,HONG KONG,114,22. 10 DATA HONOLULU, -157,21 ,HOUSTO N,-95.33, 29,20, ISTANBUL , 28.5 0,41.03 DATA JERUSALEM, 35.12,31.45,K ABOUL , 69.15,34.30,LA HAVANE, -82.30,22.30 DATA LE CAIRE,31.50,30,LE CA P, 18.30 ,-34,LENINGRAD, 30.20, 60 DATA LIMA,-77.23,-12.06,LISB ONNE ,-9.10,38.43,LONDRES,~0. 10,51.30 760 DATA LOS ANGELES,-118.15,34, LUXEMBOURG 1$.07,49.39,MADRID, ~3.40,40,27 785 DATA MANILLE, 120.54, 14.50 MELBOURNE, 14 5.02,-37.30 MEXICO,-99.10,19.22 790 DATA MILAN, 9.08, 45.27 MONACO, 7.25, 43.4 3,MONTREAL ,~73.30, 45.30 795 DATA MOSCOU,37.30,55.50 MUNICH, 11.35,4 8.08 NANKIN, 118,50 ,32 800 DATA NAPLES, 14.18,40.50 NEW-YORK,-74,4 0.40 NICOSIE,33.20,35 B05 DATA NOUMEA,167,-22.20,0DESSA,30.40,46 30, OSAKA, 135.30 ,34.40 B10 DATA OSLO, 10.4040, 0TTAWA,-75. 40, 45.25 ,PAPEETE,-149,-17.30 B15 DATA PARIS,2,20,46.50,PEKIN,117.36,40, PORT AU PRINCE,-72.30,18.27 820 DATA PYONGYANG, 125.45,39, QUEBEC,-71.50 147.18, RANGOON, 96.44, 16.26 825 DATA REYIKJAVIK,-22,64.05,ROME,12.25,4 1,53, SAINT-MARIN, 12.30 ,43.55 830 DATA SALISBURY, 31 ,-17.40 SAN FRANCISCO 1-122.30,37.45, SANTIAGO, -70.40 ,-38.30 835 DATA SEDUL,127,37.30 ,SHANGAT ,122,31 ,S1 NGAPOUR, 104, 1.22 840 DATA SOFIA, 23.20 ,42.39,STOCKOLM,18.20, 59.20, TAIPEH, 121 .30,25 845 DATA TANANARIVE, 47.30,-18.57,TEHERAN,S 1,27,35.46, TIRANA, 19.50, 41.24 850 DATA TOKYO,139.37,35.41 ,TRIPOLI,13.09, 32.47, TUNIS, 9.03,36.40 855 DATA TURIN,7.42,45.05,VARSOVIE, 21 ,52.1 B,VIENNE, 16,20,48.11 40 DATA WASHINGTON, -77,39.02,WELLINGTON, ! 74.50,-41 23, YADUNDE , 11.37,3.49 750 755 760 765 770 775 c13s EEBS 1852 75At 1c2e ECF D420 FRED OF? 9431 FIAT E8BF 6304 24F4 9EB1 Paid 368F 6080 —_ D280 f ——_—::?/_?" _ eaaaaaaa=—= / terancace c / Apprendrele C dans les livres ? Tremplin Micro s‘intéresse 4 tous les langages, mais notamment 4 celui qui est appelé a devenir LE langage... et vous l'avez reconnu : il s‘agit du € . On ne peut pas dire que les applemaniaques soient particuligrement gGtés avec la version dont ils disposent sur l'Apple HGS. Il leur manque un TURBO € signé Borland, ov un QUICK € signé Microsoft (mais que nous ne connaissons pas). Reste que le Turbo € est utilisable sur GS par le truchement du PC Transporter diffusé en France par Bréjoux. Et alors, quel régal ! D'autant plus que les ouvrages consacrés 6 TURBO € sont non seulement nombreux, mais enrichissants en diable. Nous les décrivons tous (lors de la parution) dans nos pages Biblio. Au fait, peut-on apprendre le € dans les livres ? Assurément oui, mais en prenant le soin de tout lire... c'est-d-dire de commencer par le commencement. D'une maniére générale, les habitués du Pascal ne font qu'une bouchée de I'Abc du € . Lorsqu’on arrive du BASIC, c'est un peu plus compliqué, mais on s'y fait trés vite. Parlons des deux derniers (d'autres arrivent !). TURBO C de Stephen R. Davis epi a Avec ce manuel, on peut parler d‘ouvrage de référence UORBD Y accessible & des programmeurs de bon niveau, sur PC et e compatibles. Turbo (de Borland) est devenu un stan- dard, mais s’écarte parfois de la norme Kernighan et Rit- chie — avec bonheur d'ailleurs. Le livre de Stephen R. Dovis fait le point la-dessus. Mais l'auteur ne se contente pas de disserter sur les mérites respectifs du € classique et du Turbo €.. Il invite le lecteur 4 programmer. Les exem- ples abondent dans ce bouquin... du plus simple au plus complexe (et, parmi ces derniers, la création de program- mes résidents). “4 Un livre qui fait honneur 4 la collection Cedic-Nathan. 475 pages, broché —265F PCV Diffusian BP86 77402 LAGNY/sur/MARNE PLUS LOIN AVEC TURBO C de Daniel-Jean David ane ee el Enseignement complet de Turbo £ sur IBM PC et compatibles, le livre traite les aspects les plus avancés du langage et notamment les pointeurs et la gestion dynamique de la mémoire, ainsi que les fichiers en accés séquentiel direct, et la récursivité. Eien Ni \l comble par ailleurs une lacune des compilateurs £ en fournissant un ensemble complet de graphiques haute résolution, permettant de réaliser tous les dessins possibles. Ce package gra- phique est disponible sur disquette, mais nous ne I'avons pas testé. Nous supposons que cette méme disquette regroupe les corrigés des 50 exercices proposés dans l'ouvrage. Edimicro, 121 avenue d'ITALIE 75013 PARIS 250 pages, Broché — 245 F ER AR / pace / — / ms.p0s— ociciet / A essayer sur votre GS 4 RIM avec PC-Transporter TEXT Vous avez eu la bonne idée de transformer votre Apple //GS en compatible grace au PC.Transporter... mais vous hésitez 4 investir dans un nouveau traitement de texte : j'ai peut-étre découvert un logiciel capable de vous intéresser. ll est diffusé par Internationale Systeme Machine (ISM)*, une société lyonnaise qui développe une gamme de logiciels destinés 4 améliorer et optimiser l'emploi des ordinateurs. Il s'agit de PRIM-TEXT (480 F HT, mais avec timer et alarme). II m‘a paru d'une réelle simplicité parce que convivial en diable. II autorise la manipulation de blocs, la justi- fication automatique, la frappe kilométrique, la recherche et le remplacement, la césure automatique, etc. Il est auto-documenté en frangais et peut étre utilisé de deux maniéres différentes : 4. Sans le Driver et sans le Chrono (impossibilité d’employer les différents caracté- res et non disponibilité du Timer/Alarme/Bloc-note/Table ASCII). ®. Avec ses accessoires et l'on a alors accés (avec les touches de fonctions F2 4F10) aux différents styles de caractéres, ainsi qu’au chrono (ALT-1 48). Un traitement de texte sympa, peu ambitieux, mais suffisant dans bien des cas, pour réaliser des impressions soignées. Nestor. "ISM, 2, Quai du Commerce 69009 LYON — Tél. ; 7847.76.08. Chez le méme éditeur : FT ES ILICO, accélérateur logiciel pour PC, permettant de multiplier la vitesse d'exécution de vos applications (Dbase, bases de données diverses). ILICO assure une réécriture des routines d’entrées/sorties du DOS totale- ment compatible, permettant des temps d'accés et de chargement des fichiers de 2 4 2 fois plus courts. C'est un logiciel trés facile & utiliser puis qu'il suffit de le lan- cer par un seul mot : ILICO ! — / ace 12 [| ———<—$—$— — / NESTOR —APPLEsOFT:M / == GET SPECIAL Comment afficher la mention ” a TEXT : PRINT CHR$ (21): HOME fi Pi ses eg TOUCHE ah la PRINT CHRS (4)"BLOAD GETS/GETS.LM“: VTAB 3. igne 24 dun écran 40 colon- FOR | = 1 TO 879: PRINT "A":: NEXT nes, en mode inverse, puis POKE 2039,193: VTAB 1: CALL - 868 retrouver le contenu éventuel CALL 768 de cette ligne ? PRINT : VTAB 1: CALL - 868: PRINT "Vous avez pressé la touche "; Le contenu de fa touche pres- T = PEEK (6) - 128: IF T<32 THEN PRINT "CTRL-";:T sée est mémorisé en 86. La Paine ol fi démo % Basic montre exacte- IF PEEK (6) <> 155 THEN 30 ment le fonctionnement de VTAB 1: PRINT "(1) ENCORE (2) APPLESOFT (3) MENU cette courte routine. DISK ": CALL 768 R = PEEK (6) - 176: IF R = 1 THEN 25 IF R = 2 THEN HOME : END IF R = 3 THEN PRINT CHR$§ (4)"RUN STARTUP” GOTO 55 300: 20 18 G3 JSR $0318 Vers Bascule. 303: 2C W CO BIT $Co1G Clavier initialisé. 306: 2C W CO BIT $C030 Clic haut-parleur. ht : iy a FC Wee tong al Boucle d’attente (WAIT) en fonction de A. oe : oP be oo we peel il Si aucune touche n'a été pressée, a refaire. 32: way BIT $co1d Clavier 4 zéro, 316: 8&5 6 STA $06 Contenu de |'Accumulateur dans $6. BASCULE 318: AD 2C G3 sLDA $032 31B: 48 PHA 31C: AD 2F 93 LDA $032F On inverse alternativement SIF: 8D 2€ @3 STA $032C Je contenu des adresses $32C et $32F 322: 68 PLA 323: 8D 2F @3 STA $632F MEMO/AFPFICHAGE ——— —___ 326: AQ 12 LDY £$12 1. La partie de ligne-écran concernée est mémorisée a 328: 89 DO G7 LDA $07D0,Y partir de $34C et remplacée par le texte ($338). 328: 99 38 G3 STA $0338,Y 2. Quand une touche a été pressée, c'est le contraire 32E: BY 4C G3 LDA $934C,Y qui est réalisé et I'écran retrouve son aspect. 331: 99 DG O7 STA $07D9,Y 334: 88 DEY 335: 10 FI BPL $0328 *338.34B 337: 60 RTS 20:«10 «12 «05 13 °«13 «G5 IA 20:15 GE G5 20 14 OF 15 03 08 65 20 “ PRESSEZ UNE TOUCHE ” (en mode inverse) Ke / PACES | — —— / Nestor —appiesort/im / GET SPECIAL Cette seconde version est une petite démonstration qui vous montre la rapidité de I'affi- chage en langage machine. La routine d'affichage est pokée a la fin du programme en BASIC (ligne data 90). Les adresses du désassemblage obtenu pourront étre différentes si vous avez modifié une seule des lignes en Basic, mais c’est sans importance. CGETS.BAS1 LOMEM: 29 + ( PEEK (105) + PEEK (106) * 256) TEXT ; PRINT CHR$ (21): HOME : GOSUB 75 PRINT CHR$ (4)"BLOAD GETS/GETS.LM": POKE 6,193 PRINT : CALL AD VTAB 1: CALL 768: PRINT : VTAB 1: CALL - 868: PRINT "Vous avez pressé la touche “; T = PEEK (6) - 128; IF T< 32 THEN PRINT "CTRL-";:T = T + 64 PRINT CHR$ (T) IF PEEK (6) < > 155 THEN 25 VTAB 1: PRINT (1) ENCORE (2) APPLESOFT (3) MENU DISK ": CALL 768 R = PEEK (6) - 176: IFR = 1 THEN 25 iF R = 2 THEN HOME : END IF R = 3 THEN PRINT CHR$ (4)”RUN STARTUP” GOTO 5¢ AD = (PEEK (105) + PEEK (106) * 256) ~ 29 FOR| = AD TO AD + 28: READ R: POKER: NEXT RETURN DATA 165,6,201,32,176,2.9,128,162,2,72,123,32,71,248,104,160,39, 145,38, 136,16,251, 232,224 ,24,144,238,96. AGI: AS 06 LDA $06 On prend la valeur du caractére dans $6. Ags: Co 26 CMP £$20 Bitte ticat hlecon t AGS: BO 92 BCS $GA09 e n'est pas un contréle, on saute. AG7: 99 80 ORA £$80 Sinon on le transforme en caractére affichable. AG?: A2 G2 LDX £$02 X =2 pour commencer 4 cette ligne. AGB: 48 PHA Valeur de A empilée. AGC: BA TXA ‘| X dans A pour que GBASCAL calcule l’adresse de base AGD: 2@ 47 FB& JSR $F847 de la ligne. AIG: 68 PLA Récupération de A. All: AQ 27 LOY £$27 Longueur de ligne dons ¥. Ald: 91 26 STA ($26),¥ AlS: 88 DEY ] Une ligne du carac.ere dont le code est dans A. Alé: 10 FB BPL $0A13 Allg: E8 INX + une ligne, iis ; + 7 Se er Si orc attei ila limite on a fini. Sinon... AID: 60 RTS Retour au Basic. — / ce f oe / NESTOR —APPLESOFT/AM / — DEMO MIXTE (GR ou TEXT) GETS.BAS2 LOMEM: 29 + ( PEEK (105) + PEEK (106) * 256) PRINT CHR$ (4)"BLOAD GETS/GETS.LM": POKE 6,193 TEXT : PRINT CHR$ (21): HOME : RESTORE : GOSUB 75 PRINT : CALL AD VTAB G1: CALL 768: PRINT : VTAB G1: CALL - 868: PRINT "Vous avez pressé la touche "; = PEEK (6) - 128: IF T< 32 THEN PRINT "CTRL-";:T = T + 64 PRINT CHRS (T) IF PEEK (6) < > 155 THEN 25 VTAB G1: PRINT "(1) ENCORE (2) APPLESOFT (3) MENU DISK ”: CALL 768 R = PEEK (6) - 176: IFR = 1 THEN 20 IF R = 2 THEN TEXT ; HOME : END IF R = 3 THEN PRINT CHR$ (4)"RUN STARTUP” GOTO 50 AD = ( PEEK (105) + PEEK (196) * 256) - 29 VTAB 21: PRINT "TAPER (1) POUR MODE GRAPHIQUE ";: GET R$: PRINT FOR | = AD TO AD + 28: READ R: POKE I,R: NEXT : IF R$< > "1" THEN POKE 2150,48: POKE 2151.49: POKE 2161,48: POKE 2162.49: POKE 2273,48: POKE 2274,49: RETURN GR : POKE AD + 9,0: POKE AD + 25,20: POKE 215,50: POKE 2151,50: POKE 2161,50: POKE 2162,50: POKE 2273,50: POKE 2274.50: RETURN DATA 165,6,261,32,176,2,9,128,162,2,72,138,32,71,248,104,160,39,145,38,136,16, 251 ,232,224,24,144,238,96 En modifiant quelques lignes de GETS.BAS] ... et en ajoutant quelques POKES bien ajustés, il est possible d'observer I'effet de GETS en mode TEXT ou en mode GR. Ces modifications concernent : {. L’AFFICHAGE du texte qui passe de /a ligne G1 a la ligne 22. 2. LE REMPLISSAGE de I’écran qui va de 1 419 au lieu de 3.4 24. Attention | Le programme BASIC s‘automodifie, ce qui comporte bon nombre de ris- ques. Qu’un seul espace de VOTRE programme soit différent du NOTRE... et rien ne va plus ! Notez qu'il est facile, en passant en mode moniteur, puis en examinant la mémoire, de vérifier si les bonnes valeurs se trouvent bien aux bonnes adresses. Considérez en tout cas cet ajout comme un exercice amusant... et rien de plus. Cest aussi cela ‘informatique personnelle ! NESTOR. a / nc 5 f/f — = / cesuivres / © GUIDE MICROSOFT DE MS-DOS 3.1 43.3 (Ray Duncan) Difficile de trouver plus compétentes que les Editions Microsoft Press pour parler de MS-DOS ! On soit que ce systéme d'exploi- tation, mis au point par Microsolt Corp, est actuellement le plus utilisé dans le monde. Il tourne en effet sur une dizaine de millions de micro-ordinateurs et il est & la base de plus de 20.09 applications. Cest aussi le mieux connu et l'on ne compte plus les ouvrages consacrés ses diverses versions. Celui de Microsoft Press est destiné a tous les utilisateurs et passe en revue, d'une maniére trés détaillée, toutes les comman- des internes et externes du DOS sur PC, PS et compatibles, Il traite aussi les options de configuration du systéme, ainsi que les directives spécifiques aux fichiers de commandes, & |'éditeur EDLIN et aux fichiers de gestion de périphé- riques (DRIVER.SYS). Un guide complet, @ garder a portée de la main, PCY. Diffusion — BP 86 77402 LAGNY/SUR/MARNE 290 pages sous couverture cartonnée — 285 F © APPRENDRE SPRINT (Jean-Claude De Vos) Monuel de formation de lo collection Cedic/Nathan, bien rédigé et trés bien pré- senté, comme tous les ouvrages de cette série. Le traitement de textes de Borland est un produit séduisant et a déjd conquis bon nombre diutilisateurs de PC et compati- APPRENDRE SPRINT bles. Sa documentation es! copieuse, mais ce manuel dinitiation ne fait pos double emploi. C'est une approche différente, inté- ressante a bien des égards, un tour d’hori- zon complet du logiciel, avec des informa: tions indispensables ov néophyte... et par- fois peu connues des habitues. A offrir & toute personne désirant découvrir rapidement et méthodiquement ce traite- ment de textes de la nouvelle génération. PCV. (360 pages — 235 F) © LELIVRE DE L‘AT (Jérg Schieb) UAT est une machine ouverte, particuliere- ment configurable et disposant d'un grand nombre de périphériques. Auteur de nom- breux ouvrages et logiciels, Jérg Schieb nous propose de découvrir les outils inter- nes de |'AT pour une exploitation plus puis- sonte et plus conviviale de la machine. LE LIVRE DE LAT est une manne d'informa- tions sur le fonctionnement interne de lo machine, ses périphériques, ses différentes configurations... Le lecteur découvrira av fil des pages comment créer ses propres outils de développement ou d'exploitation : savoir par exemple installer un RAM disque, oug- menter les performances de son clovier ov gérer les interruptions du microprocesseur, Autont d’ostuces fort précieuses pour une totale harmonie entre [utilisoteur et so machine Chacun des thémes traités dispose d'une ponoplie complete d’exemples (program- mes, instructions, adresses-clés du systéme...) destinés élargir I'horizon du lecteur dans ses développements ultétieurs. Voici un apercu des principoux sujets étudiés : — Description général du systeme. — Les différences essentielles entre le XT et AT. — Uinstallation et l'utilisation approfon- die du DOS (version 3.3 incluse). — lo pfogrammation des cartes vidéo (CGA, EGA, VGA, PGA, AGA, HERCU- LES (plus). — Uattichage a I'écran : modes texte et grophique. — Le fonctionnement et lo personnalisa- tion du clovier (macros, occélérateur du clavier...), — Uexploitotion des ports série et paral- lle : brochage des cdbles, connexion des imprimantes, périphériques leurre, redirection des entrées/sorties. — Les extensions du systéme y compris la gestion des cartes d’extension mémoire : EMS, EEMS, LIMS. — Les systémes d'exploitation et environ- nements porticuliers : XENIX, WIN- DOWS, GEM. — Le systéme d'exploitation de demain : OS/2. Bénéficiont d'un style agréable tant dans Pécriture que dons la lisibilité des schémas, Jo voleur des informations du L/VRE DE UAT permettra au lecteur d’assimiler tres rapide- ment les informations jusqu’a les intégrer porfaitement dans ses travaux quotidiens. EDITIONS MICRO APPLICATION 13, eve Sainte-Cécile 75009 PARIS (390 pages — 199 F) —/aa6 | ——_—____ eer / Emile scuwarz—Lancace / — LE TML BASIC existe... Emile I'a essayé ! Le trés attendu TML BASIC est enfin arrivé. Pour la modique somme de $125.00 (prix catalogue), vous obtiendrez une disquette et le manuel. Le logiciel est livré avec le systame 3.1, soit ProDOS 16, version 1.3 évidemment équipé du FINDER anglais. Ce manuel (environ 500 pages au format 17,5cm X 21 cm) vous donne tous les rensei- gnements utiles sur le fonctionnement du logiciel. Il est divisé en quatre parties : 1. Le guide de l'utilisateur ; 2. Laréférence du langage ; 3. Programmer en utilisant la boite 4 outils ; 4, Les annexes. Ce logiciel fonctionne en mode "Desktop”, c'est-d-dire qu'il utilise les menus déroulants et les fenétres. Chaque programme — chaque source — est affiché dans une fenétre. Vous pouvez avoir quatre fenétres — quatre sources — visibles a I'écran, mais il est bien entendu qu'il n'y a qu'un seul programme actif. 1d REM MAKE.EXEC.TML 20 PRINT “Fait un EXEC de transfert de fichier .GSB en .TML” 30 OPEN "TRANSFERT", FILTYP = TXT FOR OUTPUT ASE£1 40 PRINT£1;"HOME”:REM Texte du fichier EXEC 50 PRINT£1;"REM Syntaxe: EXEC,”:CHR$(34);"PROG.GSB, SOURCE.TML" 60 PRINT£1:"LOAD 618":REM Charge le programme GS Basic Dans l'annexe D, vous trouverez les différen- tes instructions inconnues en TMLBASIC ou utilisées différemment, plus une liste des nouvelles. En fait, pour les instructions non reconnues, il s‘agit essentiellement de celles fonctionnant en mode immédiat, plus quel- ques autres telles que: BASICa, CONT, COPY, DIR, INVOKE/PERFORM, TRACE/ NOTRACE, LIBFIND, PROGNAM$ et QUIT. Presque toutes ces instructions sont évidem- ment inutiles ou inutilisables dans l'environ- nement TMLBASIC car véritablement dépen- dantes d'un interpréteur. Il s'agit la d'un Basic 16 bits, trés puissant, capable de compiler sur disque, sous forme d'un fichier application, le source que vous avez écrit. Comme il est précisé dans la publicité, vous avez la possibilité de récupé- rer les programmes écrits en GS Basic. Pour cela, utilisez le petit EXEC “TRANSFERT”. En mode immédiat, tapez le programme ci- dessous, puis "RUN" pour créer le fichier EXEC : 76 PRINTE1;"OPEN 62@,FILTYP = TXT FOR OUTPUT ASE1” 80 PRINT£1;"A=LISTTAB :OUTREC =@ :LISTTAB=128+A” 90 PRINTE£1;"OQUTPUT £1 : LIST : OUTPUT £6” 100 PRINT£1;"“OUTREC = 86 : LISTTAB = A”:REM Restaure les valeurs 11d PRINTE£1;"CLOSE £1":REM Ferme le fichier de destination 120 PRINTE1;"REM Transfert terminé”:REM Fin du transfert 130 CLOSE£1:REM Ecriture de l'EXEC terminée 140 FIN. :END / Pacet7 / — ferme [<< Vous pouvez également utiliser votre traite- ment de texte habituel et taper le texte situé entre les deux REMarques, puis le sauver dans un fichier du type TXT sous le nom de "TRANSFERT". La syntoxe d'appel de cet EXEC est : EXEC TRANSFERT, "PROGRAMME.GSB, PROGRAMME. TML" TRANSFERT est le nom du fichier EXEC, PROGRAMME.GSB est le programme en GS Basic, PROGRAMME.TML est le fichier source en TML BASIC. LE TML BASIC n’‘utilise pas les numéros de ligne, ce qui nous oblige 4 employer LISTTAB =128+A (ancienne valeur). En effet, dans ce cas le programme sera listé sans numéro de ligne. OUTREC=@ permet d’avoir des lignes sans aucune tabulation ni CR intem- pestifs. Une fois cette opération effectuée, il vous est possible de récupérer le fichier texte avec le TML BASIC. Vous pouvez égale- ment vous servir des instructions décrites 4 la page 482 du manuel de l'utilisateur du TML BASIC. Une fois votre “source” écrit, vous avez la possibilité d’appeler le “debugger” intégré en cliquant dans le menu Compile l’option Check Syntax, ou bien en utilisant I'équiva- lent clavier Pomme-Y. Si la syntaxe est cor- recte, vous pouvez, grace 4 To Memory & Run (Pomme-M) ou To Disk (Pomme-D), exé- cuter ou sauver sur disque, sous forme de fichier $B3 (ou $16), le résultat de la compilation. Je ne m’étendrai pas davantage sur la des- cription de ce Basic, mais je vous propose un petit programme que j'ai repris du GS Basic et qui fonctionne sans presque rien changer. Reportez-vous 4 Tremplin Micro numéro 19, pour le programme d'origine. Voici les modifications apportées (mise 4 part I'absence de numéros de lignes) : a. ‘apostrophe peut remplacer le REM ou :REM ; b. L'instruction LIBRARY n'est pas suivie par APPEND ; c. Lutilisation du IF... THEN... ELSE ... END iF d. J'ai été amené 4 passer $E1C029 NEWVI- DEO en mode linéaire par un poke. Une remarque s‘impose : IL EST IMPERATIF DE NE PAS TENTER DE CHARGER UNE IMAGE COMPACTEE. En effet, pour des raisons de compacité, je n‘ai pas fait de test sur le type de fichier en cause. Vous pouvez donc charger un écran 32k du type BIN ou PIC ($C) aux $0000). Vous trouverez sur la disquette d'accompa- gnement (qui est indispensable !) en plus du source TMLBASIC, le fichier application qui est utilisable sous le Finder ou le Launcher. Et pour les amateurs, voici l'adresse ot vous procurer ce TML BASIC : TML Systems, Inc. 8837-B Goodbys Executive Drive Jacksonville, Florida 32217 United States of America P.S.: Pour les amateurs de Pascal, il existe aussi un TML PASCAL pour Apple lIGS. Il existe un TML PASCAL pour le Macintosh... UTIL. TML ' Charge et affiche une image au format ecran 32k ‘ Exemple de programme TML BASIC LIBRARY "Memory" / paces / LIBRARY "QuickDraw™ DIM pic! (32767) / Emile scHwarz— ancace / Taille tableau = image 32K Input "Nom de l'image a charger: ";PicS$ IF File(Pic$) THEN OPEN Pic$, AS £11,32767 GET £11;Pic! (0) CLOSE £11 ELSE Ouvre le fichier image Stocke l'image dans le tableau Ferme le fichier PRINT “L'image "Pic$" est inconnue." Picg="" END IF ON PicS="" GOTO Fin POKE 14794793,97 dest a=TEN ("£12000") sourcea=VARPTR (Pic! (0}} longa=32767 _BlockMove (sourcea, desta, longa) Graf On Image inconnue = fin programme Passe en mode lineaire Stocke l'adresse de destination Stocke l'adresse de depart Nombre d'octets a recopier Recopie l'image dans le buffer Affiche l'image PRINT “Pressez une touche pour quitter" GETS a$ Home Graf Off END Attente clavier Repasse en ecran texte. LE LANGAGE DE 5° GENERATION ORIENTE APPLICATIONS TURBO PROLOG BORLAND INTERNATIONAL annonce Ia disponibilité de la version américaine de TURBO PROLOG 2.0. Cette nouvelle version apporte un support externe de bases de données, un interpréteur, un guide tuteur de 350 pages et un support graphique étendu. TURBO PROLOG 2.0 permet également de dévelop- per des bases de données plus importantes gréce & une nouvelle série d'outils. Avec plus de 109009 utilisateurs, TURBO PROLOG est le langage de 5° génération sur micro le plus utilisé dans le monde. A la différence des langages procéduraux tradi- tionnels, TURBO PROLOG offre un code compact trés lisi- ble et facile & gérer. Utilisant seulement le dixigme de lignes codées normalement nécessaires pour une appli- cation écrite dons un langage procédural, il autorise une trés grande rapidité de programmation. “Avec la version 2.0, TURBO PROLOG apporte les outils nécessaires pour développer de puissantes applications commerciales dans les domaines tels que la gestion de bases de données, les systémes experts, les interfaces de langage naturel, les bases de connaissances et les systémes d‘informations intelligents.” déclare Philippe KAHN, Président et fFondateur de BORLAND INTERNATIONAL. Rappelons que BORLAND INTERNATIONAL a été fondée en 1983 par Philippe KAHN a Scotts Valley en Californie. le siege européen a été créé en juillet 1986 par Alain BLANCQUART, Vice Président Europe. Aujourd’hui, BOR- LAND INTERNATIONAL compte un effectif de plus de 650 personnes dont 75 sur la France. Le chiffre d'affaires pour ses trois premiers trimestres fiscaux (du 1*' avril au 3) décembre 1987) de 47,3 Millions de Dollars fait appa- roitre une progression de 110% par rapport 4 la méme période l'année précédente (22.5 Millions de Dollars). * Uniquement sur PC et compatibles disposant de 384/640 K de mémoire. (Disque dur conseillé). Prix : 1495 F HT. =— ee / Pace | — / anaré BRossaup—csBasic / LE JEU DE YAM en GS Basic Voici le premier jeu programmé en GS Basic. II utilise le principe (cher 4 Apple) de la souris. Le programme commence par demander si I’on désire consulter la régle. Si oui, il affiche les trois écrans d'aide. Dans le cas contraire, il donne immédiatement l'image du jeu et attend une action du joueur, celle-ci pouvant se déclencher 4 partir du clavier (pression d'une touche) ou bien de la souris (un ou plusieurs clicks). Avant d’entrer dans le jeu, le joueur doit décliner son identité et indiquer s’il est seul ou accompagné d'un partenaire. En ce qui concerne Ia programmation, on constatera que limage utilisée est une image compactée de type $C0 aux $0001. Le petit module de décompactage est extrait du programme d'Emile SCHWARZ (que vous découvrirez dans ce méme numéro). Bibliographie: © La boite a outils de l'Apple lIGS de J.-P. Curcio (Editions PS!) = * Les clés pour I'Apple lIGS de N. Bréaud-Pouliquen * Le Manuel du GS Basic. 10 REM ****** YAM far André Brossaud (c) Mars 1988 ****** 20 REM sO CLEAR 256200:HOME:GRAF INIT 320 60 ON ERR GOTO erreur 70 DIM pic! (11000), imyam! (32767), event! (16),msg! (256),4r(7),b! (5) 80 DIM t(1,12),b(12),des(5),de(5) :nt=1 110 FOR i=1 TO 12:READ b{i) :NEXT 120 DATA 1,2,3,4,5,6,20,30,40,50,1,1 140 T LIBFIND "QDStartUp",ql%,q2%,q3% 150 IF ql% GOTO prelude 160 LIBRARY "tdfs/quickdraw.tdf" 170 LIBRARY APPEND "tdfs/memory.tdf" 180 LIBRARY APPEND "tdfs/misctool.tdf" 190 LIBRARY APPEND "tdfs/event .tdf" 200 PRELUDE: PROC loadim:GRAF ON:_ShowCursor:PROC debut 220 DEBJEU: PROC NbreJo:PROC affnom 300 REM * Jeu de 1 4 3 coups * 310 JEU: c=1:ht=218:v=32:sbc%=4;IF n=1 THEN h$=244:sbc%=8 320 IF nt>9 THEN ht=h%-8 330 PROC msg (h%,v%, sbc%, sfct, STR$ (nt) ) 345 ON nf(n)=12 GOTO passe 350 COUPS: IF c>3 THEN GOSUB replace:GOTO figure 360 REM * Joue, Satisfait, Rechoisir * / Pacezo / / tf s6U DE YAM EN Gs Basic / 370 CHOIX: PROC event 410 ON y%>150 AND y%<163 AND x%>160 AND x%<236 GOTO joue 420 IF y%>180 AND y%<193 AND x%>160 AND x%<236 THEN GOSUB replace: GOTO figure 430 IF y%>165 AND y%<178 AND x%>160 AND x%<236 THEN GOSUB replace: GOTO Choix 440 IF y%>180 AND y%<193 AND x%>244 AND x%<310 THEN GOSUB quitte 450 REM * Choix des dés * 460 FOR it=1 TO 5:_SetRect (r,131+30*i%, 58,155+30*i%, 80) 470 ON EXFN_PtInRect (Pta+10,r)=-1 GOTO deplace 480 NEXT:GOTO choix 520 DEPLACE: ON de{it}>0 GOTO Choix 530 dc (i%)=1:PROC effdes(0):PROC affdes (46) 540 GOTO Choix 550 REPLACE: FOR it=1 TO 5:0N dc{it)=0 GOTO 570 560 dc (it)=0:PROC effdes(46):PROC affdes(0) 570 NEXT; RETURN 580 JOUE: FOR it=1 TO 5:PROC effdes(0) :NEXT 590 FOR it=1 TO 5:0ON dc(it)>0 GOTO 610 600 des (i%)=INT(RND(1)*6)+1:PROC affdes (0) 610 NEXT:c=c+1:GOTO coups 620 REM * Choix des figures * 630 FIGURE: PROC event 640 ON y%>150 AND y%<163 AND x%>244 AND x%<310 GOTO passe 650 IF y%>180 AND y%<193 AND x%>244 AND x%<310 THEN GOSUB quitte 660 FOR £%=1 TO 12: _SetRect (r,42,17+10*£%,118,26+10*£%) 670 ON EXFN_PtInRect (Pta+10,r)>-1 GOTO 700 680 ON £%<7 GOTO unasix 690 ON £%-6 GOTO full,carre, suite, yam,mini,maxi 706 NEXT:GOTO figure 820 REM * Validations des Figures * 830 UNASIX: ON T(n,f%)>0 GOTO figure 840 FOR it=1 TO 5:IF des(it)=£% THEN T(n,£%)=T(n,£%)+1 BE NEXT:ON T(n,£%)=0 GOTO figure 860 Goro resultat 870 FULL: ON T{n,i%)>0 SOTO igure 880 k=des (1) :kl=k:j3=0 890 FOP. it=2 TO 5:IF des(it)<>k THEN kl=des(i%) 900 NEXT 910 FOR it=2 TO 5:0N des(it)<>k AND des(it)<>kl GOTO figure 920 NEXT 930 FOR it=2 TO 5:IF k=des({i%) THEN j=j+1 940 NEXT:ON j=0 OR 3=3 GOTO figure 950 T(n,7)=1:GOTO resultat 960 CARRE: j=0:0N T(n,8)>0 GOTO figure 970 FOR it-2 TO 5:IF des(it)=des(1) THEN j=j+1 980 NEXT:ON j>2 GOTO 1010 990 FOR it=3 TO 5:0N des(i%)<>des(2) GOTO figure 1000 NEXT 1010 T(n,8)=1:GOTO resultat 1020 SUITE: ON Tin,9)>0 GOTO figure 1030 FOR it=2 To 5 1040 IF des (i%-1)>des(i%) THEN j=des (it) :des (it) =des (i%-1) :des (i$-1) =j:GOTO 1030 1050 NEXT: 5=0 / pace 21 / 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 2000 2010 2020 2040 2050 2060 2070 2080 2090 2100 2120 2130 2140 2150 2160 2170 2180 2220 2230 2240 2300 2310 2320 2400 2410 2420 2430 2440 2450 2500 2510 2520 2530 2540 2550 2560 2570 2580 2600 2620 2630 YAM: MINI: MAXI: RESULTAT: PASSE: FPARTIE: QUITTE: REJOUER: AFFDES: DE1: DE2: DE3: DEA: / Pace 22 / / te seu DE vYameNcssasic / FOR it=2 TO 5:IF des(i%)-des(i%-1)<>1 THEN j=j+1 NEXT:ON j>0 GOTO figure T(n,9)=1:GOTO resultat ON T(n,10)>0 GOTO figure FOR it=2 TO 5:0N des({1)<>des(it) GOTO figure NEXT: T(n,10)=1:GOTO resultat j=0;:0N T(n,11)>0 GOTO figure FOR it=1 TO 5:j=j+des (it) :NEXT ON T(n,12)>0 AND T(n,12)<=j GOTO figure T(n,11)=j:GOTO resultat j=0:ON T(n,12)>0 GOTO figure FOR it=1 TO 5:j=j+des (i%) :NEXT ON T(n,11)>0 AND T(n,11)>=j GOTO figure T(n,12)=}:GOTO resultat REM * Resultat * nf (n) =nf (n) +1:s%=b(f%)*T(n,£%) :IF £%>10 THEN s%t=T(n, £%) h$=31:v%=25+10*£%:IF n=1 THEN ht=137 IF st>9 THEN ht=ht-8 PROC msg (ht, vt, 12,0,STRS$(s%)) s%=0:FOR it=1 TO 12:s%=s%+b (it) *T(n,i%) :NEXT:T(n,0)=s% h$=31:v%=159:IF n=1 THEN ht=137 IF s%>99 THEN h%=h%-16:GOTO 2100 IF s%>9 THEN ht=h%-8 PROC msg (h%, v%, 13, 0, STR$(s%)) REM * Joueur suivant * FOR i%=1 TO 5:PROC effdes (0) :NEXT n=n+1:ON n<nj GOTO jeu nt=nt+1:ON nt>20 GOTO fpartie n=0:GOTO jeu REM * Fin de la partie * PROC event ON y#>165 AND y%<178 AND x%>244 AND x%<310 GOTO rejouer IF y$>180 AND y%<193 AND x%>244 AND x%<310 THEN GOSUB quitte GOTO fpartie PROC msg (174,90,7,0,"En "+CHR$(144)+"tes vous s"+CHRS$(158)+"r") PROC reponse:IF 1%=0 THEN RETURN _ClearMouse:GRAF OFF:END REM * Rejouer * _BlockMove (sourced, desta, longa) :nt=1:n=0:nf (0) =0:nf£(1)=0 FOR i8=0 TO 1;:FOR j%=1 TO 12:T(i%,4j%)=O:NEXT j%,i% PROC msg(168,90,7,0,"Les m"+CHR$(144)+"mes joueurs") PROC reponse:IF 1%=1 THEN PROC affnom:GOTO jeu GOTO debjeu REM * Affiche les dés * DEF PROC affdes (vt) :h=30*i% _Set.Rect (r,131+ht, 58+v%, 155 tht, 80+v%) _SetSolidPenPat (9) :_PaintRect (r) :_SetSolidrenPat (0) v1S=614+vb :v2$=68+vF : vVIE=7TStVvS2N1S=135+hs :h2$=142+hs :h3t=149+hs ON des(it) SOTO del,de2,de3,de4,de5,de6 END PROC affdes yt=v2%:x%=h2%:PROC pts:GOTO 2560 yt=v1%:x%=h1%:PROC pts:y%=v3%:xt=h3%:PROC pts:GOTO 2560 yt=v1b:xt=h1%:PROC pts:yt=v3%:xt=h3%:PROC pts yt=v2%:xt=h2%:PROC pts:GOTO 2560 yt=v1%:xt=h1%:PROC pts:yt=v3%:x%=h3%:PROC pts 2650 2670 DES: 2690 2710 2720 DEG: 2740 2760 2774 POINTS: 2780 2790 3000 EFFDES: 3020 3030 3040 4200 EVENT: 4210 4220 4230 4240 4399 4400 NBREJO: 4410 4420 4450 4460 4470 4480 4490 4600 CAPTURE: 4610 4620 4630 4632 4634 4636 4638 4640 4650 4660 4670 4680 4800 AFFMSG: 4810 4820 4830 5000 AFFNOM: 5010 $030 5040 5300 DEBUT: 5302 5303 5304 / LE JEU DE YAMEN GsBasic / yt=v3%:xt=h1%:PROC pts:yt=v1%:x%=h3%:PROC pts:GOTO 2560 yt=v1%:x%=h1t:PROC pts:y%=v3%:x%=h3%:PROC pts yt=v2%:xt=h2t: pts:yt=v3%:x%=h1%:PROC pts yt=v1t:xt=h3 pts:GOTO 2560 yt=v1t:xt=hl%:PROC pts:y%=v3%t:xt=h3%:PROC pts yt=v3%:xt=hlt:PROC pts:y%=v1%:xt=h3%:PROC pts yt=v2%:xt=h1%:PROC pts:yt=v2%:xt=h3%:PROC pts:GOTO 2560 DEF PROC pts _SetRect (r,xt, yt, x%+2,y%+2) :_PaintRect (r) END PROC pts DEF PROC effdes(v%) :h%=30*i% _SetRect (r,131+h%, 58+vt, 155+h%, 80+v%) _SetSolidPenPat (7) :_PaintRect (r) END PROC effdes DEF PROC event _FlushEvents (~1, 0) :Pta=VARPTR (event ! (0) ) _GetNextEvent (-1,Pta) :0N event! (0)+event ! (1) *256=0 GOTO 4220 yt=event ! (10) +tevent ! (11) *256:x%=event ! (12) +event ! (13) *256 END PROC event REM * Nombre de Joueurs & leurs noms * DEF PROC nbrejo:PROC msg(160,82,7,0,"Nombre de joueurs: ") PROC capte (288, 82,0) :nj=ASC(n$)-48 IF nj<l OR nj>2 THEN PROC msg(296,82,7,7," “):GOTO 4410 PROC msg (160,98,7,0,"Votre Nom :"):PROC capte (232, 98,7) :nl$=n$ ON nj=1 GOTO 4480 PROC msg(160,110,7,0,"Votre Nom :"):PROC capte(232,110,7): n2$=n$ PROC fen(155, 68, 310,130, 7) END PROC nbrejo DEF PROC capte(h1%,v%,ca%) :ht=0:i=0:n$="" GETSX$:X$=CHR$ (ASC (X$)-128) :ON X$=CHR$(13) GOTO 4670 ON XS=CHR$(127) GOTO 4650 ON i>cat GOTO 4610 IF X$=CHR$(123) THEN X$=CHRS$ {ASC (X$) +19) IF XS=CHR$(125) THEN X$=CHRS (ASC (X$) +18) IF XS=CHR$(92) THEN XS=CHR$ (ASC (XS) +49) IF X$=CHR$ (64) THEN XS$=CHRS (ASC (X$)+72) ht=ht+8:i=it1:n$=n$+X$:PROC msg(hl%+h%, v%,7,0,X$) :GOTO 4610 ON n$="" GOTO 4610 PROC msg(hl$+h%,v%,7,0," ");:1=I-1:n$=MID$(n$,1,i) ;h¥=h%-8:GOTO 4610 ON n$="" GOTO 4610 END PROC capte DEF PROC msg (h%, v%,sbc%, sfct,z$} SET (msg! (0))=*z$:_SetBackColor(sbc%) :_SetForeColor(sfc%) _MoveTo (ht, v%) :_DrawString(VARPTR (msg! (0))) END PROC msg DEF PROC affnom PROC msg(14,21,4,0,n1$):0N nj=1 GOTO 5040 PROC msg(84,21,8,0,n2$) END PROC affnom DEF PROC debut PROC msg(178,101,7,0, "Andr"+CHR$(142)+" Brossaud") PROC msg(170,110,7,0,"et Tremplin Micro") PROC msg{186,119,7,0,"(c) juin 1988") / Pace2s / 5310 5320 5330 5340 $350 5355 5360 5375 5380 5390 5410 6000 6010 6020 6100 6110 6120 6130 6140 6150 6160 6170 6180 6190 6500 6510 6520 6530 6540 6550 6560 7000 7010 7020 8000 8010 8020 8030 8040 8060 8070 8080 8090 8100 8110 8130 8140 FENETRE: REPONSE: LOADIM: ERREUR: AIDE: / Pace2s / / te Jeu DE VAMEN csBasic / POR it=1 TO 5:des(i%)=INT(RND(1)*6)+1:PROC affdes (0) :NEXT FOR i=l TO 600:ON EXFN_Button(0) GOTO 5340 NEXT:FOR i%=1 TO 5:PROC effdes(0) :NEXT:GOTO 5310 FOR i%=1 TO 5:PROC effdes(0):NEXT:PROC fen(155,68,310,140,7) PROC msg(160,78,7,0,"Voulez-vous lire la") PROC msg {188,88,7,0, "R"+CHR$ (143)+"gle du jeu") PROC reponse:PROC fen(155,68,310,130,7) ON 1%=0 GOTO 5410 GOSUB aide:GRAF INIT 320:_BlockMove(sourcea, desta, longa) GRAF ON:_ShowCursor END PROC debut DEF PROC fen (h1%,v1%,h2%,v2%, ssp%) _SetRect (r,h1%, v1%,h2%, v2%) :_SetSolidPenPat (ssp%) :_PaintRRect ( xr, 8,8) END PROC fen DEF PROC reponse:_SetSolidPenPat (15) _SetRect (r,190,92,228,101):_PaintRRect (r, 8,8) “setRect (r,235, 92,273,101) :_PaintRRect (r, 8,8) PROC msg(198,100,15,0,"Oui") :PROC msg(242,100,15,0,"Non") PROC event IF y%>92 AND y%<101 AND x%>190 AND x%<228 THEN 1%=1:GOTO 6180 IF y%>92 AND y%<101 AND x%>235 AND x%<273 THEN 1%=0:GOTO 6180 GOTO 6140 PROC fen(164,82,298,102,7) END PROC reponse DEF PROC loadim:1%=10284 OPEN “imyame", FILTYP=192 AS£1,1%:GET£1;pic! (0) :CLOSE£1 SET (b! (0) )=VARPTR(imyam! (0)) :SET(b! (4) )=32768 _UnPackBytes (VARPTR (pic! (0)),1%,VARPTR(b! (0)),VARPTR(b! (4))) sourcea=VARPTR (imyam! (0)) :desta=14753792: longa=32768 _BlockMove (sourcea, desta, longa) END PROC loadim OFF ERR:NOTRACE:GRAF OFF PRINT "Erreur n°"ERR " “ERRTXTS(ERR)" 4 la ligne "ERRLIN:PRINT END PROC fen(0,0,320,200,1):PROC fen(2,2,318,198,0) PROC fen(4,4,316,196, 4) GRAF ON: _ShowCursor PROC msg (86,20, 4,3, "R"+CHRS$(143)+"gles du jeu de Yam") PROC msg(18,36,4,0,"Ce jeu se joue "+CHR$(136)+" un ov deux joueurs et une") PROC msg(10,46,4,0,"partie est compos"+CHRS$(142})+"e de vingt tours.") PROC msg(18,64,4,0,"0n joue de un "+CHR$(136)+" trois coups par tour en") PROC msg(10,74,4,0,"gardant si on veut certains d"+CHR$(142) +"3.") PROC msg(18,90,4,0,"Le but est de former des figures, groupes") PROC msg(10,100,4,0,"de 1, 2, ..., "+CHRS$(136)+" 6, FULL (paire + triplet),") PROC msg({10,110,4,0,"CARRE (4 d"+CHRS$(142)+"s “+CHRS$ (142) + “gaux), SUITE (12345, 23456),") PROC msg(10,120,4,0,"YAM (5 d"+CHR$(142)+"s “+CHR$ (142) + “gaux).") PROC msg(18,136,4,0,"0n a droit "+CHR$(142)+"galement "“+CHRS / .£JEU DE YAMEN GS Basic / (136)+" deux figures") 8160 PROC msg(10,146,4,0,"donnant la somme des d"+CHR$(142)+"s mais i1'une,") 8170 PROC msg(10,156,4,0,"MINIMUM, doit "+CHR$(144)+"tre inf"+CHRS( 142)+"rieur "+CHR$(136)+" l'autre, ") 8190 PROC msg{10,166,4,0, "MAXIMUM.") 8200 n$="SUITE";PROC btn 8220 PROC msg{18,36,4,0,"Cliquez sur 'JOUER' pour lancer les d"+ CHRS (142) +"s,") 8240 PROC msg(10,46,4,0,"puis sur ceux qui amorcent une figure et "+ CHRS (136) ) 8250 PROC msg(10,56,4,0,"nouveau sur 'JOUER'.") 8260 PROC msg(18,76,4,0,"Si vous avez une figure avant la fin des") 8270 PROC msg(10,86,4,0,"trois coups, cliquez sur 'SATISFAIT' puis") 6280 PROC msg(10,96,4,0,"sur une des figures 'UN’ "+CHR$(136)+" "MAXIMUM! .") 8290 PROC msg(18,116,4,0,"A la fin des trois coups, cliquez sur une") 8300 PROC msg(10,126,4,0,"des figures ou sur 'PASSE'.") 8310 PROC msg(18,146,4,0,"Pendant la phase des trois coups, vous") 8320 PROC msg(10,156,4,0,"pouvez remettre les d"+CHR$(142)+"s en place en cli-") 8340 PROC msg(10,166,4,0,"quant sur 'RECHOISIR'.") 8350 n$="SUITE":PROC btn 8380 PROC msg(18,36,4,0,"Les vingt tours termin"+CHR$(142)+"s vous pouvez") 8390 PROC msg(10,46,4,0,"cliquer sur 'REJOUER' pour une nouvelle") 8400 PROC msg(10,56,4,0,"partie avec les m"+CHRS$(144)+"mes joueurs ou d'autres") 8410 PROC msg(10,66,4,0,"joueurs.") 8420 PROC msg(18,89,4,0,"Enfin, pour sortir du jeu cliquez sur") 8430 PROC msg(10,99,4,0,"'QUITTER'.") 8440 n$="" FIN “:PROC btn 8450 RETURN 8460 BOUTON: DEF PROC btn 8470 _SetRect (r,106,173,210,190) :_SetSolidPenPat (0): _PaintRRect (x, 12,12) 8480 _SetRect (r,108,175,208,188) :_SetSolidPenPat (15) :_PaintRRect (x, 12,12) 8482 PROC msg(139,185,15,0,n$) 8484 PROC event:ON y%<173 OR y%>150 OR x%<106 OR x%>210 GOTO 8484 8486 PROC fen(4,24,316,196, 4) 8488 END PROC btn Pour devenir un as du GS Basic, offrez-vous : A LA DECOUVERTE DU CS Basic Utilisez le bulletin de commande, a la fin de la revue Un ouvrage TREMPLIN MICRO 260 pages + disquette. / Pacezs / = / cnartyetF.sica.—Lancace c / DE L‘APPLESOFT AU C La majorité des lecteurs de Tremplin Micro connaissent l'AppleSoft et parmi eux, cer- tains possédent un GS. Le langage C apporte de nets avantages par rapport au Basic, entre autres la vitesse et la puissance de la programmation structurée. Voila pourquoi nous vous proposons d‘adapter vos programmes Basic grace 4 quelques fonctions d’entrées/sorties et de conversions en€ Ces fonctions utilisent trois outils du GS : TextTool, IntegerMath et SANE (Standard Apple Numerics Environment). Paramétres : X : type int, représente la position horizon- tale. Y : type int, représente la position verticale. — Initialisation et sélection de |'écran comme périphérique de sortie et du clavier comme périphérique d’entrée. — Equivalent Basic : PRE3 suivit de IN£3. ¢ printword : « selectScreen: — Envoie une chaine de caractéres sur le péri- = a hérique courant. — Sélection de I'écran comme périphérique de Liste a sortie. — Equivalent Basic : PRINT AS:. — Equivalent Basic : PRE3. — Paramétre : ; : C :type pointer, représente la chaine de ° selectPrinter : caractéres de type C (chaine se termi- nant par le code ASCII G) 4 envoyer. — Sélection de l'imprimante comme périphéri- que de sortie. * prin : — Equivalent Basic : PREI. — Envoie une chaine de coractéres suivie d'un - c retour & la ligne sur le périphérique WawE Ne : ame : courant. — Envoie un saut de ligne sur le périphérique — Equivelent Basic : PRINT AS. de sortie courant. — Paramétre : — Equivalent Basic : PRINT. C:type pointer, représente la chaine de caractéres de type C a envoyer. ° clearscreen : — Efface I’écran et positionne le curseur en - Inputstring : haut et & gauche. — Equivalent Basic : HOME. — Entrée d'une chaine de caractéres au clovier. — Equivalent Bosic ; INPUT AS. ° gotoxkyY: — Paramétres : oe C:type pointer, représente |'adresse ob sera stockée la chaine entrée. L: type int, représente le nombre maximal — Equivalent Basic : HTAB X% suivi de VTAB Y%. de caractéres 4 entrer au clavier. — Positionne le curseur 4 la position désignée sur I'écran. —_— {nz [——_———— errr —K—— ss / CHARLY ot F. SIGAL—LANGACE c /=- — Valeur de retour : N : type int, représente le nombre de carac- teres réellement entrés au clavier. ° printint : — Conversion d'un nombre entier puis envoi sur le périphérique courant. — Equivalent Basic : PRINT 1%. — Paramétres : |: type int, représente lo valeur & convertir et a envoyer. L: type int, représente le nombre de carac- teres 4 justifier a droite. F : type int, drapeau pour le format (0 non- signé, | signé), * Inputint : — Entrée d'un nombre entier au clovier puis conversion, — Equivalent Basic : INPUT 1%, — Valeur de retour : |: type int, valeur du nombre entré. ° pPrintLong: — Conversion d'un nombre entier long puis envoi sur le périphérique courant. — Equivalent Basic ; aucun. — Paramétres : |: type long, représente la valeur 4 conver- tir et @ envoyer. L: type int, représente le nombre de carac- téres a justifier & droite. F : type int, drapeau pour le format (0 non- signé, | signé). ‘ ° Inputiong — Entrée d'un nombre entier long au clovier puis conversion. — Equivalent Basic : aucun. — Valeur de retour : |: type long, valeur du nombre entré. ° printrit : — Conversion puis affichage d'un nombre flot- tant sur le périphérique courant. — Equivalent Basic : PRINT D. — Paramétres : X : type extended, représente la valeur a convertir et 4 envoyer. L: type int, représente le nombre de carac- téres 4 justifier a droite. |: type extended, représente la valeur minimale pour le passage en nototion scientifique. S: type extended, représente Ia valeur maximale pour le passage en notation scientifique. P : type int, représente le nombre de chif- fres aprés la virgule. ° Inputrit : — Entrée d'un nombre flottant au clavier puis conversion, — Equivalent Basic : INPUT D. — Valeur de retour : X :type extended, valeur du nombre entré. Mote = L'utilisation d'APW 1.0 et d'APWC 1.0 sont obligatoires (disponibles auprés de D.D.A.). Aprés avoir tapé les 3 fichiers (IOFUNC.C, IOFUNC.H et TESTIO.C), compiler IOFUNC.C et TESTIO.C : COMPILE -E -W IOFUNC.C KEEP =$ CC=(-P) COMPILE -E -W TESTIO.C KEEP=$ CC=(-P) linker TESTIO.ROOT : LINK 2/START TESTIO 1OFUNC KEEP =TESTIO Pour lancer le programme TESTIO, taper : TESTIO Copier ensuite le fichier IOFUNC.H dans le dossier 2/CINCLUDE et IOFUNC.ROOT dans 2/ : COPY IOFUNC.H 2/CINCLUDE COPY IOFUNC.ROOT 2/ Pour utiliser les fonctions de IOFUNC quel que soit votre programme, il suffit d’inclure dans le fichier & compiler : £include <IOFUNC.H> et lors de I'édition de liens, de joindre a Ia liste des fichiers IOFUNC.ROOT LINK 2/START THEFILE 2/IOFUNC KEEP =THEFILE * CLEFS POUR APPLE IIGS 2° édition (P.S.1. por Nicole Bréaud-Pouliquen). * APPLE IIGS TECHNICAL REFERENCE (Mc Graw Hill). * Text Tools 0.17 (D.D.A.). * Integer Math Tools 00:30 (D.D.A.). * SANE Tool set ERS 0.80 (D.D.A.). Ls / PACES? | — 1 2 3 4 5 6 7 8 9 55 / pacezs / / vevappiesorr auc / /* Nom du fichier: IOFUNC.C Description: Fonctions d'entrées/sorties et de conversions. (c) 1988 CHARLY et F. SIGAL, et TREMPLIN MICRO. Version IIGS, pour Compilateur C APWC 1.0 in| /* Inclut les définitions, structures et fonctions utilisées dans les fonctions. oF ¥include <types.h> #include <texttool.h> #include <intmath.h> #include <sane.h> /* Définitions internes. wh #define _carriageReturn Qx0D #define printerSlot 1L #define _screenSlot 3L #define _andMask 0x7F #define _orMask 0 /* Variables globales: - drapeau si sélection imprimante. - buffer servant aux entrées/sorties. - séquence du retour chariot pour l'écran. ia int _printerFlag; char _iobuffer[81]; char _crSeq[]=¢_carriageReturn, Ox0A, 0@; /* Structures utilisées pour la conversion des nombres flottants. */ decimal _decStrConv; decform _decFrmConv; (* Initialisation des entrées/sorties. Devices Pascal pour l‘écran et sélection de l'écran, mise en place des masques de filtrages. */ initiIo() Les numéros de lignes ne doivent pas { étre tapés. lls ne sant indiqués que pour information. Set InGlobals (_andMask,_orMask) 7 SetOutGlobals (_andMask,_orMask) ; / vevapriesorrag( [Ss SetErrGlobals(_andMask, orMask) ; Set InputDevice (pascalType, _ScreenSlot); SetOutputDevice (pascalType,_screenSlot); SetErrorDevice (pascalType,_screenSlot); | InitTextDev (input) ; InitTextDev (output) ; InitTextDev(errorOutput) ; _printerFlag=FALSE; ) /* Sélection de 1'imprimante, Devices Basic pour 1'imprimante. ay selectPrinter() { if(!_printerFlag) /* Teste si imprimante non sélectionnée, ap { /* sinon on passe. */ SetOutputDevice (basicType, printerSlot); InitTextDev (output) ; _printerFlag=TRUE; ! } /* Sélection de l'écran. Devices Pascal pour l'écran. af selectScreen() { if(_printerFlag) /* Teste si imprimante sélectionnée, bd { /* sinon on passe. ay SetOutputDevice (pascalType, screenSlot); InitTextDev (output) ; _printerFlag=FALSE; } } [* Effacement de 1'écran. Envoi du caractére de controle. ay clearScreen() { if(!_printerFlag) WriteChar(0x0C); /* Teste si imprimante non ay } /* sélectionnée, pour écran seulement. */ / Pace2s / 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 13i 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 ase 154 155 156 157 158 159 160 161 162 163 164 165 / Paceso / / vewappiesorr auc / 7* Positionnement du curseur sur 1'écran. Voir code gotoxy de la carte 80 colonnes. i gotoxy(_x,_y) char x, _¥i { if (!_printerFlag) /* Teste si imprimante non x} { /* sélectionnée, pour écran seulement. *] ae /* Position XK + 32. af _yt=32; /* Position Y + 32. la *_iobuffer=0x1E; /* Code de gotoxy. */ * (_iobuffer+1)=_x; /* Stocke position X. mf *(_iobuffer+2) =_y; /* Stocke position Y. ti. *(_iobuffert3)=0; /* Fin de chaine C, Stocke 0. wid WriteCString(_iobuffer); /* Envoi de la séquence de commande. */ } ) /* Envoi un retour chariot sur le périphérique courant. Teste le périphérique pour connaitre le(s) code(s) a envoyer. af newLine () { if (_printerFlag) WriteChar(_carriageReturn); /* Teste si *f /* imprimante sélectionnée, envoi du code retour chariot. */ else WriteCString(_crSeq); /* Sinon, envoi d'une séquence + /* pour 1'écran. *7f } /* Envoi d'une chaine de caractéres sur le périphérique courant. wf printWord(_string) char *_string; { WriteCString(_string); /* Utilisation interne de cette fonction. *} int inputLine(_length) int _length; { char _code; int _count; _count=0; do /* Lecture d'un caractére au clavier sans l'afficher. =f, _code=ReadChar (noEcho) ; if ((_code>0x1F) && (_code<0x7F) ) /* Teste si touche majuscule, */ 166 167 /* Affichage et stockage du caractére.*/ 168 WriteChar (_code); 169 * (_iobuffer+_count++) =_code; 170 } 171 /* Teste si touche BackSpace ou Delete. */ 172 else if ({_code==0x08||_code==0x7F) && (_count>0)) 173 { 174 /* Bfface le dernier caractére entré, */ 175 WriteChar (0x08); 176 --_count; 177 ) 178 ) 179 f* 180 Continue tant que le nombre maximal de caractéres n'est pas atteint 181 ou que le code n'est pas celui de la touche Return. 182 ¥y 183 while ((_count<_length) &&(_code!=_carriageReturn)); /* Teste si */ 184 /* touche Return pour annulation des caractéres aprés le curseur. */ 185 if (_code==_carriageReturn) WriteChar(0x1D); 186 *(_iobuffer+_count)=0; /* Fin de chaine C, stocke 0. */ 187 /* Retourne le nombre de caractéres recus. wh 188 return (_count); 189 } 190 491: 192 /* Entrée d'une chaine de caractéres. if i 193 194 int inputString(_string, length) 195 char *_string; 196 int _length; Ag? 1 198 int _i, _count; 199 200 if (!_printerFlag) /* Teste si imprimante non sélectionnée, */ 201 { /* pour écran seulement. yf 202 a2 203 Appel de la fonction inputLine et récupération du nombre de 204 Caractéres recus. 205 ef 206 _count=inputLine(_length); 207 /* Recopie de la chaine de iobuffer dans _string. sy 208 for(_i=0;_i<_count;_i++) 209 *(_string+_i)=*(_iobuffert_i); 210 /* Fin de chaine C, stocke 0. ba J 211 *(_string+_ count) =0; 212 /* Retourne le nombre de caractéres recus. be 213 return {_count); 214 } 215, } 216 217 218 /* Envoi d'une chaine de caractéres suivit d'un retour chariot. od 219 220 printLine(_string) / DEVAPPLESOFT AUC / Z* minuscule ou chiffre. lf { / Pace 31 / ———— / vewappiesorrauc / char *_string; 222 { 223 WriteCString(_string); 224 newLine(); 225 } 226 227 228 /*Conversion et envoi d'un nombre entier sur le périphérique courant*/ 229 230 printInt (_value,_just,_flag) 231 int _value, _just, _flag; 232 { 233 int _length; 234 235 /* Appel de la fonction Int2Dec pour effectuer la conversion. *f 236 Int2Dec (_value,_iobuffer,_just,_f1ag) ; 237 *(_ijobuffer+_just)=0; /* Fin de chaine C, stocke 0. ap 238 WriteCString(_iobuffer) ; /* Envoi de la chaine de caractéres. ef 25911 240 241 242 /* Entrée d'un nombre entier au clavier. wf 243 244 int inputInt () 245 { 246 int _length; 247 248 249 if (!_printerFlag) /* Test si imprimante non sélectionnée, */ 250 { /* pour écran seulement. a] 251. _length=inputLine (20); /*Lecture d'une chaine de 20 caractéres *} 252 f* 253 Retourne le nombre entier, 254 aprés conversion grace A un appel Dec2Int. 255 af 256 return (Dec2ZInt (_iobuffer, length, 1))3 257 } 258 } 259 260 261 /* Conversion puis envoi d'un nombre entier long 262 sur le périphérique courant. */ 263 printLong (_value,_just,_flag) 264 long _value; 265 int _just, _flag; 266 { 267 int _length; 268 269 /* Appel de la fonction Long2Dec pour effectuer la conversion. */ 270 Long2Dec (_value,_iobuffer,_just,_flag) 3 271 * (_iobuffert_just)=0; /* Fin de chaine C, stocke 0. */ 272 WriteCString(_iobuffer); /* Envoi de la chaine de caractéres. *} 274 } 274 278 / paces2 / / pewappiesorr auc / 276 /* Entrée d'un nombre entier long au clavier. 277 278 long inputLong() 279 { 280 int _length; 281 282 if{!_printerFlag) /* Teste si imprimante non sélectionnée, 283 { /* pour écran seulement. af 284 _iength=inputLine (20); /* Lecture d'une chaine de 20 caractéres.*/ 285 i* 286 Retourne le nombre entier long, 287 aprés conversion grace 4 un appel Dec2Long. 288 */ 289 return (Dec2Long(_iobuffer, length,1)); 290 , 291 } 292 253 294 /* Conversion puis envoi d'un nombre flottant aj 295 sur le périphérique courant. af 296 printFlt (_value,_length, vmin, vmax,_virg) 297 extended _value; 298 int _length; 299 extended _vmin, _vmax; 300 int _virg; 301 { 302 extended _valabs; 303 int _index, _jmove; 304 char *_ string; 305 306 i 307 Si le nombre est égal 4 0.0, 308 on stocke "0.0" dans la chaine de caractéres. 309 a/ 310 if (_value==0.0) 311 { 312 * iobuffer='0'; 313 *(_iobuffert+l)='.'; 314 *(_iobuffer+2)='0'; 315 *(_iobuffer+3) =0; 316 } 317 else 318 { 319 _valabs=fabs(_value); /* Valeur absolue. ‘ad 320 321 /* Teste les limites pour le passage en mode scientifique. */ 322 if ((_valabs>=_vmax) | | (_valabs<_vmin)) 323 { 324 /* En dehors, notation décimale. *f 325 _decFrmConv.style=FLOATDECIMAL; 326 _decFrmConv.digits=_virg+t1l; 327 } 328 else 329 { 330 /* Entre les deux limites, notation scientifique. bed / Pacess / 364 € 365 366 367 368 369 370 371 372 373 374 g76 376 377 378 379 380 381 382 383 384 385 } / cewappiesorrauc / _decFrmConv. style=FIXEDDECIMAL; 332 _decFrmConv .digits=_virg: 333 } 334 335 /* Appel aux fonctions num2dec et dec2str pour les conversions. */ 336 num2dec (&_decFrmConv, value, &_decStrConv) ; 337 dec2str(&_decFrmConv, &_decStrConv,_iobuffer); 338 } 339 340 /* Donne la longueur de la chaine dans _iobuffer. sa 341 _length=strlen(_iobuffer); 342 7* Calcule la valeur de déplacement pour la justification. wy. 343 _jmove=_length-_index; 344 /* Si valeur de déplacement supérieure 4 0 justification du nombre *) 345 if (_jmove>0) 346 { 347 /* Décalage. £}/ 348 for (;_index>=0; --_index) 349 *({_iobuffer+_index+_jmove)=* (_iobuffert+t_index); 350 /* Remplacement de la zone de justification par des espaces. a | 351 for (_index=_jmove-1;_index>=0;--_index) 352 * (_iobuffert+_index)=' '; 353 /* Fin de chaine C, stocke 0. id 3 354 *(_iobuffert_length)=0; 355 } 356 /* envoi de la chaine de caractéres. */ 357 WriteCString(_iobuffer); 358 } 359 360 361 /* Entrée d'un nombre flottant au clavier. mf 362 363 extended inputFlt () short _ix, _vp7 if (!_printerFlag) /* Teste si imprimante non sélectionnée, a} { /* pour écran seulement . */ /* Flag de position dans la chaine *f _ix=0; /* Lecture d'une chaine de 30 caractéres.*/ inputLine (30); 1 / pacess / /* $i chaine vide, mise en forme de la chaine. */ if (*_iobuffer==0) { *_iobuffer=1; *(_iobuffer+1)='0'; ) /* Appel a str2dec pour la conversion. */ str2dec (_iobuffer, &_ix, & _decStrConv,6_vp); /* Teste le drapeau d'erreur et traitement. */ if(_vp) return (dec2num(&_decStrConv))7 else return(0.0); / DEWAPPLESOFT AUC / [* Description: fichier Header des fonctions de IOFUNC.C (c) 1988 CHARLY et F. SIGAL, et TREMPLIN MICRO. 1 2 3 4 Nom du fichier: IOFUNC.H 5 6 7 Version IIGS, pour Compilateur C APWC 1.0 8 Bf 10 se 12 extern int inputString(); 13 extern int input Int (); 14 extern long inputLong(); 15 extern extended inputFlt (); pe 1 2 3 4 Nom du fichier: TESTIO.C a Description: Programme test des fonctions de IOFUNC.C 6 (c) 1988 C, Mafaure, S.N. Cehef et TREMPLIN-MICRO 7 Version IIGS, pour Compilateur C APWC 1.0 8 & +7 12 #include “iofunc,h" 15 int n; 16 long 1; 17 extended d=0; 18 char c[31]; 19 char rp[2]; 20 21 22 main() 23 { 24 initIo(); 25 clearScreen(); 26 27 printWord("Entrez un nombre entier : "); 28 n=inputInt (); 29° newLine(); 30 printWord(" 'n' est égal a : ar printInt (n, 5,1); 32 newLine(); 33 newLine (); 34 a8 printWord("Entrez un nombre entier long : "); 36 l=inputLong(); / Pacess / / DEVAPPLESOFT aU Cc / 3% newLine(); 38 printWord(" '1' est égal a: "); 39 printLong(1,12,1); 40 newLine(); 41 newLine(); 43 printWord ("Entrez un nombre décimal : "); 44 d=inputFlt (); 45 newLine(); 46 printWord(" 'd' est égal a; "); 47 printFlt (d,12,le-5,1le+5,5); 4g newLine(); 49 newLine (); $1 printWord("Entrez une chaine de caratéres : "); 52 inputStringic, 30); 53 newLine(); 54 printWord(" ‘'c' est égal a : 55 printLine(c); 56 newLine (); 58 printWord("Disposez-vous d'une imprimante en slot 1, préte a l'utilisation 2"); 89 inputString(rp,1); 60 if(rp[0]=='0'| |rp[0J=="0") 61 { 62 selectPrinter(); 63 printWord(" 'n' est égal a : "); 64 printInt (n,S,1); 65 newLine (); 66 printWord(" 'l' est égal a: "); 67 printLong(1,12,1); 68 newLine (); 69 printWord(" 'd' est égal a: "); 70 printFlt (d,12,1le-5,1le+5,5); Ti newLine(); 72 printWord(" 'c' est égal 4 : "); 73 printLine(c); 74 newLine (); 75 selectScreen(); 76 ls id; else clearScreen(); 79 gotoxy (25,10); 80 printLine(" Test terminé, a bientot..."); / Pace3s6 / / Yvan KOENIG —APPLEsSOFY / — FACTARIF Vous le savez peut-étre déja, je suis céra- miste depuis 1971, Aprés avoir di refaire des factures et des lettres 4 cause de fautes de frappe disgracieuses, j'ai décidé que la micro informatique était un outil 4 essayer. Naif, je croyais que cet instrument du pro- grés allait me décharger de taches ennuyeu- ses, me permettre de disposer de plus de temps libre et d’avoir un bureau bien rangé. Si établir une facture n'est plus en effet une corvée, puisqu’il est facile de la refaire en cas d’erreur, c6té courrier, j'ai plutét davan- tage de travail car le fait de disposer d'un traitement de texte incite 4 prendre la plume plus souvent que par le passé. Pour ce qui est du temps libre et du bureau dégagé, c'est complétement raté ! Entre les piles de revues, de livres, de disquettes de tous calibres, on trouve des cables, des interfaces et, parfois... des factures de four- nisseurs ou de clients! A ce jour, rien ne semble s’étre perdu, mais ¢a reléve du mira- cle. D’autant que, depuis prés de deux ans, je réponds 4 vos questions quelquefois farfe- lues, parfois trés emborrassantes. Aprés s'étre drogué au langage machine pendant de longs mois, Guy-Hachette réclame du Basic. Comme, par ailleurs, on me demandait un programme de factura- tion, j'ai décidé de vous communiquer mon auxiliaire fidéle ; FACTARIF. En fait, je ne vous en donne qu'une partie car la pagination de Tremplin Micro n'est pas extensible. Pour utiliser le programme publié, il faudra que vous prépariez vos fichiers CLIENTS et TARIF 4 l'aide d'un traite- ment de texte comme APPLEWRITER ou par lintermédiaire d'un petit programme BASIC créant les deux fichiers séquentiels confor- mément aux structures suivantes : Stocker le nombre de fiches clients, puis les fiches proprement dites qui sont composées de 5 rubriques, séparées par des virgules. Des RETURN feraient I'affaire, mais lors d'un listage du fichier 4 l'aide de TYPE les virgules permettent de n’utiliser qu'une ligne par fiche (au lieu de 5 avec des RETURN). Les rubriques sont : Patronyme, Rue, Com- plément d'adresse, Code Postal + Ville, Taux de remise éventuellement consenti (ce dernier détail est un ajout spécial Tremplin Micro répondant au souhait d'un correspon- dant ; moi, je ne fais pas de remise). Un en-téte regroupe : la moitié du nombre darticles répertoriés (arrondi a I'unité supé- rieure) pour l'affichage sur deux colonnes du tarif. C'est un reliquat de la toute premiére version et je n'ai jamais pris le temps de remplacer par le nombre d’articles. Ensuite vient le taux de TVA (ben oui, je n’en traite qu'un !). A mes débuts, j’accomplissais par- fois des taches que I'ordinateur aurait fort bien pu faire. C'est pour cela que la troi- siéme information stockée est la chaine ‘TVA xx.xx%'. Les courageux pourront effacer ces rides. Enfin, une chaine de 8 caractéres informe de la date de mise en vigueur du tarif (c'est bien utile pour moucher un grin- cheux qui clame devant quinze personnes que vos tarifs ont encore été augmentés pour l'arrivée des touristes...). Viennent ensuite les fiches articles conte- nant ici encore 5 rubriques séparées par des virgules. II s'agit : 1. De la désignation de l'article ; 2. De son prix H.T. en centimes ; 3. Du prix T.T.C., en francs (c'est hétéro- géne, mais ¢a permet de gagner quel- ques octets) ; 4. La hauteur en cm; 5. Le diamétre en cm. (suite page 38) / Paces? / — — /racrae ff <a — — — — um i —— Maintenant que vous avez les fichiers de don- nées, vous pouvez employer FACTARIF, com- posé en fait d'un programme BASIC auquel est accrochée une routine en langage machine permettant d'accéder aisément 4 un article sans devoir mémoriser son numéro d'identifi- cation. On utilise également la commande externe ProDOS 'FLOAD’, publiée dans Trem- plin Micro n°20. Deux fonctions principales sont offertes d'entrée : * Etablissement d'une FACTURE ; * Impression d'un TARIF. U'option TARIF n‘appelle pas de commentaire particulier, mais FACTURE est plus complexe. Dans un premier temps, vous devrez saisir les quantités d'articles vendus, chacun étant accessible par son numéro d’ordre, formule simple, mais peu agréable. II est heureuse- ment possible de donner tout ou partie de la désignation de l'article en question. La routine en langage machine, précédemment citée, vous proposera successivement tous les arti- cles contenant cette sous-chaine. Il vous res- tera @ valider en tapant O. Si vous dépassez d'un rang l'article choisi, inutile de refaire un balayage complet, tapez fléche montante (ou fléche @ gauche) qui permettra de récupérer l'avant-derniére proposition. Comme j'aime le confort, DEJ vous donnera accés & Déjeuner carrelé (ou décoré), En cas d’erreur sur une quantité, il est possible de la modifier en en saisissant une complé- mentaire qui peut étre négative. II arrive par- fois que ma femme vienne me signaler qu‘un client ayant demandé une facture a modifié sa sélection d'articles pendant que je commencais 4 saisir ce qu'il avait choisi. On peut aussi sai- sir jusqu’d cing articles hors catalogue (c'est indispensable quand, comme moi, on vend fré- quemment des piéces uniques). Une fois toutes les ventes enregistrées, tapez RETURN pour passer aux opérations complé- mentaires : saisie des éventuels frais de port, avoir, acompte... Il ne restera plus alors qu’é enregistrer |'iden- tité du client, soit par sélection dans la liste en mémoire, pour un client connu, soit par saisie au vol pour un client occasionnel. Toutes les opérations d'impression sont codées pour IMAGEWRITER2. II est facile de passer en version compatible DMP ou IMW1 puisque la seule commande spécifique IMW2 est |'envoi de la séquence ESC "M" qui force le mode Quasi-Courrier. U'utilisation de la commande externe FLOAD (T.M. 26) permet de réaliser un en-téte a l'aide de caractéres personnalisés. Dans la version publiée, trois fontes sont utilisées : * COUNT qui figurait déja sur la disquette TM. 26 ; * CARAC.DOUBLE * CARAC.INC Vous avez bien entendu toute liberté pour adapter l'en-téte & vos propres besoins. Je signale 4 ceux qui ne l’auraient pas remarqué que les fontes COUNT, EPSDROITE et ITALEPS de 7.M. 20 contiennent le nouveau caractére Franc en remplacement du £. sur la disquette T.M. 7 Pour tout simplifier, le programme est chargé en deux temps. Le STARTUP utilise PRO.FP pour remettre le systéme en configuration normale, puis installe FLOAD et copie les fontes dans le disque virtuel de la carte 80 colonnes étendue (on pourrait se servir de /RAMS sur GS ou /RAM4 sur lic étendu). Enfin, il lance l’exécution de FACTARIF lui-méme. Si vous ne disposez pas de disque virtuel, il est possible de s‘en passer en chargeant les fontes depuis le disque magné- tique ; c'est simplement plus lent. En examinant le listage du programme, vous remarquerez sans doute qu’aucune instruction ne charge la routine CONT2 précédemment citée. C'est normal, elle est accrochée 4 la fin du programme BASIC et initialisée par la ligne 8. Si l'association BASIC — Langage Machine ne vous est pas familiére, je vous explique rapide- ment la morche 4 suivre : 1. Saisir, puis sauver SANS l'exécuter, le pro- gramme BASIC sous le titre BAS.SEUL. Attention, le programme comporte de nom- breuses lignes trés longues. Elles peuvent toutes tre saisies en utilisant le symbole ? en remplacement des multiples PRINT et en s'abstenant de taper les espaces ajoutés par {a fonction LIST de l'APPLESOFT lors des listages. Un éditeur de BASIC se révéle une fois encore un accessoire utile. ProCMD, — | ED ee ns / YE KOENIG—APPLEsOFY / — 2. 3. toujours lui, contient, entre autres gate- ries, un éditeur de lignes et un RENUM- BER, performants et fiables. Saisir et sauver la routine CONT2 (avec MERLIN ou tout autre assembleur si vous tes outillé). Pour faire du travail ‘propre’, mettre 4 @ une zone importante de la mémoire, (disons de $2000 4 $3000) a I‘aide de la commande moniteur : 2000:00 N 2001 < 2000.2FFFM (pour les GSmen 66 < 2000.30002) Charger BAS.SEUL, passer en moniteur et faire AF.BG (RETURN) ; l'adresse de fin du Basic s'affiche alors (octet bas d’abord). Ce devrait étre $28BD si aucune modifica- tion n’a été apportée au programme, mais comme je ne saurais vous reprocher de ne pas avoir tapé les REMarques, je préfére représenter symboliquement cette adresse par $wxyz. Retour au mode Basic. BLOAD CONT2,A$wxyz. Retour en Les deux derniéres instructions listées seront alors JMP $DA63, JMP $DEC9. Si c'est bien le cas, faire encore un L (RETURN). La premiére ligne de I'écran portera stuv- 06 Gd. il faudra alors faire AF: uv st (RETURN) et ENFIN retourner en BASIC et faire SAVE FACTARIF. Ouf ! C'est plus difficile & décrire qu’d exé- cuter et, si vous le demandez fermement mais poliment, je vous offrirai peut-étre un jour une commande ProDOS qui réalise ce type d’accouplement automatiquement. Je profite de l'occasion pour signaler que, depuis des mois, RELOPRO.S contient une erreur que je viens de repérer. Dans la rou- tine PROTECT, la ligne 313 a été amputée (ca va vite avec un éditeur plein écran) et doit se lire: 313. ADC R_OFFSET+1 L'absence du (+1) final est responsable de l'apparition désagréable d'un 'NO BUFFERS moniteur et faire wxyz LLLLLLLLLL AVAILABLE’ du meilleur effet. (RETURN) (List 10 fois). Yvon KOENIG — 16 mai 1988. FACTARIF pane 1 REM nee CTARIF * 10 0& = CHRE (4) 9 Tnste oneenenetene B3A4 20 PRINT D$"-PRO.FP" REM RREEE 9248 30 PRINT 0%*-FLOAD" 8DF9 40 PRINT D$"BLOAD COUNT ,A$4000": PRINT D$"BSAVE /RAM/COUNT ,A$4000,L955" 142E 50 PRINT D$"BLOAD CARAC.INC,A$4000": PRINT D%"BSAVE /RAM/CARAC, INC ,AS40 00,L955" 96E0 60 PRINT DS*BLOAD CARAC.DOUBLE ,A$4000": PRINT D$"BSAVE /RAM/CARAC.DOUBL £,A$4000,L919" penne aga2 70 PRINT D$"-FACTARIF* 4 REM **%r cTaRIF * 2BD3 2 REM * PEt LL hele 3 REM Pret 6 TEXT + PRINT CHRS (21):D$ = CHRS (4):G$ = CHR (7):R$ = CHRS (13 DKA = - 16368 OE4! 8 CALL PEEK (175) + 256 * PEEK (176) - 416 ESCO 10 HOME :A2% = 48:CE = 100:2E = .01:SE% = " "EX = 27:&% = CHRS (E%):WOS = CHRS (EX) + “O"TFIS = "TARIF":A9% = 5S7:AP% = 46:AU% = 44 : DEF FN ACR) = INT (R + .5) / CE BA7E 11 SLOT = 1: REM “Port Imprimante 1243 12 PRINT D$"OPEN"FI$: PRINT D$"READ"FI$: INPUT 21,A8,N$,DV$:AB = CE * A A / (AA + CE); PRINT D$:2 = 2 * 21:25 = 2 + 5: PRINT "TARIF “en vigu eur au "DV$: PRINT : HTAB 7: PRINT 2" articles répertoriés": DIM P(Z 5,1) ,NO$(25) ,T(25,1) ,Q%(25) 9158 / Pacess / / eactarie / 13 NO$(0) = LEFT# (N$,6) + "," + MIDS (N$,8): PRINT D$"READ"FI$: FO RN = 1 TO 2: INPUT NOS(N) ,TO,P(N,1),T(N,O),T(N,1)3P(N,0) = TO 7 C E: NEXT : PRINT D$:TO = O:CL$ = "CLIENTS": PRINT D$"OPEN"CL#: PRIN T D$"READ*CL$: INPUT CN: PRINT DS 17 JJ% = CN / 10: DIM RX%CCN) ,ADS$(CN,3): PRINT D$"READ"CL$: FOR I = 1 TO CN: INPUT AD$<1,0) ,AD$(1,1) ,AD$<1,2) ,ADS(1,3),R4¢1): NEXT : PRI NT D$"CLOSE* 20 VTAB S: CALL - 958: GOSUB 770: IF NOT Si THEN HOME : END 30 IF Si = 1 THEN GOSUB 130:DF% = RE$:MF% = Mx: GOSUB 440 40 HOME : GOSUB 830: ON PR$ = “N* GOTO 20: GOSUB 1200: GOSUB 3000: ON $1 GOSUB 350,700: GOSUB 3230: HOME : VTAB 22: FLASH : PRINT "ENCOR E UNE ": GOSUB 830: HOME : ON PR$ = “O" GOTO 40: GOSUB 900: FOR I = 1 TO 25:Q4¢1) = 0: NEXT 59 REM ctUctUFORMATTAGESc tJ 60 PRINT RIGHT@ (" “"" + STR (W),3); GOTO 20 RETURN 70 IF ABS (W) < ZE THEN W = O:W$ = “ ~~~000": GOTO 80 72 WS = RIGHTS (" ~~~" " + 80 IF $2 AND RIGHTS (W$,2) = ETURN 90 WS = LEFTS (Ws,5) + ",* + 100 IF NOT W THEN WS = “.. 110 IF W= INT (W) THEN Ws = RN STR$ ¢ INT (.1 # CE # W)),7) "00" THEN WS = LEFT$ (W$,5) + " """: R RIGHTS (W$,2); RETURN RETURN RIGHTS ¢" " + STR® (W),2) + " ““: RETU 120 WS = RIGHTS (" “"" + STR® (Wo * 10),3):WS = LEFTS (W$,2) + "," + MIDS (W$,3): RETURN 129 REM "“ctJctuMASQUE DE SAISIEctJ 130 HA 135 PX 0 72V% = 4:TA = 2:L% = 8: VTIAB VA: PRINT "Date ~:dJd MM AN" 140 CHS = ":":RES = ““: VTAB VA: HTAB HA: PRINT “:"; 150 POKE K%,0: GET X$:X% = ASC (X$): IF XA = 13 THEN CALL ~ 868: PR INT X$: ON CHS = ":" GOTO 210: GOTO 200 155 IF X% = E% AND CHS = ":" THEN PRINT : RETURN 160 ON X% < > 8 GOTO 180: ON CHS <¢ > ":" GOTO 170: ON TX <¢ 6 GOTO 15 QO: POP : GOTO 570 165 IF RIGHTS (CH$,1) = "." THEN Px = 0 170 CHS = LEFT$ (CHS, LEN (CHS) - 1): PRINT X$"."X$;: GOTO 150 180 ON T% GOSUB 230,260,220,1000,225,220: ON Q% GOTO 150;CHS = CHS + X $: PRINT X$;: ON LEN (CHS) ¢ L% + 1 GOTO 150; PRINT R& 200 RES = MIDS (CH$,2) 210 RETURN 219 REM "ctJctUNB ARTICLESctJ 220 Q% = X% < => 45 AND (X% ¢ AZ% OR X% > AYZ~I: RETURN 224 REM ctJ 225 @% = X% ¢ > 63 AND X% < 229 REM ctUctJSOMMEctJ > 44 AND (X% < AZ% OR X% > AYA): RETURN 230 Q% = 1:PQ% = X% = AP% OR X% = AVA: IF (P% AND PQ%) OR X% > AVK OR PQ% < 1 AND X% < A2% THEN RETURN 240 IF PG% THEN X$ = ".":P% = 250 G% = 0: RETURN 259 REM ctUctJDATEctJ 260 G% = 1: IF X% ¢ AZ% OR XX 270 IF LEN <CH$) = 2 THEN J% R J% > 31 THEN RETURN 280 IF LEN (CHS) = 5 THEN M% RM% > 12 THEN RETURN / paceso / 1 A% THEN RETURN VAL ¢ MIDS (CHS + X$,2)): IF (10 VAL ( MID@ (CHS + X$,5)): IF MZ ¢ 10 8CBS 780E 490A AP63 4F SF SF71 1EDA ESFO 4FOL SESE CAAd S2E5 FFE E0B? C775 Fla? C398 CE97 C656 436 £984 2A1B 0403 63B! 109C COEE c100 69A5 9761 8E9A £694 84A2 IF LEN (CHS) 8 THEN A% = VAL ( MIDS (CHS + X$,8)):A% = 1900 + / Yvan xoewic — APPLEsoFr / Ax + CE * (AX <{ 50): GOSUB 330: IF J% > FX THEN POP : GOTO 140 4SB8 300 IF LEN (CH$) = 5 OR LEN (CHS) = 2 THEN X$ = XS + “ * 8A00 310 Q% = 0: RETURN 9761 319 REM “ctJctUDERNIER JOUR DU MOISctJ 320 M4 = MF% + (CR = 5) * (1 - (MFM = 12) * £2) 5028 330 FA = 31 - (MZ = 4 OR MK = 6 OR MX = 9 OR M% = 11): IF M% = 2 THEN FA = 28:T1 = AA / 4:T1 = T1 - INT (T1):T2 = AX / CE:T2 = 72 - IN T (12):T3 = AX / 400:T3 = T3 - INT (73): IF T1 + T2 + T3 = 0 ORT 1 = 0 AND T2 THEN F% = 29 Bé3B 340 RETURN $3B1 349 REM "ctJctJIMPRESSION FACTUREctJ 350 LT = 5: FORN = 1 TO 25:LT = LT + NOT NOT QX%<N): NEXT :LT = LT + 3 * NOT NOT R # 2 * NOT NOT (E AND AV) + NOT NOT E+ NOT N OT AV + 2 * NOT S2 + NOT NOT AK + 2 * AS 9A70 351 MG = 11 7AaCé 354 PRINT TAB( 91)"VALLAURIS le “DF$;: IF LT < 49 THEN PRINT WO$; BADE 356 PRINT : PRINT : PRINT : PRINT SPC MG)CL$: FOR I = 1 TO 5: PRINT : NEXT ;T0 = O: PRINT SPC¢ MG)"Code ““Quantité ~“Désignation" SPC ¢ 36)"Prix"BS SPC¢ 13)"Prix Total": PRINT 0782 357 FOR N= 1 TO 25; ON NOT Q%<N) GOTO 370 062E 360 PRINT SPC( MG): IF N > 2 THEN PRINT SPC(¢ 3): GOTO 365 8268 362 W = N: GOSUB 60 1ccs 365 PRINT SPC( 6):W = Q%(N): GOSUB 60: PRINT SPC 6)NO$(N) SPCC 48 - LEN (NO$(N))):W = P(N,S2): GOSUB 70: PRINT WS SPC< 14):W = QK<N) * P(N,S2): GOSUB 70: PRINT W$:T0 = TO + W B4B0 370 NEXT : IF R THEN PRINT SPC( 88 + MG)SE$:W = TO: GOSUB 70: PRINT SPC( 43 + MG)AVS SPC¢ 42)W$:W = FN AC(TO * R): GOSUB 70: PRINT SP C( 48 + MG)"Remise "R® %" SPCC 31 - LEN ¢ STR (R)))WS;TO = TO - W ESE€1 380 ON NOT E AND NOT AV GOTO 410: PRINT SPC( 88 + MG)SE$:W = TO: GO SUB 70: PRINT SPC( 43 + MG)"Marchandises "AVS SPC( 29)W$: IF E TH —N W = E: GOSUB 70: PRINT SPC< 43 + MG)"Port "AVS SPC( 37)W$;T0 = Ta FE BA7I 400 IF AV THEN W = AV: GOSUB 72: PRINT SPC‘ 43 + MG)"Avoir "AVS" du * DAS SPC(

Showing the first 100000 of 156490 characters.

mp.ls