Skip to main content

tremplin micro newsletter issue 15

  • PublicationApple Periodicals
  • Pages78
  • Sourcetremplin_micro_newsletter_issue_15.pdf
← Magazines tremplin micro newsletter issue 15
/ 78
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
Se ES) Un logiciel complet de dessin sur Apple ‘Le prix du coup de fil 3791631033006 00150 Applet et PraD05 sont des marques déposées por Apple Computer lnc. een tremplin | SOMMAIRE Apple et ProDOS (noms et logos) sont des marques dépo- sées d'Apple Computer, Inc. BIMESTRIEL Le numéro : 33 F Abonnement d'un an : 190 F (6 numéros) Tous nos prix sont indiqués TTC, EDITIONS JIBENA Direction-Rédaction : Editions JIBENA Guy-HACHETTE La Petite Motte — Senillé 86100 CHATELLERAULT. Téléphone : 49-93-66-66 PUBLICITE : Raymond JULLIEN (1) 45.75.41.81 Commission paritaire : Les revues qui choisissent d’étre réellement au service du Lecteur, en ne l'obligeant pas & glaner, dans plusieurs magazines, les renseignements concernant sa machine, ne bénéficient pas du numéro de Commission Paritaire, et pas davantage des tarifs pos- taux réduits. TREMPLIN MICRO — Bimestriel — Crest une publication des Editions JIBENA, 4, tue de la Cour-des-Noves, 75020 PARIS — S.A. au capitol de 3600000 F — Imprimé par CITE-PRESS/PARIS — Dépat légal & la date de porution — Ins- cription & la Commission Poritaire des Publications et Agences de Presse : en cours — Directeur de la Publication : Guy-Clément COGNE — Diffusion NPP, Avec la collaboration de : ARGOS, Claude AUBRY, Nicole BREAUD-POULIQUEN, Marc BROCHA, Yves BUONO, Maurice CHAVELLI, Marcel COTTINI, Francois GALLET et Thierry FILLAUT, NESTOR, Pierre PRIVAT et Clément RENARD, GS, MON BEAU SOUCI 2 MINUPHONE (Combien codte une communication ?) .... 3 SPECIAL tr Basic APPLESOFT cs PARLE AUX OUTILS DU GS ........000.s0ccscsecseeesseeseees 7 ¢ TRES SIMPLE Clovde AuBRY poursvit son amusante initiation VW (langage C sure GS) — Et Nestor améliore LE BON NOMBRE ............. 15 CATAVISU (Petit utilitaire ProDOS permettant de visualiser l'occupation de la disquette) .........6.0.c cece cece cece eee e eens 7 POKE, COMMANDE APPLESOFT (Tout ce qu'il faut savoi 21 D'UN BASIC A UN AUTRE (DE L'APPLESOFT AU GWBASIC) . . 28 STARTUP (Intéressant utilitaire ProDOS) 31 SPECIAL cs RAMETGsRAMPLUS (extensions mémoire pour Apple lIGS) .... 39 ¢s HORLOGE GS (Attention ! il faut ProDOS 8 en mémoire !) ......... 40 GUIDES DE FORMATION (Comment découvrir Excel ou PageMaker ?) ............000020005 44 GRAPHISME Logiciel de dessin mis au point par I'un de nos lecteurs, Yves BUONO ARc.tN.ciel mérite de retenir votre attention ........ 45 EDUCATION ET JEUX 53 GRAPH.EXPRESS (Routine en mode TEXT) . 54 LA SOURIS ET L'ASSEMBLEUR ((troisisme portie) ............ 55 LE TRAITEMENT DE TEXTE DU COTE DES COMPATIBLES 60 YVAN KOENIG REPOND A NOS LECTEURS .........00.00000000 0008 63 METTEZ UN GS DANS VOTRE APPLE II vax 169) NESTOR (SAGESSE OBLIGE !) ...... 71 QUESTIONS et MEA CULPA (n°14) 72 QUOI EST OW? cciseaies evacuees 73 QUESTIONS... REPONSES (suite) 74 BULLETIN D‘ABONNEMENT 75 LES LIVRES 27,30,70,76 TREMPLIN MICRO MON BEAU SsSOoOUCI Nos lectrices et lecteurs sont perplexes. Certains (peu, eu égard au nombre considé- rable de machines vendues en France) ont choisi de troquer leur vieil Apple contre un GS flambant neuf. D’autres ont opté pour un MACINTOSH ou pour un compatible IBM. Combien ? je l'ignore. Par contre, je sais que la plupart des lectrices et lecteurs de Tremplin Micro ont préféré conserver leur Apple //+ ou /le, en attendant d‘autres offres, plus alléchantes. On ne saurait leur donner tort. Il est possible, actuellement, sur le marché de l'occasion, de s‘offrir une configuration compléte pour une somme relativement modique. Par ailleurs, grace @ des cartes comme la TRANSWARP d’Applied Engineering, un Apple Ile devient instantanément un Apple Turbo, capable — le son et le graphique en moins, bien sor — de rivaliser avec un GS de la premiére couvée. Les gens qui programment (ils sont nombreux parmi nos correspon- dants) ou désirent s'initier 4 ce jeu captivant qu‘est la “domestication” d'un microprocesseur, prennent autant de plaisir 4 tapoter sur le cla- vier d'un Apple /le ou d'un Apple //c que sur celui d'un GS. Et puis, avouons-le, il est plus agréable de travailler sous ProDOS 8 que sous ProDOS 16 — certes plus performant (on ne saurait raison- nablement le nier), mais terriblement gourmand en temps de chargement. Enfin, une fois de plus, Apple mise surtout sur les nouveaux MAC (oh ! les belles machines !) parce que la firme de Cupertino espére pénétrer en force dans les entreprises. Comme nous aimons bien la pomme, nous lui souhaitons de réussir, mais en regrettant qu'il ne reste plus, pour les vieux de la vieille, que de rares pépins... concé- dés aux prix des pépites. Bonnes vacances et profitez donc d'icelles pour vous adonner & l'étude passionnante de l’assembleur ! Guy-HACHETTE. 2 GUY-HACHETTE Pierre PRIVAT OICI un petit programme qui pourra rendre d’éminents services aux plus bavards utilisa- V teurs du téléphone. Vous en connaissez sérement dans votre entourage ! Gageons que Pierre Privat et son Minuphone vous aideront a réduire trés sensiblement le montant de vos factures téléphoniques. En attendant, suez donc un peu sur la frappe du programme ! Rappelons qu'il ne faut sur- 110 DS = CHRS (4):BIP$ = CHR$ (7): TEXT 840F tout pas taper les valeurs 115 ONERR GOTO 805 é6CED indiquées en couleur : elles 120 PRINT D$;"PR£3": PRINT : HOME A25E permettent aux heureux 125: 003A possesseurs de notre dis- 130 REM ** LECTURE TAXE DE BASE ** quette SIGNATURE (une 135 : 003A idée d’Yvan KOENIG) de 140 PRINT D$;"OPEN TAXE": PRINT D$;"READ TAXE": 1 coniiélen’ ‘éhécune | des NPUT T: PRINT D$;"CLOSE TAXE": PRINT 3117 lignes de leur programme. 1453 003A 150 REM *#* MENU GENERAL #* 155 : 003A 160 HOME : GOSUB 400 3C15 165 VTAB 6: HTAB 28: PRINT “1 --> “Lundi au Vendr edi" E416 170 PRINT : HTAB 28: PRINT "2 --> "Samedi" oso? 175 PRINT : HTAB 28: PRINT "3 --> “Dimanches et F étes” F36B est indispensable. Ce logi- 180 PRINT : HTAB 28: PRINT "4 --> “Changer le pri ciel fait gagner un temps ai des 18s taxe- . . 4500 précieux en évitant a nos 185 PRINT : HTAB 28: PRINT "5S --> “Terminer" BBBF lectrices et lecteurs de fasti- 190 MX = 5: GOSUB 430 6E28 dieuses recherches en cas 195 ON R GOTO 215,280,345,805,785 DB70 d'erreur (et qui n’en com- 200 + 003A met jamais ?). 205 REM ** TARIF SEMAINE ** 210 : 003A 215 HOME : GOSUB 400 3015 220 VTAB 5: HTAB 30: INVERSE : PRINT " LUNDI au V ENDREDI ": NORMAL : PRINT oBcs 225 PRINT "TARIF EN VIGUEUR:" ocas 230 PRINT : HTAB 20: PRINT "1 --> “ROUGE ‘8h00-12 h30 et 13h30-18h00)" 3F81 SIGNATURE 235 PRINT : HTAB 20: PRINT "2 --> “BLANC (12h30-1 * . 3h30 et 18h00-21h30)" BB8E ceeetenie 240 PRINT : HTAB 20: PRINT "3 --> “BLEU <sh00-8hO 0 et 21h30-22h30)" FIFS (suite page 4) 245 PRINT : HTAB 20: PRINT "4 --> “BLEU NUIT (22h Salalah a al aaah aaa hed ah ele ed TREMPLIN MICRO 3 250 255 260 265 270 275 280 285 290 295 300 305 310 315 320 325 330 335 340 345 350 355 360 365 370 375 380 385 390 395 400 405 410 415 420 425 430 435 440 445 450 30-sh00)" MX = 4: GOSUB 430 ON R GOSUB 475,480,485, 490 GOTO 510 REM ** TARIF SAMEDI #** HOME : GOSUB 400 VTAB 5: HTAB 36: INVERSE : PRINT " SAMEDI ": NORMAL : PRINT PRINT "TARIF EN VIGUEUR:" PRINT : HTAB 20: PRINT "1 --> “ROUGE (8h00-12 h30>" PRINT : HTAB 20: PRINT "2 --> “BLANC (12h30-1 3h30)" PRINT : HTAB 20: PRINT "3 --> 0 et 13h30-22h30)" PRINT : HTAB 20: PRINT "4 --> 30-6h00)" MX = 4: GOSUB 430 ON R GOSUB 475,480,485,490 GOTO 510 REM ** TARIF DIMANCHE ** HOME : GOSUB 400 VTAB 5: HTAB 30: INVERSE : PRINT " DIMANCHES et FETES ": NORMAL : PRINT PRINT "TARIF EN VIGUEUR:" PRINT : PRINT : HTAB 24: PRINT “1 --> “BLEU ¢ 6h00-22h30)" PRINT : PRINT : HTAB 24: PRINT "2 --> “BLEU N UIT (22h30-6h00)" MX = 2: GOSUB 430 ON R GOSUB 485,490 GOTO 510 REM ** AFFICHAGE HAUT ** VTAB 1: PRINT "Taxe: ";7;" F";: HTAB 22: PRIN T "MINUPHONE - Pierre PRIVAT, Mars 1987" FOR 1 = 1 TO 80: PRINT "="3: NEXT I: PRINT RETURN REM ** AFFICHAGE BAS ** VTAB 19: FOR I = 1 TO 80: PRINT “_";: NEXT I VTAB 21: HTAB 26: PRINT "<ESC> pour retour au menu" VTAB 22: HTAB 33: PRINT “Votre choix ? “;: GE T RS IF R$ = CHR$ (27) OR R$ = CHR (3) THEN 160 R= VAL (R$): IF R < 1 OR R > MX THEN PRINT BIP$: GOTO 440 “BLEU (6h00-8h0 “BLEU NUIT (22h 2163 512A SSB4 0341 003A 003A 3C15 F3DE OcAB 1158 3AS9 ACF7 2163 512A S55B4 0341 003A 003A 3C15 £401 OcA8 B4F8 css9 9728 0c20 0341 003A 003A co07 589D 63B1 003A 003A 4911 FA3C 4BC7 1A6E 7E97 = (suite) LIGNE 115 (PAGE 3) Utile lors de la premiére utilisation (ou encore si le fichier a été effacé par erreur). Cet ONERR GOTO envoie directement a la création du fichier TXT: TAXE. LIGNE 140 (PAGE 3) Lit la taxe de base PTT en vigueur dans le fichier TAXE. LIGNE 190 (PAGE 3) MX est une variable qui, en fonction des différents menus, limite le chiffre- réponse au nombre de réponses possibles. LIGNES 2200375 et LIGNES 475 @ 490 Bien sdr 4 modifier si ‘Administration décide de changer l'actuel systéme de tarification. Le coeffi- cient TX est multiplicateur de la durée en secondes par unité de base (voir la ligne 615). 4 GUY-HACHETTE ed LIGNES 560 4 590 A modifier si les PTT chan- gent la durée des commu- nications (UN correspond au nombre de secondes). LIGNE 670 ll est possible de régler la précision en faisant varier la valeur-limite de Z. la touche «espace» a-t- elle été pressée ? LIGNES 820 @ 850 Uutilisation d'une instruc- tion INPUT, évidemment plus simple, aurait forcé- ment conduit 4 des erreurs de type “EXTRA IGNO- RED", en raison du risque dutilisation d'une virgule a la place du point tradi- tionnel (taxe souvent en francs et centimes... et utilisateurs plus ou moins au courant de la syntaxe Applesoft !). (suite page 6) 455 460 465 470 475 480 485 490 495 500 sos 510 S15 520 525 530 535 540 545 550 S55 560 565 570 575 580 585 590 S95 600 605 610 615 620 625 630 635 640 645 650 655 RETURN REM ** COEFFICIENTS TARIFS ** TX = 1:TX$ = "ROUGE": RETURN TX = 1.5:TX$ = "BLANC": RETURN TX = 2:TX$ = "BLEU": RETURN = 3:TX$ = "BLEU NUIT": RETURN REM ** MENU ZONES ** HOME : GOSUB 400 VTAB S: PRINT “Numéro de zone (voir carte ann uaire) 3": PRINT PRINT : HTAB 22: PRINT "1 --> “Communication locale" PRINT : HTAB 22: PRINT "2 --> “Communication voisinage <A)" PRINT : HTAB 22: PRINT "3 --> “Communication voisinage (B)" PRINT : HTAB 22: PRINT "4 --> “Communication voisinage (C)" PRINT : HTAB 22: PRINT "S --> “Communication distante" MX = 5: GOSUB 430 ON R GOTO 570,575,580 ,585,590 REM ** COEFFICIENTS ZONES ** 360:UN$ = “LOCALE”: GOTO 610 72:UN$ = "VOISINAGE (A)": GOTO 610 45:UN$ = "VOISINAGE (B)": GOTO 610 24: UNS “VOISINAGE (C)": GOTO 610 12:UN$ = "DISTANTE": GOTO 610 “SS S55 ~ REM ** CALCULS ET AFFICHAGE HORLOGE #* HE = O:MI = 0:SE = 0:SC = O:P = 0:U = 1: HOME : GOSUB 400: GOSUB 710 UX = UN * TX VTAB 4: PRINT "Communication: ";UN%;: HTAB 62 : PRINT “Tarif: "3TX% PRINT : HTAB 22: PRINT "(Une unité toutes les ";UX;" secondes) PRINT : PRINT "."3: NEXT I: PRINT VTAB 20: FOR I = 1 TO 80: PRINT "_";: NEXT I VTAB 22: HTAB 18: PRINT "<RET> pour démarrer et <ESPACE> pour arréter “;: GET R$: IF RS ¢ > CHRS (13) THEN PRINT BIP$: GOTO 635 FOR I = 1 TO 80: HES = STR$ (HE):MIS = STR (MI):SE% = STRS {SE) IF SE <¢ 10 THEN SES = "0" + SES IF MI < 10 THEN MI "O" + MIS IF HE ¢ 10 THEN HES = "0" + HES 003A 3015 7B21 ECFS 3F9D 7E9F 99AL B4a5 6E2B 907B 003A 003A 454) 1104 S4C5 BFC3 C3c3 003A 003A 90EA 5896 2106 CAF? 4809 FB23 1065 62BF 44B9 S39E TREMPLIN MICRO 660 665 670 675 680 685 690 695 700 705 710 715 720 725 730 735 740 745 750 755 760 765 770 775 780 785 790 795 800 805 810 815 820 825 830 835 840 845 850 855 860 865 VTAB 17: HTAB 8: PRINT HES;":";MI$;":";SES;: HTAB 72: PRINT U P = U * T: VTAB 12: HTAB 40: PRINT P FOR 2 = 1 TO 67: REM ** Réglage horloge ** IF PEEK ¢ - 16368) = 160 THEN 705 NEXT 2:SE = SE + 1:SC = SC + 1:U = INT (SC / UX) +1 IF SE = 60 THEN MI = MI + 1:SE=0 IF MI = 60 THEN HE = HE + 1:MI = 0 IF PEEK ¢ - 16368) = 160 THEN 705 GOTO 640 VTAB 22: CALL - 958: HTAB 21: PRINT "“Appuyer sur une touche pour continuer “;: GET R$: PR INT : GOTO 740 VTAB 17: HTAB 1: PRINT "Temps: AB 63: PRINT "Unités :"0 “" VTAB 12: HTAB 32: PRINT "Prix :7°"" "7" . RETURN REM ** MENU DE FIN #** HOME : GOSUB 400: VTAB 8: PRINT VTAB 10: HTAB 22: PRINT "1 --> vec les mémes paramétres™ PRINT : HTAB 22: PRINT "2 --> changeant les paramétres” PRINT : HTAB 22: PRINT “3 --> MX = 3: GOSUB 430 ON R GOTO 610,160,785 REM ** BYE BYE ** HOME END REM ** SAISIE/ENREGISTREMENT TAXE DE BASE ** HOME : GOSUB 400 VTAB 21: FOR I = PRINT VTAB 10: HTAB 25: PRINT ase ? “";: CALL - 868 GET TAS: IF TAS = CHR (13) THEN 855 00:00:00";: HT “Voulez-vous:" “Recommencer a “Recommencer en “Quitter" : VTAB 10: HTAB 36: PRINT "Terming...": 1 TO 80: PRINT "_";: NEXT : "Prix de la taxe de b IF TAS = "," THEN TAS = ".": GOTO 845 IF TAS “." THEN 845 IF TAS CHR$ (8) OR TAS = CHRS (127) THEN T2$ = "": GOTO 815 IF ASC (TAS) < 48 OR ASC (TAS) > 57 THEN 820 PRINT TAS; T2$ = 12% + TAS: GOTO 820 T= VAL (726): IF T = 0 THEN 815 PRINT : PRINT D$;"OPEN TAXE": PRINT D$;"WRITE TAXE": PRINT T: PRINT D$;"CLOSE TAXE": PRINT GOTO 160 7302 724A OBOA BB78 A3C8 SB06 11F0 BB78 0345 9350 185E FAEF 63B1 0034 003A FAFA BA26 8C2C EE7F 9129 82DB 003A 003A 89D3 003A 003A 3C15 30BS EESO 15€9 72EB 6700 9004 A731 CFAE 2524 FFAL BABO 3942 — (suite) Les programmes paraissant dans restent la propriété de leurs auteurs. Leur reproduction est évidemment autorisée, mais ils ne peuvent étre commercialisés. Leurs auteurs sont seuls habilités 4 en autoriser |’éventuelle publication dans un recueil. AVIS A NOS LECTEURS TREMPLIN MICRO invite ses Lectrices et Lecteurs 4 adopter ProDOS, systeéme d'exploitation beaucoup plus performant que le DOS 3.3. A propos de ProDOS, se méfier des anciennes ver- sions et utiliser, sinon la plus récente, du moins celle portant la référence is es 6 GUY-HACHETTE Nicole BREAUD-POULIQUEN LE BASIC APPLESOFT | == parle aux outils du GS ==" * Ge programmetion Supposons que vous ne disposiez pas du systéme de développement APW pour pouvoir écrire efficace- ment en assembleur — et avec des macro-instructions — un pro- gramme avec une __ interface- utilisateur de type Mac (le Bureau Electronique sur |'écran Super Haute Résolution avec la Souris). Avec APW, on écrirait cette applica- tion en la décomposant en plusieurs segments de programmes et de don- nées, puis en une simple commande ASML PG.SRC, on _ obtiendrait l'assemblage et I'édition de liens de ces segments sous forme d'un fichier chargeable et relogeable automati- quement sous le systéme d’exploita- tion ProDOS 16. Notre hypothése de développe- ment ici est le BASIC.SYSTEM que vous aurez mis sur une disquette SYSTEM contenant au minimum les fichiers suivants : PRODOS SYS SYSTEM DIR BASIC.SYSTEM SYS STARTUP BAS Le sous-répertoire ou dossier SYSTEM contenant au minimum : P8 SYS P16 $F9 START S16 SYSTEM.SETUP DIR TOOLS DIR DESK.ACCS DIR FONTS DIR ou on trouvera les Outils @ charger en MEV 4 la demande de I'applica- tion, une collection d'accessoires de bureau et une collection de polices de caractéres. Le pro- gramme START est celui qui va 6tre exécuté au démarrage. Il s'agit en général du lanceur d'application (Apple System Laun- cher). Avec une disquette systéme MOUSE.DESK, vous mettrez BASIC. SYSTEM en ceuvre en cliquant sur son icéne. En appelant BASIC.SYSTEM, on se place automatiquement sous Pro- DOS 8, grace au fichier P8 qui con- tient la version ProDOS 1.1.1 déja connue, mais que l'on appellera dorénavant ProDOS 8. Pour assembler un _sous- programme en langage machine, entrez dans le mini-assembleur par le classique CALL - 151 suivi, dés la sollicitation de I’* , par un ! Une fois les instructions mnémoni- ques tapées, retournez au Moni- teur en tapant simplement ‘Return’. Pour sauvegarder sur disquette, rappellez BASIC par Ctrl-C, puis tapez BSAVE PG.OBJ,A$adr, L$long. Le fichier ainsi obtenu pourra étre rechargé par un BLOAD PG.OBJ. Il est prévu dans APW une com- mande qui permet de trans- former : — un fichier relogeable et exécu- table sous ProDOS 16 (type EXE ou $16) en: —un fichier équivalent en adresse absolue exécutable sous ProDOS 8 (donc chargea- ble dans un programme en BASIC). C'est la commande MAKEBIN nom du fichier objet. C'est pourquoi dans cet article vous trouverez le listing du source PG.SRC écrit sous APW ; la com- mande ASML PG.SRC a généré PG.OBJ grace 4 la directive KEEP PG.OB)J ; puis la commande MAKE- BIN PG.OBJ a généré le méme code que celui obtenu grace au mini-assembleur. Le source PG.SRC a été écrit déli- bérément sans macro-instructions pour pouvoir le lire et le taper sous la méme forme en mini- assembleur. Le mini-assembleur ne vous oblige pas 4 taper le signe $ pour les données en hexadéci- mal comme l'exige APW. 2. L'exemple Nous avons choisi d'implanter le programme BASIC 4 sa place normale (& partir de $800) en supposant qu'il n'ira pas au-dela de $2000 pour son code et ses données numériques. En $2000 nous chargeons PG.OBJ le sous- programme de dialogue avec les outils, en supposant qu'il n‘ira pas au-deld de $3000 ; cette der- niére adresse a été choisie arbi- trairement comme début des pages Zéro que réclament les outils pour démarrer leur travail. QuickDraw en utilise trois et EventManager une. (suite page 8) TREMPLIN MICRO 7 —— PG.OBJ S§CALL-151 *0=x *0=m O=m = 0=x 00/2000: 00/2001: 00/2002: 00/2004: 00/2007: 00/200A: 00/2000: 00/200E: 00/200F: 00/2011: 00/2012: 00/2015: 00/2019: 00/201C: 00/201F: 00/2023: 00/2024: 00/2027: 00/202A: 00/2020: 00/2030: 00/2033: 00/2036: 00/2034: 00/2030: 00/2041: 00/2044: 00/2047; 00/2048: 00/2040: 00/204E: 00/2051: 00/2055: 00/2058: 00/2058: 00/205E: 00/2061: 00/2064: 00/2067: 00/2060: 00/2068: 00/206E: PG.SRC oe 1=LCbank (0/1) BRS sss SRAISSSSRas 3 3 22 00 00 El 48 A2 06 02 22 00 00 E1 cLe XCE REP £30 JSR 2012 JSR 207A JSR 20B3 SEC XCE SEP £30 RTS LOX £0201 JSL £10000 PEA 0000 LOX £0202 JSL £10000 PLA STA 20E4 PEA 0000 PEA 0000 PEA O0E1 PEA 2000 LOX £1A02 JSL £10000 LOX £1002 JSL £10000 PEA 3000 PEA 0000 PEA 00A0 LDA 20E4 PHA LOX £0204 JSL £10000 PEA 3300 PEA 0014 PEA 0000 PEA 0140 PEA 0000 PEA 00C8 LDA 20E4 PHA LOX £0206 JSL £10000 PG DEMARR TITLE ’PG.SRC’ LIST ON ABSADDR ON SYMBOL ON ORG $002000 KEEP PG.OBU START cLe XCE REP £$30 JSR DEMARR JSR BOUCLE JSR FERMER SEC XCE SEP £$30 RTS END START USING COMMUN LOX £$201 JSL $E10000 PEA $0000 LOX £$202 JSL $€10000 PLA STA ID PEA $0000 PEA $0000 PEA $00E1 PEA $2000 LOX £$1A02 JSL $£10000 LOX £91002 JSL $E10000 PEA $3000 PEA $0080 PEA $00A0 LOA ID PHA LOX £3204 JSL $E10000 PEA $3300 PEA $0014 PEA $0000 PEA $0280 PEA $0000 PEA $00C8 LDA ID PHA LOX £$206 JSL $£10000 00/% 00/; jmise en mode natif . 00. yavec les registres 00 ysur 16 bits 00 ydémarrage des Outils at yboucle de gestion des événements at jfermeture 0 jmise en mode émulation ; yremise des registres 0 jen mode 8 bits t ¢ i 1 jTLStartup sMMStartup 3FindHandle de $£10000 ;DisposeHandle jdébut des Pages 2éros QuickDraw 78CB:620 pixels/ligne jnbre d’octets/ligne ;00Startup jPage Zéro Event Manager slong. maxi file d’événements 3X min 3X max du curseur 3Y min 7¥ min gEMStartup GUY-HACHETTE Se on 00/2072: 00/2075: 00/2079: 00/2070: 00/2070: 00/2080: 00/2083: 00/2084; 00/2087: 00/2088: 00/2088: 00/208F : 00/2090: 00/2092: 00/2095: 00/2098: 00/209A: 00/2090: 00/20A0: 00/2004: 00/2087: 00/20AB: 00/20AD: 00/2080: 00/2062: 00/2083: 00/2086: 00/20BA: 00/2080: 00/2001: 00/2004: 00/2007: 00/20CA: 00/20CD: 00/2000: 00/2001: 00/2004: 00/2007: 00/20DA: 00/20DD: 00/20E1: A2 04 9 22 00 00 El 60 F4 00 00 F4 FF FF A? 00 00 48 A9 ES 20 48 A2 06 0A 22 00 00 Et 68 FO E8 AD E6 20 co 01 00 dO 13 F4 00 00 A2 04 86 22 00 00 Et A2 04 15 22 00 00 £1 80 CD C9 03 00 dO c8 60 A2 06 03 22:00 00 E1 A2 04 03 22 00 00 Ei F400 00 F4 00 00 F4 00 00 F400 80 AD E4 20 48 F413 CO F4 El 00 F4 00 20 A2 02 09 22 00 00 E1 68 LOX £9104 JSL £10000 RTS PEA 0000 PEA FFFF LOA £0000 PHA LDA £20E6 PHA LOX £0A06 JSL £10000 PLA BEG 207A 6-188 LDA 20E6 CMP £0001 BNE 20AD é+138 PEA 0000 LOX £8604 JSL £10000 LOX £1504 JSL £10000 BRA 207A 6-33¢ CMP £0003 BNE 207A é-388 RTS LOX £0306 JSL £10000 LOX £0304 JSL £10000 PEA 0000 PEA 0000 PEA 0000 PEA 8000 LDA 2064 PHA PEA C013 PEA 00E1 PEA 2000 LOX £0902 JSL E10000 PLA LOX £99104 JSL $£10000 RTS END BOUCLE START USING COMMUN PEA $0000 PEA $FFFF LOA £90000 LOX £$A06 JSL $£10000 PLA BEQ BOUCLE LDA EVENT CMP £$0001 BNE NOT! yShowCursor ;tous les événements accessibles jl’adresse de EVENT sur 4 octets jGetNextEvent jaucun événement? ilequel? sbouton-souris enfoncé? ysimple exemple de traitement: PEA $0000 LOX £$8604 JSL $E10000 LOX £$1504 JSL $£10000 BRA BOUCLE NOTL CMP £0003 BNE BOUCLE RTS END FERMER START USING COMMUN LOX £9306 JSL $E10000 LOX £3304 JSL $£10000 PEA $0000 PEA $0000 PEA $0000 PEA $8000 LOA ID PHA PEA $013 PEA $00E1 PEA $2000 LOX £8902 JSL $£10000 PLA yRandom renvoie sur la pile jun nombre aléatoire sur 2 octets ;ClearScreen met ce nombre dans jtous les octets associés aux pixels jtouche appuyée jEMShutDown yQDShutDown itaille du bloc a réserver 3 $008000 fixe ,verrouillé,sur un seul banc 3 en $E12000 i jNewHandle (suite page 10) ARCSTHISTT TERT OSn ERP OOe AS CaTA CR Rss eee es ee ss Ee E eee eee eee EES SST TeNsEseeseesEeeseeseEESeesAeEeeEOe TREMPLIN MICRO ‘| 00/20E2: 68 PLA PLA 00/20E3: 60 RTS RTS END COMMUN DATA Nous avons choisi cette pré- 1D 0S 2 sentation, peu orthodoxe il ; est vrai, pour rendre ce pro- EVENT ps 2 gramme accessible 4 tous les utilisateurs de I'APPLE IGS, y ae compris ceux qui ne dispo- sent pas du systeme APW ou DS 4 (relire [article de Nicole MODIFIER DS 2 BREAUD-POULIQUEN). END ydonnées communes jN*d’identité sous lequel le Memory Manager connait ce programme présultats de GetNExtEvent 10 PRINT "Le but de cette application est de montrer comment faire” 20 PRINT "appe) aux OUTILS du GS pour utiliser l’environnement type Mac” 30 PRINT "-le bureau electronique en page Super Haute Résolution" 40 PRINT “en restent COMPATIBLE avec BASIC APPLESOFT et ProDOS 8" 45 PRINT CHR$ (4)"BLOAD PG.OBJ" 50 PRINT "Le S/P est charoé en $002000" 60 PRINT "Les pages 2éro nécessaires aux Outils sont en $003000" 62 PRINT : INVERSE : PRINT" 620 OU 340 “3s NORMAL 63 SCB = 8261: REM $2045 64 MAXX = 8287: REM $205F-2060 65 INPUT N: IF N= 0 THEN END 66 IF N= 620 THEN POKE SCB.128: POKE MAXX + 1.2: POKE MAXX,128 67 IF N= 340 THEN POKE SCB,0: POKE MAXX + 1,1: POKE MAXX, 64 70 CALL 8192: REM $2000 75 1D = 8420: REM $20E4 80 PRINT “-démarrage du Too! Locator" 90 PRINT "-démarrage du Memory Manager” 100 TYPE = PEEK (ID + 1) / 16:MAINID = PEEK (ID) 110 PRINT "N* d’identification du bloc courant “;TYPE:"00" :MAINID 120 PRINT “ProDOS alias $3001 posséde 1a mémoire de 1’écran Super Haute Résolution" 130 PRINT “dont GuickDraw devra se servir" 140 PRINT “on va chercher le handle de cette zone $£10000° 150 PRINT “puis le désallouer pour laisser QuickDraw s’en servirs:" 160 PRINT " -FindHandle" 170 PRINT " -DisposeHandle * 180 PRINT "-démarrage de QuickDraw" 190 PRINT "-démarrage de 1’EventManager" 220 PRINT “La boucle principale du S/P traite les événements par: 230 PRINT "-GetNextEvent pour les faire connaitre au proaramme" 240 PRINT “qui attend que le bouton-souris soit enfoncé pour " 250 PRINT “faire varier 1a couleur du fond" 260 PRINT "et qui termine la boucle dés qu’une touche est pressée” 290 PRINT "Le retour au programme BASIC appelant necessite: 292 PRINT " -fermeture des outils sauf le Memory Manager" 294 PRINT " -réallocation de 1a mémoire Super Haute Résolution par:* 296 PRINT " -NewHandle “ 300 GOTO 62 10 3. Perspectives Sachant qu'il faut laisser aux outils des zones de travail ou Pages Zéro dans le banc $00, qu’un pro- gramme en BASIC APPLESOFT ne s'exé- cute que s'il est dans le banc $00, que pour le Memory Manager, c'est ProDOS 8 qui est propriétaire des blocs : $000800-$008800 et $010800- 618800 puis $E02000-$E06000 et £12000-E1AG00, le travail de recher- che des meilleures adresses d'implanta- tion est ouvert. Les outils seraient donc tous utilisables en cohabitation avec du BASIC? A vous maintenant de faire travailler © Window Manager, Menu Manager, _— Control Manager, Dialog Manager, etc. ... GUY-HACHETTE Im tic to pi -_—_ in SBS : | ah Sane ae eee ae ame © TRES SIMPLE! ..... Imaginez une course d’ordinateurs : un MOS sorti tout droit de chez Thomson et de |'Educa- tion nationale, mon vieil APPLE //e tout vermoulu, avec PASCAL UCSD, mon tout-nouveau- tout-beau GS équipé de son © de compétition. Méme parcours pour tout le monde : calculer 10 fois (pour faire bonne mesure) les nombres premiers apparaissant dans la suite d’entiers de 1 4 10 000. Résultat des courses MO5 + BASIC: &56 minutes, il a fallu abattre l'ordinateur : il souffrait trop. APPLE Ile + PASCAL: 14 minutes, pas mal, I'APPLE /le !... on a quand méme di refaire la peinture. APPLEIIGS + € : 6secondes ! Des commentaires, des questions, oui, non, boff ! OK ! je vous sens plein de courage : voici la saga des variables, |'6popée des objets informatiques. Fini de s‘amuser ! aujourd'hui, on attaque les cho- ses sérieuses et ceux qui liront cet article jusqu'au bout ne seront plus jamais les mémes : une majesté certaine illuminera leurs traits fatigués. Quant aux ELUS qui auront tout compris, un € d'argent bril- lera sur leur noble front. Une facon élégante d'aborder sérieusement un lan- gage consiste & définir les objets (les variables) qu'il manipule et la facon dont il les manipule. Le trés vénérable SAINT NIKLAUS WIRTH, auteur du tres regretté PASCAL, nous apprend que ALGO- RITHM + DATABASE = PROGRAM. Ce qui, en bon francais, signifie @ peu prés : si tu sais écrire PRINTF “HELLO” et que tu ne sais pas comment STRUCTURER tes données, tes programmes font rire ou pleurer, selon qu'on les regarde ou qu'on les utilise. C LA RENCONTRE DES QUATRE TYPES La puissance d'un langage informatique est trés liée & la fagon dont i! peut manipuler les objets (les variables) qui lui sont confiés. BASIC, lui, n'est pas méchant. Je rappelle aux inconscients, & ceux qui se seraient aventurés sur ces lignes bourbeuses sans repasser leur BASIC ELEMENTAIRE, que ce langage délicieux posséde en gros quatre types. prédéfinis : ENTIERS, REELS, CHAINES DE CARACTERES, et un quatriéme discret et caché comme une taupe, le type LOGIQUE. Ces objets, Basic sait les organiser en tableau et en fichier, donc en structures linéaires simples. La déclaration du type d'un objet Basic se fait au moment de son utilisation par la présence d'un suf- fixe $,%, ou par une absence de suffixe selon que l'on veut déclarer une chaine, un entier ou un réel. Seule la structure TABLEAU échappe 4 la régle et doit étre déclarée avant I'utilisation par |'instruc- tion DIM. Ce petit rappel ayant distrait les BASICOIS et les BASICOISES, passons vite 4 € que je vais définir par ses différences. (suite page 12) sunosmssueousuossccsnsccaescerscerscnmsessecsenssssecsscssssssoesnsesecousonsecssareaseuausscssencoons TREMPLIN MICRO W On pourrait dire que le langage est d’autant plus puissant et efficace qu'il posséde de types d’objets différents, et de possibilités d’organiser ces objets en structures complexes. C TYPE C est un langage “typé” il permet |'utilisation d'objets de types divers selon que l'on veut privilé- gier la vitesse d’exécution, l’encombrement en mémoire ou encore la puissance de calcul. A la différence du BASIC, toute variable devant étre utilisée dans le cours du programme, doit étre déclarée 4 l’avance. Ceci permet une gestion effi- cace de mémoire et un gain de temps appréciable pour le compilateur. En Basic nous écririons : tandis quenc : 10 X% int X; 20. : 80? ices Remarquons au passage que l'instruction d'affecta- tion (=) est la méme en BASIC et en € .. Elle se prononce X recoit 5. Uinconvénient de |'écriture © est qu'elle ne per- met pas d'identifier immédiatement le type d'une variable dans le cours d'un programme : il faut remonter 4 sa déclaration et celle-ci est parfois lointaine. Son avantage principal est de pouvoir limiter la durée de vie (on dit plutét la visibilité ou la portée) d'une variable a la zone de programme strictement nécessaire et de limiter ainsi les mélanges de variables bien connus des programmeurs BASIC. Dans le programme ci-dessous il existe deux varia- bles x distinctes et elles possédent une valeur dif- férente selon que Ion se trouve dans le bloc 1 ou 2. main () é /* un premier bloc */ int x =5; /* on fobrique une variable entiére * printf("%ed", x); /* etonléctit...*/ /* onreviendra sur la syntaxe*/ é /* undeuxiéme bloc */ intx = 7; /* une deuxiéme variable x */ print{("%od ", x); /* lapremiére n’est plus VISIBLE*/ é /* fin du deuxiéme bloc retour au 1*/ printf(‘%edgn’”,x); /* coucou la variable | est revenue */ é /* fin du bloc 1*/ En C les /* et */ délimitent les lignes de commentaire. A part la syntaxe farfelue de printf (farfelue, mais | extrémement pratique), si vous avez exécuté ce programme vous avez tout compris. Il produit l'affichage 5 7 5. On dit que les variables x sont des variables LOCA- LES. On distingue en C€ les variables LOCALES et les variables GLOBALES qui appartiennent 4 tout un programme. Malgré cela — ou peut-étre méme a cause de cela —, les langages "typés” font toujours un peu peur aux programmeurs BASIC. Ces derniers considérent comme une injuste punition ces déclarations "inutiles”. Je vais essayer de leur prouver que, loin d’étre pénalisante, cette nécessité permet une grande souplesse dans les techniques de programmation. LA DECLARATION DES VARIABLES EN C Pour exister, dans la majorité des langages un objet informatique (une variable par exemple) doit étre défini par quatre éléments : 1. Un identificateur, le "nom de l'objet (a, b, toto). 2. Un type associé (nombre entier, réel, chaine de caractéres). 3. Une valeur associée (10, 15, 12, “machin”. 4. Une “classe de mémorisation” définissant la durée de vie. (En Basic, la classe de mémorisation est une et indi- visible puisqu'une variable est définie pour tout le programme). Cette structure quadri-parties correspond 4 la réa- lité physique de l'organisation mémoire dans les entrailles profondes de la machine (pouah !). Langage de haut niveau IDENTIFICATEUR ~N wo ae (ET DUREE DE VIE TYPE VALEUR Niveau machine ADRESSE PLACE EN MEMOIRE “SS oper — =a ~e GESTION DE MEMOIRE CONTENU 12 GUY-HACHETTE nn A See eee eee aero + + Le langage € est pratiquement le seul 4 pouvoir passer de l'un a l'autre niveau de représentation sans probléme, ce qui lui a valu sa réputation d‘assembleur haut niveau. Nous allons passer en revue les différents consti- tuants tels qu’ils existenten © APW. LES IDENTIFICATEURS Il faut bien le reconnaitre, on prend de mauvaises habitudes en BASIC APPLESOFT. Comme ce lan- gage ne considére que deux lettres significatives pour nommer les variables, comme de plus il n'apprécie pas tellement les identificateurs conte- nant des mots réservés, on en vient trés vite 4 pro- grammer avec des A$ des | et des N qui ne rappel- lent en rien l'objet manipulé. C lui, considére TOUS les caractéres de l'identifica- teur comme significatifs et distingue méme majus- cules et minuscules : Toto et toto sont des identifi- cateurs différentsen € . Il faut en profiter pour nommer intelligemment les variables que |’on utilise. Nous verrons par la suite que le type pointeur constitue 4 lui seul un outil prodigieux pour rendre un programme totalement incompréhensible ; raison de plus pour bien choisir les identificateurs et écrire TVA plutét que Z. LES TYPES PREDEFI Le € de I'APPLE IIGS se distingue par une opulence de types assez remarquable. Les types numériques en particulier sont tres nom- breux : alors que le type réel de Basic Applesoft présente juste assez de précision pour me permet- tre de calculer mes droits d'auteur sur ces articles, C offre pour les types numériques une représenta- tion entiére, signée, ou non-signée, courte, lon- gue, étendue, flottante, double, énumération, etc. ‘en passe et des plus spécialisés. On doit pouvoir calculer la distance de la Terre @ la Lune en centimetres ! Le tableau ci-dessous résume les principaux types de © APW je vous laisse la joie de les découvrir. TYPE VALEURS Nb OCTETS char - 128 + 128 ] unsigned char 0 + 255 1 short - 32767 + 32767 2 unsigned short g + 65535 2 int - 32767 + 32767 2 unsigned int g + 65535 2 long ~ 2147483648 + 2147483647 4 unsigned long 0 + 4294967295 4 enum dépend de I’énumération 1,2,4 i pointeur vers une variable 4 float IEEE simple précision 4 double IEEE double précision 8 comp Valeur entiére format ROMTOOL 8 extended Valeur réelle format ROMTOOL 10 Certains d’entre vous ont dé le remarquer : pas de type chaine de caractéres prédéfini en€ . En fait, © considére qu'une chaine de caractéres res- semble trop 4 un tableau de caractéres pour s‘encombrer d'un type spécifique. C nest pas trés regardant quant aux mélanges de types : le type CHAR (caractére) s‘accommode par exemple trés bien de transporter des valeurs entiéres. le programmeur en€ doit étre vigilant: s'il recherche |'efficacité maximale et partant, le code le plus court possible, il peut étre rapidement amené a réaliser des programmes générateurs de migraine. A titre de démonstration le petit programme (que vous trouverez en haut de la page 14) affiche les lettres de A 4 Z et leur code ASCII en décimal et en hexadécimal,. amusez-vous 4 changer le type char en type int par exemple et voyez ce qui se passe. Une petite explication pour ceux qui s’endorment au fond de la salle : ce programme... (suite page 14) PI TTT 13 TREMPLIN MICRO Le BUSHES SOSEST RSET SSOOSTTCTSAOSISTASOCTEST SRS TOU NET ETISTNS SS aRSoTTEANERSeaTeesTERAseAseTNANOREOTTT /* Mélange de types */ main () unsigned char i; for (i='A’';i = 'Z'; i++); printl("%c %d %x ¢n",i,i, i); é utilise une instruction trés proche du FOR... NEXT du Basic : FOR (x=début ; x < = fin ; x++) é...bloc...é Le bloc délimité par é et @ sera exécuté (fin -dé- but) fois, x étant incrémenté a chaque boucle grace 4 l'opérateur unaire ++. Uinstruction printf que nous avons déja rencon- trée permet un affichage formaté des données il s‘agit d'une sorte de super PRINTUSING. printf(contréle,arg],arg2,...); arg est une variable dont le mode d’affichage sera conditionné par les caractéres de conver- sion contenus dans la chaine contréle. | Garactéredeconversion | Affichage de arg hd décimal ho octal %x hexadécimal eu décimal non signé wee caractére hs chaine he notation scientifique %t notation décimale %g choisit e ou f (la plus courte) Le type pointeur fait les délices et les souffran- ces du programmeur en C€ . Il provoque plus de dégats que l’alcool et le tabac réunis dans notre communauté élitiste : avec les pointeurs on peut tout faire. Un pointeur est un entier long désignant des adresses de variables. Supposez |'existence d'une variable de type entier nommée “Objet” et déclarée par int Objet = 5; L'opérateur & (ampersand) permet de détermi- ner l'adresse de cette variable. Po = &Objet affecte a la variable Po l’adresse de Objet. On dit que Po est un pointeur sur la varia- ble Objet. U'opérateur * (astérisque) placé devant le nom du pointeur donne la valeur de la variable poin- tée : dans notre exemple *Po est égal 45 et peut remplacer Objet dans toutes ses applications. Nous reviendrons longuement sur les pointeurs dans les articles suivants... Pour |'instant, souvenez-vous seulement qu'un pointeur non ini- tialisé sur une variable, pointe n‘importe ov et que ¢a peut faire trés mal au ProDOS. Dans notre prochain numéro : Un pointeur fou a pu s‘introduire dans I'espace mémoire. Tombera-t-il entre les griffes du trop célébre docteur MALLOC ov pourra-t-il rejoindre TOPLEVEL dans le Kernel ?... Vous le saurez en lisant le prochain article de : C trés simple, mais ¢a se complique, dans TREMPLIN MICRO. A bient6t... Claude AUBRY. Le premier volet de cette série d’articles a paru dans le numéro 14 de TREMPLIN MICRO (bulletin de commande a la fin de la revue). 4 GUY-HACHETTE a cee ce cee cn _—+ LANGAGE C SUR APPLE IIGS NESTOR — EXERCICE 2 Le bon nombre ....... Reprenons I’exercice n°1 (Tremplin Micro n°14), mais en essayant de l’améliorer sur 3 points : © Ouverture du programme sur un écran vide (home) ; * Modification de la fourchette en fonction des limites déterminées par les rentrées successi- ves de nombres ; * Limitation du nombre de coups. EN BASIC 10 PRINTCHRS (4)"PRE3”: PRINT = 15 X = 69:C = G:5 = 210:A = 1:2 = 100 Cela se traduirait par 20 HOME les lignes suivantes: 95 § = § 1: IFS > @ THEN PRINT "___";: GOTO 25 30 PRINT: PRINT :S = 20:C =C +1 35 IF C = 10 THEN PRINT "VOUS AVEZ PERDU!”: END 4Q PRINT “TROUVEZ UN NOMBRE COMPRIS ENTRE "A" ET "2"; 45. INPUT” ':N: PRINT Micro-programme 50 IF N = X THEN PRINT "C'EST LE NOMBRE - TERMINE”: END elémentaire. 55 IFN > X THEN 70 60 PRINT “IL EST TROP PETIT”: IF N >(A) THEN A = N +1: GOTO 25 65 GOTO 75 70 PRINT “IL EST TROP GRAND": IF N<Z THEN Z = N - 1: GOTO 25 75 C=C-1:GOTO25 REMARQUES La ligne 25* pourrait étre avantageusement remplacée par : FOR S = 1TO 19: PRINT “___.";: NEXT Mais la ressemblance avec le programme en € se révélerait moins évidente. Pourquoi le C = C - 1 de la ligne 75 ? Simplement pour ne pas comptabiliser un nombre sans influence sur la fourchette propo- ¢ ie ste if fois 4 pos sée. Si cette derniére est 65, 70 et que l'on rentre un nombre plus petit comple (00. cartes)” ou égal 65... ou plus grand ou égal 75, on aboutira a Ia ligne 75 : un foudhoit $ = 21. coup pour rien ! (suite page 16) TREMPLIN MICRO 1s EQUIVALENCE EN LANGAGE C main( ) intx<; Nn; ¢,'s; G23 © €L: Nouvel écran. = 69; * LG: Une ligne de soulignement c=@; suivie par deux retours. s = 20; © § est réinitialisé 4 20. a=1; * € est incrémenté. Quand il est z= 100; égal & 10, message et fin de programme. CL: * Choix du nombre . Pt Hiei: * Si le nombre choisi est égal & x, printf(“¢f"); C'est terminé ! * S'il est plus petit que x, on I'an- LG: nonce. --S; © Si, Sane ce oe le n est ps ; rand que a, on faita = n+ 1. if(s>O)é Retour B LG. printf(__ i * Si n est plus grand que x, on goto LG; l'annonce. * Si, dans ce cas-la, mn est plus printf("gn¢n”); petit que z, on faitz = n-1. s= 20: * Sinon, n = Get C = C-1, puis " goto LG. +e; if (c == 10) é printf(" VOUS AVEZ PERDU!¢n”); exit (8); é printf("TROUVEZ UN NOMBRE COMPRIS ENTRE %d ET %d —> ", a, z); scanf("%d", &n); if (n == x)é printf("C’EST LE NOMBRE - TERMINEcn”’); exit (0); é if (n<x)é printf(“IL EST TROP PETIT¢n”); if(n>a)é a=n+1; é goto LG; é if (n> x) é printf("IL EST TROP GRAND¢n"); if(n<zé z=n-l; é goto LG; é printf("¢f"); vide I'écran. n=@; =-S; signifieS = $-1. --¢; + +; signifieC =C +1. goto LG; §NM _indique un retour ligne. é MEN en génére donc 2. GUY-HACHETTE q Cet utilitaire permettra aux heureux utilisateurs de ProDOS de visualiser l’occupation de la dis- quette présente dans le lecteur (port n°6). Le pro- gramme baptisé "CATAVISU" affiche 4 |'écran une table d’occupation avec : — Sur la ligne horizontale supérieure les pistes numérotées de 00 4 $22 ce qui fait de 00 4 34 en décimal soit 35 pistes. — Sur la colonne la plus & gauche les numéros de blocs numérotés de @ 47 soit 8 blocs. TABLE D‘OCCUPATION DE LA DISQUETTE 90000000000000001111111111111111222 9123456789ABCDEF@1 23456789ABCDEFO1 2 .«---- indique un bloc libre NAURONnN—@Q Francois GALLET et Thierry FILLAUT CATAVISU chage des lignes de présentation. Puis, grace au MLI et & la commande READ BLOCK qui effectue la lecture d'un bloc de 512 octets, le programme va chercher sur la disquette le VTOC (ou BIT-MAP) la piste 06 bloc 06. La, il trouve, sous la forme de 35 octets, l'occupation de la disquette avec pour régle : — Un bloc libre représenté par un 1 ; — Un bloc occupé représenté par un G. Il suffit donc de lire ces octets et de les transférer dans une partie de la mémoire de I'APPLE ($2000) pour les traiter. Ce traitement consiste 4 prendre un octet et 4 l'analyser selon les régles ci-dessus, puis 4 afficher un "." ou un “*” suivant le cas. ATTENTION ! cet utilitaire ne fonctionne qu’avec ProDOS. En effet la notion de blocs n'est utilisée que par ce systéme d’exploitation (1 bloc = 2 pistes). *«---- indique un bloc occupé Pour utiliser le programme, il suffit de taper : — BRUN CATAVISU.C — CALL 1013 —et diutiliser alors le "& pour appeler L'utilitaire débute 4 l'adresse $9000 avec |'affi- l'utilitaire. CATAVISU.S ASSEMBLAGE 0 BASCALC EQU $FBCI 1 BLOCK EQU $80 2 CH EQU $24 par ProcODE 3 0 EQU $25 4 HOME EQU $FC58 S MLI EQU $BF00 jAdresse du MLI 6 PAGE1 EQU C054 7 STROUT EQU DB3A 8 VTAB EQU $FC22 SAUVEGARDE : 9 * 10 ORG $9000 BSAVE CATAVISU.C,A$9000, L300 11 * (suite page 18) TREMPLIN MICRO 7 BageeaneenaseeRaesenesanesesonssreeeseesersseeoneseeaaE sess e sees REA Sees OC eNznEeeeeNERoeeAaeTTeSeASeeeS 7000: 9002: 9004: 9006: 9008: 900A: 900D: GOOF: 9012: 9013: 9016: 9018: 9O1B: 901D: 9O1F: 9022: 9023: 9024: 9025: 9026: 9029: 902C: 902D: 9O2E: 9030: 9031: 9034: 9036: 9038: 903B: 903D: 903F: 9041: 9044: 9046: 9048: 904B: 904D: 904F: 9052: 9054: 9056: 9059: 905B: Ag? 85 Ag 85 Ag 8D Ag 8D 60 20 Ag? 8D A2 Ag 2c 2A 4A AB SA AD 20 7A 8A a1 €8 AD ce Fo EE 80 ag A0 20 ar Ao 20 AD 20 ag A0 20 ay AO 04 AE co v1 FB a1 v1 DB 90 DEBUT VERTIC SUITE LDA STA LDA STA LDA STA LDA STA RTS JSR STA LDX BIT ROL LSR TAY PHY JSR PLY STA INX LDA CMP BEG INC BRA LDA LDY JSR LDA LDY JSR LDA LDY JSR LDA LDY JSR LDA LDY £300 $73 £$94 $74 £<DEBUT $3F6 £)DEBUT $3F7 HOME £407 LINDEP £$B0 £$01 PAGE1 LINDEP BASCALC ($28) ,Y LINDEP £$0E SUITE LINDEP VERTIC £402 £$04 Pos £<CH3 £>CH3 STROUT £305 £304 Pos £<CH1 £>CH1 STROUT £306 £304 Change HIMEM de valeur pour protéger leprogramme. Permet d’utiliser "&" pour appeler la fonction CATAVISU. Efface 1’écran. Ligne 7. Prép. l’affich. vert. des nbrs représ. les blocs. Stocke le caractére "0" dans X. Colonne n"1. Active la mém. princ. d’écran. Divise par 2. N* de ligne d’affic. dans A. Affic. du carac. de A. Prépare affic. carac. suivant. Dern. ligne pour l’affichage ? Qui, alors on affiche le titre. Non: on descend d’une ligne... et retour pour nouvel affic. Positionne le curseur vert. Positionne le curseur horiz. Affiche la chaine de caractére. "TABLE D’OCCUPATION DE LA DIS- QUETTE" On recommence avec de nouvelles positions. "000000000000000011111111111111 11222" _BERSSURNZATINAS SE REAUNADES PERC ST OBERT SSNS sAPORSE COSA AEE SoU NTSECN AS SSHES NERA SESEE ATR AeeNsDeNNESASeeR wT 18 GUY-HACHETTE ee 905D: 20 9060: AP 9062: AD 9064: 20 9067: 20 906A: 80 906B: Bé 906D: A2 906F: 86 9071: AP 9073; 85 9075: AS 9077: 85 9079: AS 907B: 1E 907E: 90 9080: 20 9083: AP 9085: AD 9087: 20 908A: 80 908C: 20 908F: AY 9091: AD 9093: 20 9096: E6 9098: AS 909A: C9 909C: DO 9O9E: ES 90A0: ES 90A2: AS 90A4: CP 90A6: FO 90A8: 80 90AA: AS 9OAC: A4 90AE: 85 90B0: 20 90B3: 84 AE E4 90 3A 00 70 00 FE 04 4c 07 4D FE 00 oc AA BE 90 3A 0A pA BC 90 3A 40 4D OF oB FE 4c 4c 27 oD cB 4D 4c 25 22 24 90 OB 20 90 DB 90 DB FC 118 ENC * coucou * SUITE1 POS! Pos * JSR LDA LDY JSR JSR OFB DA LDX STX LDA STA LDA STA LDX ASL Pos £<CH2 £>CH2 STROUT MLI BLOCK PARAM £300 $FE £404 $4C £307 $4D $FE $2000 ,X SUITE! POS1 £<CHS £>CHS STROUT CONT POS1 £<CH4 £>CH4 STROUT $4D $4D £$F coucou SFE $4C $4C £327 FIN $4D $4C cy VTAB CH "0123456789ABCDEFO 1 23456789ABCD EFO12" Appel du MLI. Appel fonction READ BLOCK MLI. Fournit les paramétres. Prépare le compteur permettant la lecture des blocs. Positionne horizontalement le curseur pour afficher. Positionne vert. le curseur pour l’affichage. Stocke la valeur du pointeur d’octets dans X. Décale vers la gauche. Si C=0: bloc occupé. Sinon saut pour prép. l’affic. Affiche... alors un *." Opération suivant.e Le bloc est occupé. On prépare l’affichage. d’un “#", On incrémente la ligne et compare avec la derniére ligne possible. <> on a d’autres blocs & affic. sinon on incrémente pour passer a la piste suivante. Incr. pos. hor. du curseur et comparaison avec la derniére position possible Si différent, on a d’autres pistes a traduire. (Suite page 20) BEFDELEAIDIOSITRGEEI ODEO DGD FOI LI OLI PHI ITE OO IETEOTSUSLSES GLITCH OGL HLIAIHOLSRIRSSTLTASTHSSTOGSATSSSHUSIS TTT TREMPLIN MICRO 9 90B5: 60 119 FIN RTS 120 * 121 * 90Bé: 03 122 PARAM HEX 03 ; I] faut 3 paramétres: 90B7: 60 123 UNIT HEX 60 ; N* du connecteur du drive 90B8;: 00 20 is BUFFER DA 02000 } Adr. du transfert des données ; du VTOC et numéro du 90BA: 04 00 126 BLOCS HEX 0600 ; bloc qui doit étre lu. * 90BC: AA 128 CHa asc "x" 90BD: 00 129 HEX 00 TENE 90BE: AE 130 CHS asc "." 7 pyssi_THPER wT -15 90BF: 00 131 HEX 00 —_ygus POWELF accent POS 3e0F 90CO: BO BO BO es CODES 3 a0 Fe 03 69 “a s Lied BO BO BO 994 05 749 Te gh 2 88 68 Os 78 08 BO BO BO a9 00 73 A et A 07 cy FB 7A A 978 BO BO BO pony 7 02 60 gp 0 BT 93 0 £8 A 20 S78 BO BO BO 9010: yy 08 05 “5a C0 9 oe FO ap 0B 9 ne 90 ei me ORG uan Suan awe ei Bt Bi oad 04 20 AE Ty ag 90 20-20 og a a8 BF B1 Bi BI 9050+ eee oo 20 28 O° Bi BI BI 9060+ B1 Bi B2 B82 B2 132 CHI ASC "00000000000000001111111111111111222" 90E3: 00 133 HEX 00 90E4: 80 B1 B2 gn 20 90 06 a B3 B4 BS 4 Fe ME 90 A? 86 B7 BB ac 09 07 85 ag 8 20. Cg FE BEAD B9 Ci C2 ag 04 85 90 20 3A 9 OF 00 5 ECE? + FE BE AD ap C 95 2 9070: 90 9 ap AS p Ad aC 4927 fe oe DP som: ee ea gp a0 8 FS 4 op 00 AE OF 200 Cé BO Bt go90s BC AD Ye gc 9 27 FY lg gg 20 06 gap BO EDA no B2 B3 Bd + 6 aC 4 60 0) go Bo 8 pi Bt g0Ad: FC 94 2! po 80 pi Bi BS Bé B7 ood: 20 22 FC oy gg Bd BOE oy gy Bl Bt B8 BS CI ocd: Bo 80 FO, gy Bi BL 7 c2 c3 C4 ond: Bi Bt EY c5 Cé BO Bi B2 134 CH2 ASC "0123456789ABCDEFO! 234546789ABCDEFO! 2" 9107: 00 135 HEX 00 9108: D4 C1 C2 cc C5 AO 99A6 C4 A? CF gor OT ye c3 C3 DS i 52 83 84 OS, gy BBFC osie D0 Ci D4 _ gp 2 0200 80% ip aa OF BSE or co AO Oy cote c9 CF CE pe re 4 05 08 BG ap DA CE Nog ca C5 AO F908 At C4 cs ea oa 8 06 cy oa os 00 00 Ad CC C1 : a0 C4 ce guide OF © TS gg pi 05 08 D3 D1 DS 9120: cS D4 D4 cs 136 CH3 ASC "TABLE D’ OCCUPATION DE LA DISQUETTE" 912A: 00 137 HEX 00 912B: 00 138 LINDEP HEX 00 * 20 GUY-HACHETTE NAITRE L’APPLESOFT Marcel COTTINI POKE, COMMANDE APPLESOFT L'INSTRUCTION POKE DU BASIC APPLESOFT POKE est une instruction faisant partie de |'inter- £783 - RTS Retour au — sous-programme préteur du Basic AppleSoft. L'adresse $D072 pointe appelant. SE77A qui est l'entrée (adresse-1) de la routine POKE. C'est une instruction qui permet de placer a Remarques : eect toe partir d'un programme Basic par exemple, une Joe pe ane on tun a © Une adresse négative est |'équivalent d'une Nee peg ee oe . adresse positive obtenue en lui additionnant la revient sélectionner une adresse correspondant a valeur 65536 un emplacement mémoire et 4 y placer une valeur déterminée. L'instruction POKE posséde par ail- leurs la caractéristique de sélection d'un commuta- © L'équivalent du POKE en langage machine est STA (STore Accumulator). teur logique du systéme. Si l'adresse déclarée © En programmation Basic, les valeurs déclarées aprés le POKE n’existe pas, |'instruction sera igno- aprés POKE devront étre en base 10, tandis que rée. POKE peut étre déclaré en mode direct (cla- le langage machine requiert les valeurs en base vier) ou en mode indirect (programme Basic). 16. ; © POKE place dans |'adresse indiquée un nombre Syntaxe: POKE ADRESSE, VALEUR ou binaire codé sur 8 bits, équivalent au nombre ADRESSE est une expression décimal déclaré. arithmétique comprise entre 0 et 65535 inclus, et VALEUR une expression arithmé- tique comprise entre @ et 255 inclus. © Si l'adresse déclarée ne correspond pas 4 une adresse mémoire valide, alors l'instruction sera ignorée. Si le POKE est adressé 4 une mémoire morte (ROM), celui-ci restera sans effet. APPLESOFT ROUTINE POKE : © Si les paramétres déclarés aprés POKE sont hors des limites fixées par l'AppleSoft, un mes- sage d’erreur sera retourné : ILLEGAL QUAN- E77B- JSR $E746 — Transfert de l'adresse du POKE dans $50-$51. Au retour du sous-programme, la TITY ERROR. valeur du POKE se trouvera dans © POKE peut modifier le contenu d'une adresse le registre X. ou commuter des switchs, encore appelés com- E77E- TXA Copie la valeur du POKE dans A. mutateurs logiques. Ce dernier mode est sélec- E77F - LDY £$00 Initialise le registre Y, tionné en écrivant ou en lisant, a certaines E781 - STA ($50),Y et copie la valeur du POKE a adresses servant de point d’entrée a ces com- l'emplacement mémoire spécifié. mutateurs logiques. La page zéro contient un certain nombre de valeurs et pointeurs utilisés soit par l'interpréteur AppleSoft, soit par le systéme d'exploitation. Une totale maitrise et une manipulation astucieuse de ces vecteurs... (svite page 22) TREMPLIN MICRO = peut dans bien des cas simplifier la programma- tion. La suite des pokes n'est nullement exhaus- tive, mais permet au débutant d’avoir 4 sa portée un outil de travail non négligeable. Transmission du pointeur pour l'appel du USR Avec la fonction AppleSoft USR, qui appelle un sous-programme en langage machine, l’argument doit étre transmis 4 travers |‘accumulateur flottant. Il est alors nécessaire de sauvegarder |'adresse d'appel en page zéro, adresses $000B-$000C, avec un JMP (4C) dans $000A. Le résultat est, par la suite, placé dans |'accumulateur flottant. Cette transmission de paramétres peut se faire par une série de pokes aux adresses précitées, de la page z6ro : POKE 10,76: POKE 12,ADR/256 : POKE 11,ADR - PEEK (12) * 256 ob ADR est la valeur de l'adresse mémoire. Code couleur en graphique GR La valeur de la couleur en mode GR est stockée a l'adresse $0030 (48 - COLOR). Cette valeur peut étre modifiée en changeant le code de la couleur : POKE 48,COLOR * 17 ot Color équivaut au code couleur choisi. Mode d'affichage AppleSoft Le mode d’atfichage vidéo est sous contréle de la fonction INVFLG, qui conditionne le mode d'affi- chage de |'Apple. D'aprés la valeur contenue dans l'adresse $32 (50), l'affichage passe en mode nor- mal (£$FF), inverse (£$3F) ou clignotant (£$7F). POKE 50,255 Mode NORMAL POKE 50,63 Mode INVERSE POKE 50,127 Mode FLASH Instructions interdites en mode direct Certaines des commandes AppleSoft comme OPEN, READ, WRITE, APPEND ou POSITION, ne peuvent étre adressées en mode direct (clavier) sans rencontrer le message d’erreur NOT DIRECT COMMAND. Pour modifier cette situation imposée, placez en mode direct, avant un ordre GOTO ou GOSUB et sur la méme ligne, a |'emplacement ou le programme contient une des instructions préci- tée : POKE 51,128. Par la suite, l'Apple se positionne de lui-méme dans le mode initial par I'intermédiaire du Monitor. Sauvegarde des registres PC, A, XetY Lorsqu’il est nécessaire de sauvegarder des adres- ses du compteur ordinal (registre PC) et des regis- tres A, X et Y, avant l'appel d'un sous-programme du Monitor, il faudra effectuer la série suivante de pokes : POKE 58,Adr1 : POKE 59,Adr2 : POKE 69,Adr3 : POKE 70,Adr4 : POKE 71,Adr5 Les adresses 58,59 désignent le pointeur de l'adresse de sauvegarde du PC, sous la forme PC octet poids faible, et PC octet poids fort. Les adres- ses 69,70 et 71 sont respectivement destinées 4 la sauvegarde de l'accumulateur (A), du registre X, et du registre Y. Paramétres avant I'appel d'une routine du Monitor Les adresses $3C-$43 (60 4 67) sont utilisées pour transmettre des paramétres 4 une routine du Moni- tor, pour déplacer ou vérifier un espace mémoire par exemple (MOVE, VERIFY etc.). Avant l’exécu- tion de la routine, il sera nécessaire de mettre le registre d'index Y 4 zéro. L'instruction CALL - 610 effectue cette mise 4 zéro. Exemple de transmis- sion de paramétres et de mise 4 zéro préalable du registre Y : CALL - 610 : POKE 60... 67, Valeur : CALL - 468 ov CALL - 468 est l'appel au sous-programme MOVE ($FE2C) pour déplacer une zone mémoire vers une autre. Mise @ zéro du registre d'état (PS) L'adresse $48 (72), status du registre d'état PS, est utilisée pour annuler le registre d'état PS au retour d'un sous-programme du Monitor par exemple. Avec l'utilisation de la routine de S.H.Lam, il sera nécessaire par la suite de mettre a zéro le registre d'état du microprocesseur : POKE 72,0. Début du programme Basic TXTTAB est I'adresse de début du programme AppleSoft, fixée 4 la valeur $0801 par défaut. Pour l'utilisation d'une adresse autre, placez en début de votre programme AppleSoft Ia ligne suivante : POKE 103,1 : POKE 104,Adr/256 : POKE Adr,0 Votre programme AppleSoft sera ainsi logé a l'adresse Adr. Modification de LOMEM LOMEM, adresse de début de la zone des variables simples et fin du programme Basic, se laisse facile- ment déplacer. Pour ce faire, modifiez les adresses $69 et $6A (105 et 106). POKE 106,Adr/256 POKE 105,Adr-PEEK (106) * 256 Fixe la valeur de LOMEM a I'adresse décimale Adr. Ce eS Se + oe Modification de HIMEM HIMEM, adresse de début de la zone des variables de chaines de caractéres et fin du DOS 3.3, se laisse facilement déplacer. || faudra modifier les adresses $73 et $74 (115 et 116): POKE 116,Adr/256 POKE 115,Adr-PEEK (116) * 256 Fixe la valeur de HIMEM 4 |adresse décimale Adr. Mode direct CURLIN se trouve aux adresses $75-$76 et contient la valeur $FF en mode direct (4 partir du clavier). Pendant I’exécution d'un programme Basic Apple- Soft, le numéro de la ligne courante en exécution se trouve réactualisé 4 cette adresse. En modifiant le contenu de cette adresse, il devient alors possi- ble d'exécuter en mode direct, des instructions tel- les que INPUT ou GET. En adressant un POKE 118,0 sur la méme ligne que l'instruction & transmettre en mode direct, |'Apple ne retournera pas de mes- sage d'erreur : POKE 118, : INPUT "ESSAI !! "ES Fin du programme Applesoft Pour modifier le pointeur de la fin du programme Basic, lors d'un ajout d'un programme en langage machine par exemple, il faudra modifier les adres- ses $AF et $B0 (175 et 176) : La page 2 occupe les adresses $6200-$02FF, et sert de tampon d'entrée de caractéres frappés au cla- vier. La routine de $.H.Lam utilise le tampon cla- vier par l'intermédiaire de pokes pour installer en mémoire des sous-programmes en langage machine. Cette méme routine s'utilise aussi 4 par- tir d'un programme Basic pour rentrer des instruc- tions via le Monitor : 10 Y$ = EXEMPLES 20 Y$ = Y$ +" ND9C6G" 30 FOR | = 1 TO LEN (Y$) : POKE 511,ASC (MIDS (Y$,1,1)) + 128 : NEXT 40 POKE 72,0: CALL - 144 ov EXEMPLE$ pourrait étre "2000 < 6000.7FFFM", et copie la page graphique fictive débutant a partir POKE 176,Adr/256 POKE 175,Adr-PEEK (176) * 256 Fixe la fin du programme Basic 4 sa nouvelle valeur décimale Adr. Annule ONERR POKE 216, annule I'instruction ONERR déclarée au début d'un programme Basic. HGR ou HGR2 ? En mode graphique haute résolution, il est intéres- sant de pouvoir utiliser l'une ou l'autre des deux pages graphiques, sans pour autant devoir |'affi- cher. Si un programme doit modifier une partie d'une image, sans pour autant I'afficher, il est pos- sible d'intervenir directement sur la page graphi- que en modifiant le contenu de l'adresse $E6. L'adresse $E6 (230) est utilisée pour mémoriser le numéro de la page graphique ot doivent agir les tracés des instructions en cours : POKE 230,32 sélectionne la page HGR ($2000) POKE 230,64 sélectionne la page HGR2 ($4000) POKE 230,96 sélectionne une page fictive 4 l'adresse $6000. Cette page ne pourra étre affichée directement, mais devra au préalable étre déplacée en mémoire soit dant la page HGR, soit dans la page HGR2. de l'adresse $6000 et se terminant a l'adresse $7FFF, dans la page HGR (PAGE 1, adresses $2000-$3FFF). ou encore : EXEMPLES = "CO8] N CO81 N D000 < DOQO.FFFFM" copiera la ROM dans la carte d’extension mémoire. ou encore : EXEMPLES$ = "300: 20 3A FF 20 3A FF 20 3A FF 60" copiera 4 l'adresse $0360 un sous-programme quelconque. Dans l'exemple cité, CALL 768 exécute le sous-programme, l'Apple émettra 3 bips. La liste n'est pas exhaustive, et toute commande du Monitor pourra étre exécutée par ce procédé. Cette page réserve une partie de ses adresses au programmeur ($0300-$03CF), et l'autre partie... (suite page 24) TREMPLIN MICRO 23 soaeneeeeoesresasesesecessosssnoeesenee see e eRe ee ee eReSR esos Ae eoAse sees sene ss seseasseeeEAeRs eS se partage entre le DOS ($03D0-$03EF) et la ROM Monitor ($03F0-$03FF). Changement de I’adresse de branchement en cas de BReakK du moniteur : POKE 1009, Adr/256 POKE 1008,Adr-PEEK (1009) * 256 Changement de I'adresse de branchement en cas d'un RESET: POKE 1011,Adr/256 POKE 1010,Adr-PEEK (1011) * 256 ou encore: POKE 1012,0 qui provoque un démar- rage 4 froid du systéme, aprés un RESET. Les pages 4 47 sont réservées a l'espace mémoire de la page | texte, tandis que les pages 8 4 11 sont celles réservées 4 la page 2 texte. Elles représen- tent l'affichage de |'écran vidéo. Il est possible d'affecter un point quelconque de la surface de I'écran, en adressant un POKE 4 la bonne adresse. U'adressage se fait donc directement en page 1 texte aux points des coordonnées x et y. La valeur x étant comprise entre 0 et 39 et y entre 0 et 23. Le mode d’affichage pouvant lui-méme étre modifié d'aprés la variable MOD dans notre exemple. MOD entre @ et 63 = affichage INVERSE Les valeurs données par la suite sont uniquement valables pour un DOS 3.3 logé dans |'espace mémoire d'un systéme de 64 Ko de RAM. Pour une configuration différente, il suffit de retrancher 1024 octets aux adresses indiquées pour chaque Ko en moins. Par défaut, le systeme d’exploitation termine le boot d'une disquette sur un fichier du type Basic (A). En modifiant simplement un octet 4 |'adresse 40514 du DOS, on peut booter sur un fichier binaire ou EXEC. Normalement, cet octet a comme valeur 06 pour un fichier Basic. Pour initialiser sous DOS 3.3 une disquette avec un fichier de boot différent, tapez 4 partir du clavier le POKE POUR LE DOS 3.3 Branchement en cus du & ampersand Modifier I'adresse de saut par le & ampersand est possible en modifiant les pointeurs aux adresses $03F6 et $03F7 (1014 et 1015). Normalement, pointe l'adresse $FF58. POKE 1015,Adr/256 POKE 1014,Adr-PEEK (1015) * 256 Touches Ctri-Y U'association des touches CTRL-Y permet, lorsque vous étes en mode Monitor de faire un saut au sous-programme, dont l'adresse est stockée a $03F9 et $3FA (1017 et 1018). Normalement, pointe l'adresse $FF65. POKE 1018,Adr/256 POKE 1017,Adr-PEEK (1018) * 256 MOD entre 64 et 127 = affichage FLASH MOD entre 128 et 191 = affichage NORMAL MOD entre 192 et 255 = affichage MINUSCULE Dans le cas d'une écriture texte en page 2, il suffira de remplacer 1024 ($400) par la valeur $2048 ($800). Dans ce cas le programme AppleSoft devra étre relogé, en modifiant les adresses 103 et 104 ($67 et $68). Le début ne pourra pas se trouver avant l'adresse $0C00, étant donné que la fin de la page 2 texte débute a l'adresse $OBFF. POKE 1024 + Adr + 128 * Y -984* INT (Y/8),MOD poke en conséquence. Cette modification peut tres bien se réaliser au niveau de la disquette méme 4 l'aide d'un utilitaire dans le genre DISKFIXER ou autre. Pour ce faire, il faudra modifier le byte 4 la position relative $42 (66), piste $00 secteur $0D de ladite disquette. POKE 40514,52 permet un boot du systéme sur un fichier BINAIRE. POKE 40514,20 permet un boot du systéme sur un fichier EXEC. POKE 43140,73 : POKE 43160,68 : POKE 43212,82 vous raméne 4 un DOS standard, aprés modification de certains pointeurs. Pr rr Ee TTT TT Te 24 GUY-HACHETTE AgguguanneseeoeesseesuesoesseoRne eens soe eenaee eee sees eee sees eee esse ee ease oe NERS eeEeEEEES DRIVE et SLOT POKE 43624,D —_Sélectionne le drive ayant la valeur D(D = 1 pour le lecteur 1). POKE 43624,3 - PEEK (43624) Change de lecteur de disquettes. POKE 43626,$ — Sélectionne le slot de l'Apple (S = 6 pour slot 6). TABLE DU DOS POKE 44452,255 | Elimine la pause durant un catalogue (CATALOG). POKE 44452,22 | Restaure la pause lors du CATALOG. POKE 43149,96 | Annule la commande INIT du DOS. POKE 43149,73 | Restaure la fonction INIT du DOS. POKE 43160,96 | Annule la fonction DELETE du DOS. POKE 43160,68 | Restaure lo fonction DELETE du DOS. POKE 43212,96 | Annule la commande RENAME du DOS POKE 49212,82 | Restaure la fonction RENAME du DOS. POKE 43144,96 | Annule la fonction LOAD. POKE 43144,76 | Restoure la fonction LOAD. POKE 43148,96 | Annule la fonction SAVE. POKE 43148,83 | Restaure la fonction SAVE. POKE 43152,96 | Annule la fonction RUN. POKE 43152,82 | Restaure la fonction RUN. POKE 43166,96 | Annule la fonction LOCK. POKE 43166,76 | Restaure la fonction LOCK. POKE 43170,96 | Annule la fonction UNLOCK. POKE 43170,85 | Restaure la fonction UNLOCK. POKE 49218,96 | Annule la fonction CATALOG. POKE 43218,67 | Restaure a fonction CATALOG. POKE 43247,96 | Annule la fonction FP. POKE 43247,70 | Restaure la fonction FP. POKE 43249,96 | Annule la fonction INT. POKE 43249,73 | Restoure la fonction INT. POKE 43257,96 | Annule la fonction BLOAD. POKE 49257,66 | Restaure la fonction BLOAD. POKE 43262,96 | Annule la fonction BRUN. POKE 43262,66 | Restaure la fonction BRUN. POKE 43266,96 | Annule la fonction VERIFY. POKE 43266,86 | Restaure la fonction VERIFY. TABLE 1OB La table IOB est utilisée par la routine RWTS pour l'accés direct 4 un secteur donné de la disquette. La table IOB se trouve par défaut 4 l'adresse 47080 ($B7E8) pour un DOS booté sur une configuration de 64 Ko. Ces paramétres peuvent étre modifiés par la suite pour des besoins spécifiques. 1OB = 47080 POKE IOB+1,SLT * 16 modifie le numéro du Slot actuel (modulo 16). modifie le numéro du drive actuel (Valeur de 1 4 2). modifie le numéro du volume actuel. Pour lire n‘importe quel volume de disquette, il faudra donner 4 Vol la valeur 6 (Valeur de @ a 254). modifie le numéro de la piste actuelle (Valeur de 0 4 34). modifie le numéro du sec- teur actuel (Valeur de @ 4 15). modifie l'octet de poids fai- ble de l'adresse de la table des caractéristiques du DOS (DCT). modifie l'octet de poids fort de l'adresse de la table des caractéristiques du DOs (DCT). POKE 1OB+8,BUFFLW modifie l'octet de poids fai- ble du tampon utilisé par le bos. POKE 1OB+9,BUFFHG modifie l'octet de poids fort du tampon utilisé par le DOS. Sert 4 sélectionner le nom- bre d'octets 4 modifier sur un secteur. Prend comme valeur $00 pour modifier les 256 octets d'un secteur. modifie le travail de la téte de lecture : Mode = 0 positionne la téte de lecture. POKE IOB+2,Dve POKE 1OB+3,Vol POKE |OB +4, Piste POKE IOB+5, Secteur POKE IOB+6,DCTLW POKE IOB+7,DCTHG POKE |OB+11,BYT POKE IOB+12,Mode Mode = 1 lecture. Mode = 2 écriture. Mode = 4 formatage. QUELQUES TRUCS EN VRAC Meilleure lisibilité en mode 80 colonnes POKE - 16205,0 : POKE - 16203,0 Impression des minuseules POKE 243,32 force l'imprimante 4 |'impression de minuscules. Faire précéder le PRINT par POKE 243,32. Aprés l'instruction PRINT 4 mettre en minuscules, tapez NORMAL. L'adresse 243 ($F3) ou ORMASK sert a |'APPLE- SOFT pour forcer le mode FLASH. (suite page 26) Coal aalaahalalalaltattatalale alaalleale ee eEEE De TREMPLIN MICRO 25 Sortie sur enregistrement cassette POKE - 16352,0 POKE sur deux octets POKE adresse +1,V / 256 : POKE adresse,V - 256 * PEEK (adresse +1) o¥ adresse +1 est l'octet de poids fort, adresse est l'octet de poids faible, et V est la valeur a modifier. POKE divers POKE 44033,P — met la VTOC du disk avant initiali- sation sur la piste numéro P (P = 13, met la VTOC sur la piste 13, secteur @). POKE 37656,X —_effectue un saut de X lignes dans un programme. durée diattente : - six 128 augmente la durée. - six 128 diminue la durée. POKE 37658,X Langage integer Pour éviter lors d'un Boot a chaud de recharger a cha- que fois le langage Integer dans la carte langage ou la carte d'extension mémoire, il faudra effectuer au préalable les trois POKE suivants : POKE 49107,234 : POKE 40108,234 : POKE 49109,234 Accés a une piste interdite SI vous voulez pour une raison ou une autre, interdire l'accés a certaines pistes de votre disquette, il suffira de faire les POKE suivants : POKE 44723,A * 4: POKE 44725,B * 4 ov les variables A et B représentent les limites extrémes des pistes accessibles pour la sauve- garde de vos fichiers. Modifier 'empiacement de la VTOC La VTOC se trouve normalement sur Ia piste $11 sec- teur $00, et le Directory sur la piste $11 secteurs $15 4 $01 (DOS standard). Pour modifier cette disposition, il sera nécessaire de faire les POKE suivants : POKE 44033,3 : POKE 44723,16 : POKE 44741,12 : POKE 44764,3 : POKE 46012,3 Dans notre exemple, la VTOC et le Directory seront placés sur la piste $03, aprés initialisation d'une dis- quette. Cette derniére ne pourra plus étre lue, ni boo- tée par un DOS 3.3 standard. Les programmes de copie usuels comme FID ou COPYA ne fonctionnent plus. Les paramétres pour un DOS classique sont res- pectivement 17, 12, 68, 17 et 17. nouveau systéme d’exploitation : ProDOS. * Familiarisation du lecteur avec ProDOS. * Les vecteurs particuliers sous ProDOS. © Systeme DOS 3.3 ou ProDOS ? * Monitor, interpréteur Applesoft et ProDOS. * Le boot d’une disquette ProDOS. APPLE // ProDOS GUIDE DU PROGRAMMEUR APPLESOFT Paveeck@elniNi@ Vous ne tirerez pleinement profit de votre Apple que si vous connaissez partaitement les multiples ressources de son Apres avoir lu l’excellent ouvrage de Marcel COTTINI, vous trouverez en ProDOS |’un de vos meilleurs alliés pour une programmation avancée. Extrait de Ia table des matiéres : © Occupation type d’une configuration Apple. ¢ Commandes typiques du Basic.System. © La Basic System Global page. * et bien d'autres sujets ! BULLETIN DE COMMANDE PAGE 75 26 GUY-HACHETTE Vient de paraitre Les Editeurs nous communiquent : © IMAGES NUMERIQUES (Jean-Baptiste Touchard) D'abord cantonnées 4 certains secteurs de pointe, en raison de |'importance des calculs nécessaires pour les mettre en ceuvre, les images numériques envahissent aujourd'hui les écrans des téléviseurs, des cinémas... et des micro-ordinateurs. Ce livre se veut trés pragmatique, voire terre @ terre face 4 ce phéno- méne. Il a pour ambition de donner au lecteur les éléments directement utili- sables. Le panorama présenté dans ce livre (vidéotex, petit formulaire de géométrie, les trois dimensions, la croisée des dimensions, les objets gra- phiques, leur saisie, puis leur traite- ment) n’a certes pas la prétention d’étre exhaustif dans un domaine extrémement vaste et mouvant. Il tente cependant de faire ressortir le fait que les algorithmes fondamen- taux, utilisés en Infographie, font rare- ment appel 4 des concepts trés élabo- rés. Les exemples présentés dans le livre, bien qu’étant écrits dans des lan- gages divers, s'inscrivent dans des syntaxes claires et facilement trans- posables, Un bagage mathématique de bachelier scientifique permet de comprendre le plus grand nombre des concepts pré- Images nymeriques , ae ss sentés. Bien que l’ouvrage présente l'image de synthése de maniére appro- fondie, il offre cependant différents niveaux de lecture : ¢ de nombreuses illustrations et légendes apportent, d'une part, une meilleure compréhension pour le débutant ; ¢ diautre part, de multiples ouvertu- res vers des systémes plus sophis' qués, comme les palettes graphi- ques, sont proposées au lecteur plus passionné. CEDIC/NATHAN, 6-10, boulevard JOURDAN — 75014 PARIS. (336 pages — 240 F) © INITIATION A L'ALGORITHMIQUE ET AUX STRUCTURES DE DONNEES (J. Courtin et |. Kowarski) 1. Programmation structurée et struc- tures de données élémentaires. Ce premier tome est consacré 4 la construction dalgorithmes fondamen- taux sur les fichiers séquentiels et les vecteurs (structures 4 accés direct). II sadresse aux étudiants de premier cycle (IUT, BTS, DEUG) et plus généra- lement @ tous les lecteurs désirant s‘initier 4 la construction d’algorithmes corrects, qui sont la base de toute bonne programmation. Les algorithmes sont écrits dans un lan- gage proche du Pascal et leur traduction dans un langage classique (Pascal, For- tran, Cobol, ...) est aisée. De trés nom- breux exemples et exercices permettent au lecteur de se familiariser avec la démarche proposée et de vérifier que la méthode a bien été assimilée. le deuxigme tome (parution fin 1987) oborde I'étude des structures des données avancées que sont les listes chainées, les piles, les tables et les arbres. Les auteurs y mettent en évidence la notion de récursivité qui constitue une bonne initiation 4 |'utilisa- tion des langages de |'intelligence artifi- cielle (Lisp, Prolog). Coll. “Dunod Informatique”, 298 pages, broché, 120 F © LA SECURITE DES RESEAUX (J.-M. Lamére, Y. Leroux, J. Tourly) Méthodes et techniques Faisant suite & un premier ouvrage de sensibilisation, /a Sécurité informati- que, le présent titre fournit aux prati- ciens tous les outils méthodologiques aujourd'hui disponibles pour |'analyse et la réduction des risques infor- matiques. Dans cet esprit, les auteurs dévelop- pent les méthodes MARION-AP (sites locaux et réseaux simples) et MARION-RSX (réseaux d'ordinateurs) avec l'ensemble des éléments quanti- tatifs : ratios, questionnaire d'audit, bases de référence, etc., permettant une mise en ceuvre effective. Un exemple illustre la démarche pratique au travers de fiches méthodologiques. Un chapitre important est consacré aux moyens spécifiques de la sécurité des télécommunications : _chiffrement, authentification, signature... Cet ouvrage s'adresse tous ceux qui ont conscience de |'émergence d'une nouvelle fonction liée @ la sécurité informatique, aussi bien les utilisa- teurs et les professionnels que les étu- diants de l'enseignement supérieur. Collection “Dunod Informatique”, 374 pages, broché, 290 F DUNOD, 17, rue Rémy-Dumoncel, B.P. 50, 75661 PARIS CEDEX 14 la sécurité des réseaux méthodes et techniques TREMPLIN MICRO 27 Clément RENARD D'un Basie a un autre UI ne connait pas le GWBASIC, langage employé sur la plupart des micros considérés Q comme compatibles avec le modéle IBM ? Vous ? pas possible ! Je vous propose, a titre d’exercice — et simplement pour le plaisir — de transformer un programme écrit en GWBASIC... en routine APPLESOFT. Nous supposons, au départ, que vous disposez d'un Apple récent, équipé d'une carte 80 colonnes et autorisant l'utilisation des caractéres souris, mais ce détail n'est important que pour le cadre... et encore ! Il est toujours possible d'afficher un cadre constitué par 204 astérisques. C'est un peu simplet. On vous demande seule- ment de taper votre nom et votre prénom. Tou- tes les lettres de l'alphabet sont acceptées, ainsi que l'espace, l'apostrophe et le tiret. Si une erreur est commise, le caractére erroné apparait en mode inverse et il faut renouveler la saisie. Ensuite, si vous avez commis l'erreur de taper votre nom en oubliant les majuscules, on vous corrige gentiment... et c'est tout ! TRADUCTION Seules sont expliquées les lignes posant un probléme. 100 En Applesoft, on n'est pas forcément en 80 colonnes, d’ou le libellé de cette ligne. CLS est remplacé par HOME et BEEP par PRINT CHR$ (7) ou CALL - 198. La REMarque doit étre précédée par REM (en GWBASIC, on peut utiliser la simple apostrophe). 105 = Applesoft, au contraire de GWBASIC, ne reconnait pas les 4 676 Gi7et é... ce qui est dommage. 110 LOCATE 5,14 est remplacé par VTAB 5 : HTAB 14, COLOR @,7 par INVERSE et COLOR 7,0 par NORMAL. Nous ne reviendrons plus la-dessus. Quelques textes ont été sensiblement modifiés, mais c'est sans rapport avec la programmation. 185 Le programme en GWBASIC comporte un 200 bug. Celui-ci est semble-t-il éliminé dans la routine Applesoft. Comparez les deux ver- sions (c'est du Basic, classique !) et essayez de comprendre ! 220 ~APPLESOFT ne connait pas INKEY$, mais la ligne d’attente habituelle fait parfaite- ment notre affaire. 235 C'est évidemment le tracé du cadre qui a différencie le plus les deux machines... 250 encore que ! nous disposons, sur le com- patible IBM, de caractéres semi- graphiques qui autorisent bien des acrobaties. Sur Apple, les caractéres souris sont insuffisants et on ne le déplorera jamais assez. On peut néanmoins procéder comme nous Iavons fait ou tracer un cadre classique, soit en utilisant l'espace en mode inverse, soit un caractére comme I'astérisque... On peut aussi passer par une petite routine LM, mais cela nous éloigne du Basic traditionnel ! Pour éviter le scrolling, il est en tout cas indis- pensable de poquer le contenu de la case 2039 (HTAB 80, VTAB 24). Notez le POKE 33,78 de la ligne 250, indispensable pour empécher |'efface- ment du cadre, au moment de I'INPUT. Les caractéres semi-graphiques Voici les cinq caractéres permettant le tracé (parfait) du cadre en GWBASIC : 201 F 200 & 187 ¥ 188 4 205 28 GUY-HACHETTE ee | 100 105 110 115 120 125 130 135 140 145 150 155 | 160 {465 170 175 180 185 190 195 200 ee ae 205 210 215 220 225 230 — = | 235 240 > 245 250 + onlin CLS : BEEP : GOSUB 235 'Tracé du ca abcde fghi jk Imnopqrstuvwxyzaéeuaé '¢ ABCDEFGHIJKLMNOPQRSTUVWXYZ-’"” LOCATE 5,14: COLOR 0,7:PRINT” SAVEZ-— VOUS ORTHOGRAPHIER VOTRE NOM ET VOTR E PRENOM ? “:COLOR 7,0 LOCATE 10,5 : C=0: P= INPUT “Indiquez-moi votre O: BEEP nom et votr e prénom ";N$ N1$="":'’Nom corrigé (majuscules) éve ntuellement FOR I =1 TO LEN (N$): M$= MID$ (N$,I 71) : IF M$ = “ ” THEN C=I IF M$="~" OR M$="""THEN P=I FOR J = 1 TO LEN (V$) IF M$ = MID$ (V$,J,1) THEN 150 NEXT : LOCATE 10,45+I : COLOR 0,7 : PRINT M$ : COLOR 7,0 : GOTO 115 IF (I-1 = C OR I-1=P) AND M$ > "Z" A ND M$ < CHR$(123) THEN M$=CHR$(ASC(M $)-32) NIS=NI$+M$S NEXT I LOCATE 12,5 : IF C THEN 175 PRINT “J’avais pourtant précisé: nom ET prénom!": GOTO 115 PRINT “Ainsi, vous vous nommez "; LE FT$(N$,C-1); et votre prénom e st"; MID$(N$,C,LEN(N$)+1-C) LOCATE 14,5 IF LEFT$(N$,1) >» “Z" OR P « C THEN P RINT “Une lettre capitale ne saurait dévaluer votre NOM... la preuve:": L OCATE 15,15: PRINT “— LEFT$(N1$,C -1) :GOTO 195 PRINT “Votre NOM semble correctement orthographié...” LOCATE 17,5 IF MID$ (N$,C+1,1) >"Z" OR P >C THEN PRINT"Votre prénom serait mieux orth ographié ainsi: ":LOCATE 18,15: PRINT “~";RIGHT$(N1$,LEN(N$)+1-C):GOTO 210 PRINT “Votre PRENOM ne parait pas po ser de probléme...” PRINT: PRINT: BEEP GOSUB 220:CLS : END N$=INKEY$ : IF LEN(N$)=0 THEN 220 RETURN ’tracé d’un cadre utilisant les cara ctéres graphiques PRINT CHR$(201);: FOR I = 2 TO 79 : PRINT CHR$ (205);: NEXT : PRINT CHR$ (187) FOR I = 2 TO 23 : LOCATE I,1: PRINT CHR$(186): LOCATE I,80: PRINT CHR$(1 86): NEXT LOCATE 24,1: PRINT CHR$(200);: FOR I = 2 TO 79 : PRINT CHR$ (205) NEXT : PRINT CHR$( 188); RETURN 100 105 110 M5 120 125 130 135 140 15¢ 155 160 165 170 175 180 185 195 200 205 210 215 220 225 230 235 240 SaUSGEUnSeeeseenssesweesen sass BaesSsaEaENEs ESTE sSSEEaE Ss OeeE eo TeeEEe eee eeeseesseeaessousEossTRsEUNORS APPLESOFT DS = CHR (4): PRINT D$"PRE3": PRINT : HOME : PRINT CHR (7): GOSUB 235: R —M Tracé du cadre Vs = "“abcdefahi ik ImnopqrstuvwxyzaéeacA BCDEFGHI JKLMNOPQRSTUVWXY2-" " VTAB 5: HTAB 14: INVERSE : PRINT " SAV EZ-VOUS ORTHOGRAPHIER VOTRE NOM ET VOT RE PRENOM ? ": NORMAL VTAB 10: HTAB 5:C = 0:P = 0: CALL - 1 98 INPUT "Nom et votre prénom sup: “:N¢ N1$ = “": REM Nom corrigé (ma iuscules) éventuellement FOR 1 = 1 TO LEN (N$):M$ = 1,4): IF M$ =" " THENC =1 IF M$ = "-" OR M$ = "’" THEN P = I FOR J = 1 TO LEN (V$): IF M$ = MIDS (V$,J.1) THEN 150 NEXT : PRINT : HTAB 29 + I: VTAB 10: I NVERSE : PRINT M$: NORMAL : GOTO 115 IF (1 - 1=C ORI - 1 = P) AND MS > " 2" AND M$ < CHR$ (125) THEN M$ = CHR $ ( ASC (M$) - 32) N1IS = NIS + MS NEXT I VTAB 12: HTAB S: IF C THEN 175 PRINT "“J’avais pourtant précisé: nom e t prénom!": GOTO 115 PRINT "Nom: "; LEFT® (N$,C - 123", pré nom:"; MID$ (N$,C, LEN (N$) + 1 - C) VTAB 14: HTAB S R$ = LEFTS (NIS.C - 1): IF ROC DO OL EFT$ (N$,C - 1) THEN PRINT "Une lettr e capitale ne saurait dévaluer un NOM, ++ la preuve:": VTAB 15: HTAB 15: PRIN T “= "R$: GOTO 195 PRINT "Votre NOM semble correctement o rthooraphié..." VTAB 17: HTAB S R$ = RIGHTS (NIS, LEN (NS) + 1 - C)? IF R$ ¢ > RIGHTS (NS, LEN (NS) + 1 - C) THEN PRINT "Votre prénom serait mi eux orthographié ainsi:": VTAB 18: HTA B 1S: PRINT "-":R$: GOTO 210 PRINT "Votre PRENOM ne parait pas pose r de probléme..." PRINT : PRINT CHRS (7) MIDS (NS. GOSUB 220: TEXT : HOME : END POKE 49168.0: WAIT 49152,128: POKE 491 68,0 RETURN REM Tracé d’un cadre utilisant les car actéres souris INVERSE : PRINT CHR$ (27);: FOR I = 1 TO 80: PRINT "L":: NEXT FOR I = 2 TO 23: VTAB I: POKE 1403, PRINT "_";: POKE 1403,79: PRINT "2" NEXT POKE 1403.0: VTAB 24: FOR I = 1 TO 79: NORMAL : VTAB 1: PRINT CHR$ (24): POK E 2039.83: POKE 33,78: RETURN SSESTUSTESSSE ESSE SA TD aUE RON RAsesseTEAsSTSEESSsos ES ese EET TENS UNST TOAST ANeseRsEsoeEseeESssEeUAeEZaeATOeeAe TREMPLIN MICRO 29 | Votre bibliotheque INFORMATIQUE © CLEFS POUR C (Francois Piette) Au moment oi je rédige ces lignes, les candidats l'apprentissage du langa- ge C sur Apple IIGS restent sur leur faim. Aucun ouvrage — 4 ma connais- sance du moins — n'a traité la question, fnais on connait l'une des grandes quali- tés du C : son excellente portabilité. les amateurs de € (ils se révélent de plus en plus nombreux) tireront donc pro- fit de ce nouveau volet de Ia collection LANGAGES aux Editions du P.S.I. En fait, CLEFS POUR € est un manuel de référence capable de fournir de bonnes informations & tout programmeur. Ses exemples (nombreux) ont été écrits en € standard. Ils sont en principe desti- nés aux utilisateurs de PC et compatibles, mais aussi & ceux de |'Atari ST et de |'Amstrad PC. Notons au passage que les programmeurs sur Atari ST ne sont pas aussi démunis que les applemaniaques armés d'un GS tout neuf. Mais revenons aux CLEFS POURC. Uauteur ne se contente pas, dans les 290 pages de son bouquin, d'une banale énu- mération d'instructions que d'autres ont déja explicitées. II étudie les deux ver- sions les plus répandues du¢: le LATTICE € (c'est, dans ses grandes lignes, celui du GS) et le Digital Research €, principal outil de program- mation sous GEM, sur Atari ST. A noter que les utilisateurs de Microsoft € peu- vent Gussi se reporter au chapitre consa- cré au Lattice €: ce sont des produits identiques jusqu’a la version 3.0. EDITIONS DU PSI, BP 86 77402 LAGNY-S/MARNE — CEDEX (800 poges environ — 220F TTC) © € ET SES FICHIERS (J. Boisgontier et J.-P. Lagrange) Cet ouvrage s'adresse aux utilisateurs déja familiarisés avec le langage C , mais les auteurs ont tout de méme pris la peine de revenir sur les principales Notions et fonctions du C . Toute la pre- miére partie du livre est consacrée a ce rappel. C'est concis, clair et précis. Machines concernées : PC et compati- bles, Atari, Amiga, Macintosh, etc. La deuxiéme partie, plus intéressante 4 mes yeux parce que traitant un sujet moins connu, nous aide 4 découvrir la gestion de fichiers en € ... ou 4 approfondir nos connaissances sur la question. Aprés l'avoir lve, vous saurez (presque) tout sur l'ouverture, la fermeture, |'écriture et la lecture des fichiers & accés direct et a accés séquentiel. Les auteurs auraient pu en rester la, mais ils n’ont pas voulu nous quitter sans abor- der des sujets aussi intéressants que : les méthodes de tri, I'allocation dynamique, les bases de données, etc. EDITIONS DU PSI — (170 pages, 170 F) © ASTRONOMIE ET ORDINATEUR (Guy Sérane) Si vous vous intéressez a |'astronomie, gageons que le livre de Guy Sérane ne vous laissera pas indifférent. Son objet est le calcul des positions astronomiques par NESTOR par des méthodes simples, accompa- gnées d'exemples numériques... une simplicité qui ne nuit en rien a la précision. Uauteur traite des problémes fondamen- taux de la mécanique céleste : * Positions des étoiles et des planétes a n'importe quelle date ; * Positions et trajectoires des cométes et des satellites artificiels. * Prévision et calculs de phénoménes astronomiques divers (éclipses, occul- tations, élongations...). * Navigation : point astronomique, méridienne. * Calculs de trajectoires de vaisseaux spatiaux. Uoriginalité de l'ouvrage réside dans le fait que tous les sujets abordés au cours des différents chapitres font l'objet dopplications numériques et de pro- grammes écrits en BASIC standard, mais peuvent étre facilement adaptés 4 tout micro-ordinateur. C'est dire que tout lec- feur ayant 4 sa disposition un micro- ordinateur peut utiliser ces programmes, sans avoir 4 connaitre les démonstrations et développements, d'aspect parfois com- plexe, fournis dans le corps du livre. DUNOD, 17, rue Rémy-Dumoncel, B.P 50, 75661 PARIS CEDEX 14 (264 pages — 160F) 30 GUY-HACHETTE Maurice CHAVELL| STARTUP Ce programme présente un double intérét : utilitaire et didactique. {. Aspect utilitaire : Pour la réalisation de ce STARTUP, je suis parti avec les objectifs suivants : © Occupation d'un seul bloc sur la disquette. © Rapidité d'exécution (rien n’est plus pénible que ces “HELLO” qui n’en finissent plus de charger le catalogue). © Lecture des catalogues secondaires (type DIR). © Possibilité de lancer un programme de type BAS, BIN, REL, SYS, TXT (en tant que fichier EXEC). Le plus difficile a été de tout faire entrer dans les 512 octets impartis (ne vous attendez donc pas trouver des fioritures !), pour le reste il n'y a pas eu de gros problémes. Le programme sélec- tionné est lancé avec le dash "-", pour un fichier type TXT qui n'est pas un fichier EXEC, vous aurez droit 4 une avalanche de SYNTAX ERROR. 2. Aspect didactique : L'analyse du programme vous montrera les deux types d’appel de ProDOS 4 partir de |l'assem- bleur. Vous serez amené également 4 compren- dre l'organisation des catalogues sur les disquet- tes ProDOS. Vous pouvez aussi utiliser le pro- gramme sans vous poser de question sur son fonctionnement... ® Les fléches droite et gauche permettent de sélectionner le fichier. ® La touche RETURN essaie de le lancer, dans le cas d'un fichier DIR le PREFIX est mis 4 jour (ne pas dépasser 40 caractéres pour éviter les surprises !) et le nouveau catalogue est affiché. ® La touche ESCAPE permet de relire le catalo- gue principal et la touche ESC vous envoie directement dans le BASIC. J * HEE ESS EEE LE SERS EEE ESSE E SEES EE * 2 * * STARTUP par Maurice Chavelli * * 3 * pour Tremplin-Micro * * 4 REELS S EEE KE EEE EEE LEER EERE REESE * Ss 6 PTR = $6 3 Pointeurs 7 ADD = $8 8 SCH = $13 3; Sauvegarde CH 3° COMPT = $1B 3; Compteur de fichiers 1@ WNDTOP = $22 ; Haut de la fenetre TEXTE 11 CH = $24 3; Pointeur horizontal du curseur 12 cv = $25 3 Pointeur vertical du curseur g 13° BASL = $238 3 Pointeur adresse ligne courante § 14 BASH = $29 a 15. IN = $260 3; Pointeur du buffer d’entrée g 16 DOSCMD = $BEG3 3; Entrée page globale BASIC-SYS 2 TREMPLIN MICRO 31 1? MLI = $BFOG } Entrée page globale de ProDOS 18 SETTXT = $FB39 3 équivalent du TEXT du BASIC 19 TABY = $FBSB 3 Positionne curseur ligne A 26 BASCALC = $FBC1 3; Calcule BASL et BASH ligne A 21 VTAB = $FC22 3 Positionne curseur ligne CV 22 HOME = $FC58 3 Equivalent du HOME du BASIC 23 CROUT = $FD8E 3 Envoie un retour chariot 24 COUT = $FDED 3 Envoie caractére code dans A 25 SELL = $FF3A 3 Un petit Bip! 26 ar ORG $7608 28 29 DEBUT LDA $C6BB 3 Affichage vert CHAT MAUVE 38 LDA £6 3 Initialisations 31 STA ADD 32 STA NBR+1 33 STA SCH 34 LDA £2 3 Le catalogue principal 35 STA NBR 3} commence au Block 2 36 37 * Chargement du catalogue en #7606. Le catalogue principal 38 * occupe les 4 blocs de 2 & 5. Les catalogues secondaires 39 * occupent 1 ou plusieurs blocs qui se situent n’importe 40 * of, mais qui sont chainés. On trouve d’abord, sur 2 oc- 41 * tets, le pointeur arriére, et sur les 2 octets suivants 42 * le pointeur avant. 43 44 CHARGE LDA £876 3; Buffer en $7686 45 STA BUF+I 46 CHARG JSR MLI 3 Appel standard du MLI 47 HEX 8@ 3} Code de la commande READ BLOCK 48 DA PARAM 3} Pointeur des paramétres 49 BEG CHI 5 JMP BELL 3; Impossible & lire! Si CH LDA BUF+1 3; Lecture réussie 52 STA ADD+t 53 INC BUF+1 3} 1 bloc occupe 2 pages mémoire 54 INC BUF+1 SS LDY £2 56 LDA ‘¢ADD),Y 3; Récupére le pointeur avant 37 STA NBR 3} et le sauve en NBR et NBRt1 538 INY 5? LDA ‘ADD),Y 6B STA NBRt1 él BNE CHARG 3 S’il n’est pas nul on continue 62 LDA NBR 63 BNE CHARG 64 65 * Préparation commande PREFIX. C’est une deuxiéme maniére 66 * d’appeler ProDOS & partir de 1’Assembleur: elle exige 67 * 1a présence du BASIC.SYSTEM. 69 LDY £5 3 Inscrit PREFIX dans buffer IN 32 GUY-HACHETTE "| SS — — 76 PREF LDA PREFIX,Y a1 STA IN,Y 72 DEY 73 BPL PREF 74 75 * Affichage et commande PREFIX 76 77 JSR HOME 3 Efface la fenetre d’écran 78 JSR SETTXT 3 TEXT 79 LDA £8 3} Positionne curseur sur ligne @ 80 JSR TABY 81 LDA £4 3 Pointe PTR sur le nom du Volume 82 STA PTR 83 LDA £876 84 STA PTR+1 85 LDA SCH 3 Ajuste CH pour écriture 86 STA CH 3} correcte du PREFIX 87 LDA £"7 3 Commence par afficher un / 88 JSR COUT 89 JSR COM 3 Affiche PREFIX et -> IN 90 JSR DOSCMD 3 Exécute commande dans buffer IN v1 LDA £2 3 Diminue la fenetre 22 STA WNDTOP 93 LDA £8 3 Initialise compteur de fichiers 94 STA COMPT 95 96 * Affichage des noms de fichiers 97 98 TRAIT JSR HOME bad LDX £22 3; C’est parti pour les 22 lignes 108 TI JSR PLUS 3 Avance d’un fichier 161 JSR ECRIT 3 Affiche le nom du fichier 102 LDA CV 3; Bas de la page? 163 CMP £23 164 BEQ T?7 3; Qui, on arrete 165 JSR CROUT 3 Non, passe & la ligne suivante 106 T7 LDA #7625 3; Récupére nombre total fichiers 167 CMP COMPT 3; Le compare avec COMPT 168 BEG T2 3 S’il est égal on arrete 169 DEX 3 Sinon on décrémente X 116 BNE Tt 3 S’il n’est pas nul on remet ¢a 411i sk2 LDA £1 3 Remet COMPT a 1 1t2 STA COMPT 113 LDA £%2B 3; Remet PTR sur $7600 114 STA PTR 115 LDA £876 116 STA PTR+t 5 rg LDA £2 3 Remet le curseur sur la ligne 2 = 118 T3 JSR TABV 119 $ 126 * Traitement du clavier 2 121 3 122 T4 LDY £39 3 Affiche inverse fichier courant TREMPLIN MICRO 33 123 124 125 126 127 128 129 138 131 132 133 134 135 136 137 138 139 146 141 142 143 144 145 146 147 148 149 158 151 153 154 155 156 157 158 159 168 161 162 163 164 165 166 167 168 169 178 171 172 173 174 175 TS LDA Té6 LDA T3 CMP T18 JSR TT? STA JMP (BASL) ,Y £$3F CBASL) ,Y TS $0608 Té $CG16 £SAG T38 DEBUT £39B Til SETTXT HOME £S9S BAS £$88 HAUT £$8D TS (PTR) ,Y £$FO £$D8 sous HOOK SETTXT HOME £SAB £4 IN,Y DOSCMD * Lecture sous-cataloque SOUS LDY LDA STA INY LDA STA JMP * Traitement BAS JSR LDA £17 (PTR) ,Y NBR (PTR) ,Y NBR+1 CHARGE vers le bas NORM COMPT Masque pour 1’inversion Attend une frappe de touche Est-ce la barre d’espace? Non Oui, on recommence tout & zére Est-ce la touche ESC? Non Oui, fenetre normale on efface et on abandonne tout! Est-ce la fléche & droite? Oui Est-ce la fléche & gauche? Oui Est-ce le touche RETURN? Non, alors c’est une erreur! Récupére le type de fichier Type DIR? Oui, lire nouveau catalogue Vecteur extension éventuelle TEXT HOME Code espace dans A 4 espaces dans le buffer c’est pour utiliser le meme sous-programme COM! Inscrit le dash dans buffer Affiche nom fichier -> IN C’est parti pour ce fichier! Récupére numéro Key-Block du sous-catalogue et le sauve dans PTR C’est parti nouveau cataloque! Affichage normal Récupére numéro fichier GUY-HACHETTE a oo 176 177 178 179 186 181 182 183 184 185 186 187 188 189 198 191 192 193 194 195 196 197 198 199 288 201 202 203 284 265 266 267 288 269 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 CMP BEQ JSR INC LDA CMP BNE DEC JSR JSR JMP * Traitement HAUT JSR DEC BNE INC BEQ JMP Hi JSR DEC LDA CMP BEQ JMP H2 LDA STA H3 DEC DEC BEQ JSR LDA STA LDA STA H4 LDA HS INY JMP * Paramétres vers le haut NORM COMPT H5 UTAB BASL ADD BASH ADD+1 cu UTAB £39 CADD) ,¥ (BASL) ,Y H4 H3 CH £2 TABU ECRIT T4 Le compare total fichiers Si égalité ne va pas plus loin Incrémente PTR et COMPT Incrémente CV Sort de la page? Non, alors tout va bien Qui, alors on décrémente CV On monte les fichiers d’un cran On écrit nom du petit nouveau Affichage normal Un fichier plus "bas" Si on est pas & @ on continue Sinon il n’y a plus rien & voir Décrémente PTR et COMPT Décrémente CV Ligne 1? Qui, alors il faut réagir Non, alors c’est parfait Ici petit SCROLL inverse Je vous laisse le découvrir La sortie est ici! Curseur sur premiére colonne Curseur sur la ligne 2 Ecrit le nom du fichier pour chargement de Bloc (suite page 36) TREMPLIN MICRO 229 PARAM HEX 63 3 3 paramétres 238 HEX 68 3 Slot 6 et Drive 1 231 BUF DA $7608 3 Buffer de réception 232 NBR DA C7) 3 Numéro du Bloc 233 234 * Routine avance d’un titre 235 236 PLUS INC COMPT 3 Incrémente COMPT 237 P@ e€Le 3 Effectue PTR+39, chaque fichier 238 LDA PTR 3 occupe 39 octets dans le 239 ADC £39 3 Volume Directory 248 STA PTR 241 Bcc Pl 242 INC PTR+tl 243 «PL CMP £$FF 3 Attention changement de Bloc! 244 BNE P2 3 Pas de changement 245 LDA £4 3 Changement de Bloc ajuste PTR 246 STA PTR 247 INC PTR+t1 248 P2 LDY £4 3 Fichier effacé? 249 LDA ¢PTR),Y 258 BEQ P@ 3 Oui, alors on passe au suivant 251 RTS 3; Non, alors tout va bien... 252 253 * Routine recule d’un titre 254 255 MOINS SEC 3 Effectue PTR-39 256 LDA PTR 257 sBC £39 258 STA PTR 259 Bcs Mi 268 DEC PTR+t1 261 Mi CMP £%$DD 3 Changement de Bloc? 262 BNE M2 3 Non 263 LDA £%D8 3 Oui, alors on ajuste PTR 264 STA PTR 265 M2 LDY £8 3 Fichier effacé? 266 LDA ¢PTRD,Y 267 BEQ MOINS ; Oui, alors on passe au suivant 268 RTS 3 Non, alors tout va bien... 269 270 * Routine d’écriture nom de fichier 271 272 ECRIT LDY £8 3 Récupére longueur nom fichier 273 LDA ¢PTR),Y 274 AND £$F 275 STA EC2+1 3 et la sauve dans EC2+1 276 ECi INY 3 Affiche le nom & 1’écran 277 LDA (¢PTR),Y 278 ORA £%88 ; Bit 7 & 1 pour affichage 279 JSR COUT 286 EC2 CPY £8 281 BNE EC1i 36 GUY-HACHETTE a ee as Lgoeiges >t —~¢- 282 LDY CH 3 Récupére CH pour PREFIX 283 RTS 284 285 * Routine affichage normal 286 287 NORM LDY £39 288 Ni LDA <BASL),Y 289 ORA £988 3 Masque pour affichage normal 298 STA (BASL),Y 291 DEY 272 BPL Ni 293 RTS 294 295 * Routine pour commande 296 297 COM JSR ECRIT 3 Ecrit le nom 298 STY SCH 3 Sauvgarde CH pour le PREFIX 299 LDY £8 3 Inscrit le nom dans buffer IN 300 Ci LDA ¢BASL),Y 301 STA IN+5,Y 302 INY 363 CPY SCH 3 Jusqu’& SCH contient longueur 304 BNE Cl 305 LDA £%8D 3 Inscrit un retour chariot 346 STA IN+6,Y 307 RTS 308 Si vous ne possédez pas d'Assembleur, passez 4 la page 309 * Textes suivante pour saisir les codes du 316 programme STARTUP de Maurice CHAVELLI. 311 PREFIX ASC "PREFIX" 312 313 * Vecteur pour modification éventuelle, par exemple trai- 314 * tement complet pour les fichiers: RENAME, DELETE... mais 315 * le programme débordera du bloc. 316 317 HOOK JMP T18 facile des programmes (Basic et LM) insérés dans la revue. Bon nombre de nos lecteurs I'utilisent déja et s‘en félicitent. C'est a leur intention que nous publions le petit rectificatif ci-aprés, modification qui auto- rise la vérification des fichiers binaires sur 24 octets par ligne (au lieu de 16). Concerne BIN.CHECK.PRO et BIN.CHECK.DOS 515 NK = PEEK (ENTREE + 21): VTAB 12: PRINT "Nombre de colonnes — >"NK;: HTAB 26: INPUT "";X$: IF X$ >" THEN X = VAL (X$): ONX < >16ANDX <> 24ANDX < > 32GOTO5I5: POKE ENTREE + 21,X 517 IFSLOT = 3ORNOT SLOT THEN RETURN 2022 HOME . SIGN ATURE Cette disquette TREMPLIN MICRO permet une vérification i onlieaeenniaimaniieniiiiacaeeeanemaanael TREMPLIN MICRO 37 STARTUP (LES CODES) /TMF/STAR/C ,A$7888 ,L$B1FC* BSAVE NOM,A$7000,L$01FC 7886: AD BB C8 AY 88 85 88 8D 7F 71 85 18 AY B2 BD 7E 71 AY 76 BD 7D 71 28 BB = =4B5F 7018: BF 8@ 7A 71 F® @3 4C 3A FF AD 7D 71 85 69 EE 7D 71 EE 7D 71 AB 62 B1 BB AFDE 7038: 8D 7E 71 C8 B1 68 8D 7F 71 DB DB AD 7E 71 DB Dé AB G5 BY F3 71 99 88 82 FBLA 7648: 88 18 F7 26 58 FC 2@ 39 FB AS 88 28 SB FB AS 84 85 846 AP 76 85 B87 AS 18 ERIS 7068: 85 24 A9 AF 28 ED FD 28 DC 71 26 83 BE AY G2 85 22 AP BB 85 1B 28 58 FC 2048 7078: A2 16 28 8@ 71 20 BB 71 AS 25 C9 17 FB 83 28 BE FD AD 25 76 C5 1B F@ 83 «1875 7898: CA D@ E7 AY 81 85 1B AY 2B 85 846 AY 76 85 87 AY B2 26 SB FB AG 27 BI 28 = —PDP6 70A8: 29 3F 91 28 88 1@ F7 AD @@ C@ 18 FB 8D 18 C8 C9 AB DE 83 4C BB 78 C9 9B OBAEL 70C@: D@ @6 28 39 FB 4C 58 FC C9 95 F@ 3F C9 88 FA SB C9 8D DG D2 C8 BI 66 27) «C593 7808: F@ C9 D@ F@ 1E 4C F9 71 20 39 FB 28 58 FC AY AB AB 84 99 BB 82 8B 18 FA = 982F 76F8: AY AD 8D 85 82 28 DC 71 4C 83 BE AB 11 Bi 86 8D 7E 71 C8 B1 86 8D 7F 71 BAM 7108: 4C 11 76 2@ D@ 71 AS 1B CD 25 76 F@ BF 28 88 71 ES 25 AS 2509 18 DB 81 = 73ED 7128: Cé 25 20 8E FD 28 B8 71 4C A4 78 28 DB 71 Cé 1B DB G7 ES 1B FB 83 4C AY 4630 7138: 76 28 9E 71 Cé 25 AS 25 C9 B1 FA 83 4C Al 78 AY 18 85 25 CS 25 C46 25 FO DBI 7158: 1B 28 22 FC AS 28 85 @8 AS 29 85 89 ES 25 28 22 FC AB 27 Bi 68 91 28 8B FLIP 7168: 18 F9 38 DF C8 84 24 AY 82 26 SB FB 26 BB 71 4C Ad 76 43 68 88 76 BG BB 866328 7188: E6 1B 18 AS 846 69 27 85 86 98 82 ES 87 C9 FF DB B46 AP 84 85 B46 ES B7 AB ADL 7198: @@ Bi 66 F@ ES 68 38 AS 86 EY 27 85 66 BB 82 Cé G7 CP DD DB G4 AP DB BS 5347 71B@: 86 A@ 88 B1 86 FB E7 68 AB BB Bi 86 29 BF 8D CA 71 CB Bi 86 9 86 28 ED 8700 71C8: FD C@ @@ DB F4 A4 24 68 AB 27 Bi 28 89 88 91 28 88 18 F7 68 20 BB 71 84) C547 71E8: 18 A@ 68 B1 28 99 86 82 CB C4 18 DB FS AP BD 99 B46 G2 6B DB DZ2C5 C6 CP FICF 71F8: D8 4C E@ 78 8874 * Cette référence concerne la disquette TREMPLIN MICRO, mais vous pouvez donner 4 cette routine le titre de votre choix : STARTUP.C par exemple. CONSEILS AUX DEBUTANTS : Rappelons que, pour taper un programme en langage machine (sans assem- bleur), il suffit d’accéder au Moniteur par un CALL - 151, puis de taper textuelle- ment chacune des lignes ci-dessus. Lorsque cette tache — 6 combien épuisante — est terminée, sortir du Moniteur par CTRL-C (touche CTRL + C), puis taper le BSAVE NOM,A$7900,L$01FC indiqué en téte de programme. PRECAUTION : Avant de rentrer les codes d'un programme, s‘assurer que l’on a bien accés au DOS ou 4 ProDOS en essayant d'obtenir le catalogue de la disquette. Eventuellement (cela n'engage arien !) essayer de sauver la routine avant méme de I’avoir tapée. Rien n'est plus désagréable que de se retrouver devant un écran rempli de codes, aprés vingt minutes de frappe laborieuse... sans le DOS ! Attention ! Ne tapez surtout pas les valeurs indiquées en couleur, 4 la fin de chaque ligne : elles sont destinées aux utilisateurs de la disquette SIGNATURE et permettent de localiser trés rapidement les éventuelles erreurs de saisie (lire, & ce sujet le bas de la page précédente). SUCSRSSRHTN SAAS EA HHeeReeeAeEseNEeREs Reese eR eE AE ese ASE RAST SSeS SSeS OSE eL A AL ese AES ewoeseoeee ee 38 GUY-HACHETTE MATERIEL NESTOR GS RAM et 5 RAM PLUS === extensions mémoire pour Apple IGS === Connaissez-vous les produits d‘Applied Engi- neering ? et notamment GS RAM et GS RAM PLUS, extensions mémoire pour Apple lIGS ? Vous pensez sans doute que ces cartes sont encore réservées au marché américain ? Erreur : 'importateur existe et je Iai rencon- tré. Cest la société lyonnaise BREJOUX. Jajoute que le prix de vente de ces cartes est raisonnable (si mes renseignements sont bons, il correspond 4 un cours normal du dollar, ce qui est assez rare pour mériter d’étre signalé). Qui plus est, elles sont garanties 5 ans. Parfai- tement : vous avez bien lu. GS RAM PLUS OU GS RAM ? La premiére supporte des DRAM Chips de 1MO, permettant d’obtenir 6 MEGAS sur la carte prin- cipale. La seconde supporte des RAM Chips de 256 K. Elle est disponible en différentes versions (de 512 K 41,5 MEGA), mais une carte addition- nelle "piggy back” peut, en venant s‘enficher sur elle, étendre sa mémoire 4 8 MEGAS... reconnus par I’Apple IIGS. Naturellement, GS RAM et GS RAM PLUS sont compatibles avec tous les logi- ciels du GS, AppleWorks inclus, tout comme le Basic, ProDOS, DOS 3.3, PASCAL, C et CPM. POUR QUOI FAIRE ? Par exemple pour passer de 6900 4 25000 lignes en traitement de texte. GS RAM repousse les limites d'AppleWorks et vous offre, par-dessus le marché, un buffer d'impression qui vous auto- rise 4 continuer la saisie pendant |'impression. Capacité mémoire oblige: GS RAM auto- segmente vos fichiers importants pour les sauver sur deux disquettes ou plus. Pratique, non ? UN PATCH Craignant un retard dans la diffusion de la ver- sion AppleWorks 2.0 en Europe (ou sa non com- mercialisation), la Société Bréjoux avait lancé l'étude d'un patch sur la version frangaise 1.4. La premiére monture de ce programme supporte la version 2.0 américaine et la version francaise 1.4 ProDOS 8 et 16. Elle a la particularité de reconnaitre l'ordinateur lors de la configuration, ainsi que les diverses cartes d'extension : Ram- Works pour le /le, RamFactor pour le // Plus, lle et IIGS... GS RAM et GS RAM PLUS pour I’Apple lIGS. INSTALLATION Une notice on ne peut plus claire (en frangais) indique exactement la marche 4 suivre. A moins de s‘obstiner a la lire la téte en bas et les yeux fermés, il est impossible de se tromper. Quand la carte est en place et le GS en marche, il suffit de consulter le tableau de bord pour savoir que l'on dispose d'une jolie réserve de mémoire ! APPLEWORKS 2 EXPANDER La encore, I'utilisateur dispose d'une documenta- tion en francais... que je lui conseille de lire (ce que je n’ai pas fait... d'ou un patch intempestif de ma version d'AppleWorks... mais j'en possé- dais heureusement une copie). II convient de sui- vre exactement les instructions, mais c'est enfantin. Précision utile : le support technique de la Société Bréjoux n'est pas avare de préci- sions éventuelles. Documentation et renseignements : Société Bréjoux — J.-M. BRESARD 29, rue de Montribloud 69009 LYON — Tél. 78.36.52.69. Threanr iar ace, : | if Cette routine en langage machine vous permettra de travailler avec la date et I'heure | | dans vos programmes en Basic. Pour qu'elle fonctionne correctement il est absolument nécessaire d’avoir PRODOS 8 en mémoire. Votre programme Basic devra contenir les lignes suivantes : 5 PRINT CHR$ (4);"-HORLOGE.GS” 10 DA$="00/00/00": Rem Initialisation de la variable qui contiendra la date 20 HE$="00:00": REM Initialisation de la varia- ble qui contiendra l'heure Marc BROCHA 30 Rem Ces deux réservations sont indis- pensables 40 & DA$,HES 50 PRINT “Nous sommes le ";DA$ 60 PRINT "HEURE = “;HE$ Vous pourrez répéter la ligne 40 autant de fois que vous le désirerez dans votre programme. COMMENT CA MARCHE ? Le programme Assembleur retient les deux adresses des variables DA$ et HE$. Ensuite, appel est fait a la routine GET TIME ($82) de PRODOS qui place la date et I'heure en mémoire de la maniére suivante : DATE 49041 ($BF91) 7TLe6|{[5][4]3]2]{i1]Jo] 49040 ($BF90) Lz ,e|[5|4|][3]2]1 |¢ Année Mois Jour TIME 49043 ($BF93) 7TLleo|[s5|[4]3]2]}]i fa 49042 ($BF92) Flejslapalziilte Heure Le reste du programme n'est qu'un décodage de ces données et une conversion au format texte de maniére 4 entrer dans DA$ et HES. Remarque : II est primordial que DA$ ait au moins une longueur de 8 caractéres et HE$ une longueur de 5. 40 GUY-HACHETTE i calatatahatiiadatatallal alata alee eee ell LE td 1 SHEE + 2 * * 3 * HORLOGE.GS (PRODOSB UNIQUEMENT) * 4 * * 5 tees SE SHH EEE 6 * * z * Routine utilitaire permettant |‘utilisation * 8 * de I‘horloge interne du 2 GS. * 9 * Cette routine est appelable par Basic : * 10 * 10 DA$="00/00/00" :HES="00:00" * ilo 20 & DA$ H

Showing the first 100000 of 199628 characters.

mp.ls