Skip to main content

tremplin micro newsletter issue 13

  • PublicationApple Periodicals
  • Pages78
  • Sourcetremplin_micro_newsletter_issue_13.pdf
← Magazines tremplin micro newsletter issue 13
/ 78
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
tremplin BIMESTRIEL Le numéro : 33 F Abonnement d'un an : 190 F (6 numéros) Tous nos prix sont indiqués TTC. EDITIONS J! 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 & gloner, dans plusieurs magazines, les renseignements concernant sa machine, ne bénéficient pas du ‘numéro de Commission Paritaire, et pos davantage des tarifs pos- toux réduits. um TREMPLIN MICRO — Bimestriel — Cest une publication des Editions JIBENA, 4, rue de la Cour-des- Noves, 75020 PARIS — S.A. au NA capital de 3600000 F — Imprimé por CITE-PRESS/PARIS — Dépat légal & la date de parution — Ins- ription @ la Commission Paritaire des Publications et Agences de Presse : en cours — Directeur de la Publication: Guy-Clément COGNE — Diffusion N.M.P.P. Avec la collaboration de : Argos, Nicole Bréaud-Pouliquen, Robert Cazenave, Maurice Chavelli, Marcel Cottini, Francois Gallet, Madeleine Hodé, Yvan Koenig, Nestor, Pierre Privat et Clément Renard, SOMMAIRE A BATONS ROMPUS 2 TRANSITION (de HGR & HGR2) . 3 DAMIER HGR (en marge de TRANSITION) . 8 VISUALISER UNE POLICE GRAPHIQUE .. 13 IMPRIMER UN GRAPHIQUE .. . 18 FICHIER DIRECT Ecrire, remplacer, rechercher .............. 7 RECHERCHE D'UNE VARIABLE DANS UNE AUTRE ................0 0000000 20 LE SYSTEME D’EXPLOITATION PRODOS (M. COTTINI) A étudier pour mieux utiliser ce must Apple .............0.ccecceeeeseee 21 ASSIMIL et L'ESPAGNOL 30 BRICO (pratique pour des tas de calculs) . 31 AUX.DRAW (une table de formes en mémoire auxil 41 CADRES 40/80 COLONNES (toujours eux !) ........... woe AQ QUESTIONNAIRE (didactique simple, mais intéressant) ................... 51 LA SOURIS ET L'ASSEMBLEUR (Francois GALLET) 55 DESASSEMBLAGE (initiati 59 EFFETS GRAPHIQUES .. 61 TURBO PASCAL DE BORLAND . 63 INITIATION —osseRVATION (Grophique) ..........--66.-.000.. 65 MAU BASIC constits AUX NEOPHYTES «2.00.0. .0.cccccoee, n LES LIVRES ooo cece ecccccceesssereneaeeees 16,40,48,58,62,74,76 YVAN KOENIG REPOND A NOS LECTEURS «0.00.0... .ccceeeeeeeevevee 57,72 AAPPLEIIGS — ADRESSAGE DYNAMIQUEDUGS.................. 67 suuuuuauanauessesensusesssnssnseeseunueussenssususesesnunennoonsnssasssessnensusssnecezseresessessennes TREMPLIN MICRO A BATONS ROMPUS Que de déceptions chez les premiers possesseurs d'un Apple //GS ! Je ne compte plus les $.0.5. téléphoniques et les lettres plus ou moins virulentes, soulignant ave larticle paru dans le numéro 11 de Tremplin Micro n‘a pas été étranger 4 Ia décision d'un achat que déja l'on regrette... Heureusement, du moins pour l'avenir de la machine, les réactions positives se révélent nettement plus nombreu- ses que les premiéres, mais émanent généralement d'utilisateurs considérés comme particuligrement compétents : programmeurs, membres de clubs de micro-informatique, applemaniaques inconditionnels. Reste que le mal existe. APPLE aurait certainement pu le prévenir. Le guérir se révélera plus difficile et laissera en tout cas des séquelles. Premier probléme : un certain nombre de personnes, généralement mal infor- mées, ont payé leur Apple //GS au prix fort alors que tous les membres du Club Apple (adhésion gratuite) pou- vaient bénéficier, pendant la plus grande partie du mois de décembre, dune cemise de trente pour cent (non seulement sur le GS, mais sur la plu- part des produits de la marque, Apple Mic, excepté). Une condition : étre membre du Club au 1*" décembre 1986. Une autre (exigée par des revendeurs pointilleux) : avoir passé la commande pendant lo période effectivement con- cernée par la promotion... et non avant. Tant pis pour les imbéciles qui, accordant toute leur confiance @ lo marque avaient commandé leur GS immédiatement aprés l’annonce de sa commercialisation | Personnellement, joi conseillé & tous mes correspon- dants de ne point céder aux pressions de leur concessionaire et d’exiger LEUR remise de trente pour cent quelle que soit lc date d'enregistrement de la commande. Il y a eu des cris et des grincements de dents et je connais actuellement des mécontents jurant, mais un peu tard, qu'on ne les prendra jamais plus 4 ce petit jeu stupide. Un Apple /ICSs, mais pour quoi faire ? Je vais étre dur, mais franc, comme toujours : si vous avez acheté ou com- mandé un GS sans savoir pourquoi, ne venez pas vous plaindre de la pauvreté de sa documentation ou de l'absence de logiciels utilisant toutes les ressour- ces du 65C816. Bien entendu, si vous avez décidé cet achat simplement pour le plaisir de disposer, chez vous, du dernier produit a l'enseigne de la POMME, libre & vous. Je préciserai méme que je comprends partaitement cette démarche. Mais alors, prenez patience et attendez de connaitre votre nouveau jovet avant de lui découvrir tous les défauts possibles. Des qualités, il en posséde votre Apple IGS, mais elles se dissimulent pres- que toutes derriére une compatibilité qui pourrait bien étre considérée, plus tard, comme pénalisante. Les logiciels viendront en leur temps, mais les auteurs ne se bousculent pas au portillon. Je vous promets que Tremplin Micro leur ouvrira toutes grandes ses colonnes pour parler de leurs réalisations. || est certain que \'Apple 1IGS permettra aux program- meurs d'aller plus loin, mais seulement dans la mesure ou ils accepteront de passer par des langages plus évolués que le Basic Applesoft : le C, par exem- ple, et I'Assembleur. Les OUTILS mis 4 leur disposition par le GS autorisent des logiciels dignes de ceux de Mac. Littérature... pauvre Mais pour preston une machine aussi complexe que |'Apple //GS, il convient de posséder de bons manuels de références, avec si possible de nombreux exemples. Apple propose bien son INSIDE APPLE IIGS (plus de 3000 pages de documentation et 8 dis- quettes)*, mais ne comptez pas sur ce monument pour vous fournir des EXEMPLES. Or, je le sais, c'est ce qu'attendent tous nos correspondants. Je rappelle & ce propos que deux ouvrages doivent paraitre au PSI (Assembleur de |'Apple IIGS et LA BOITE A OUTILS DE L’APPLE IIGS)... mais j‘ignore 4 quelle date. J'admire dailleurs les auteurs qui se sont atte- lés & une telle besogne : ce n'est pas gagné d’avance ! Voeux pieux Alors, le GS ? Personnellement, je sou- haite qu'il ne connaisse pas le sort de ‘Apple Ji! (le meilleur, d'aprés ceux qui en sont encore les heureux utilisateurs), mais plutét celui de I'Apple //, son illustre ancétre. J’aurais aimé que Microsoft (ce sont des gens qui ignorent totalement Tremplin Micro... sans doute trop petit pour les intéresser) et Apple se mettent d'accord pour nous concocter, sur le GS, un vrai Basic, ressemblant par exemple 4 celui du Mac. Le langage C me séduit, mais le temps de compilation est long... trop long. J‘aimerais aussi avoir ProDOS 16 en ROM (je ne suis pas opposé 4 sa présence sur une carte) cor sa durée de chargement est également interminable. Quant au reste — et notamment les pro- grammes —, rassurez-vous : ils arrivent, mais accordez-nous le temps de com- prendre la machine et celui de I'alimenter en instructions comprises par le 65€816 ! GH. * VIF — 5 rue de Bossono — 75116 PARIS (2000 F TTC). 2 GUY-HACHETTE DOS 3.3 ProDOS TRANSITION ...0001cx: [c| ERTAINS jeux utilisent, dans leur présentation graphique, un trés élégant scrolling Maurice CHAVELLI des pages graphiques. Je me suis demandé s'il était facile 4 réaliser. Dans cet arti- cle, je vous propose deux versions : © Lapremiére est tres économe en espace mémoire, mais n'est pas trés rapide. * Ladeuxiéme se révéle beaucoup plus gourmande, mais elle est deux fois plus rapide que la précédente. Bien sdr, il n'est pas interdit de concevoir une formule encore plus performante ! Mais je vous promets de longues réflexions sur l'adressage des pages graphiques de votre Apple chéri. SCROLL.DEMO vous présente les deux versions avec des écrans graphiques sommai- res. Libre @ vous de remplacer ceux-ci par vos chefs-d’ceuvre. Il est facile de modifier les programmes pour obtenir un défilement continu ou d'utiliser N pages. A vos claviers ! SCROLL.DEMO 1 FOR C = 896 TO 916: READ A%: POKE C,A%: NEXT 4047 2 POKE 232,128: POKE 233,3 1E81 3 DATA 1,4,4,0,54,54,54,110,34,36,36,108,54,54, 54,118,36,36,36,36,8 78FA 4 SPEED= 108 193A FORME 5S TEXT : HOME : POKE - 16197,8 8E7A 6 VTAB 8: HTAB 3: PRINT "Ce programme est une d Les lignes 1 & 3 établis- sent une table de for- me(s) sommaire (seule- émonstration": PRINT : PRINT : HTAB 7: PRINT “des routines de transition": PRINT : PRINT : £1) a ; HTAB 9: PRINT “de pages graphiques HGR." FFB2 dee ? PRINT : PRINT : PRINT : PRINT "Nous allons co Si vous avez la chance de mmencer par créer 2 écrans" FOEF coneler ta dean coe @ FOR C = 1 TO 500: NEXT 8207 leur, voustabilerdres'des 9 HGR2 : HCOLOR= 3: ROT= 8: SCALE= 1 9495 ion dé Couleur diffé- 19 FOR X = 6 TO 272 STEP 16: FOR Y = @ TO 184 ST rente par le décalage EP 14 6501 horizontal (1 point) de la 11 DRAW 1 AT X,Y: NEXT Y,X 3408 forme. 12 FOR X = 8 TO 264 STEP 16: FOR Y = 7 TO 177 ST Nous vous donnons, plus EP 14 i713 loin, un moyen de tracer 13 DRAW 1 AT X,Y: NEXT Y,X 3408 un peu plus rapidement 14 HGR ; POKE - 16302,0 E1A5 un écran damier, mais ce 15 FOR X = 1 TO 273 STEP 16: FOR Y = @ TO 184 ST n’était pas le propos de EP 14 8A03 Maurice Chavelli. 16 DRAW 1 AT X,¥: NEXT Y,X 34068 TREMPLIN MICRO 3 TRANSITION VOS PROGRAMMES Page 3 SCROLL.DEMO Page 4 SCROLLI.S Page 5 SCROLL2.S Les débutants pourront passer directement a la page 7. SCROLL.DEMO (suite) FOR X = 9 TO 265 STEP 16: FOR Y = 7 TO 177 ST EP 14 DRAW 1 AT X,Y: NEXT Y,X FOR C = 1 TO 108: NEXT : HOME TEXT : VTAB 15: HTAB 8: PRINT “Voici la vers on n® 1...": FOR C = 1 TO 1600: NEXT PRINT CHRS (4)"BLOADSCROLL1.c" POKE 49232,8: POKE 49239,8: POKE 49234,@ CALL 768: HOME TEXT : VTAB 15: HTAB 8: PRINT "Voici la versi on n* 2..." POKE 238,32 FOR X = 1 TO 273 STEP 16: FOR Y = 8 TO 184 ST EP 14 DRAW 1 AT X,Y: NEXT Y,X FOR X = 9 TO 265 STEP 16: FOR Y = 7 TO 177 ST EP 14 DRAW 1 AT X,Y: NEXT Y,X PRINT CHRS (4)"BLOADSCROLL2.C" POKE 49232,8: POKE 49239,@: POKE 49234,8 CALL 768 FOR C = 1 TO 1008: NEXT : HOME : TEXT : SPEED = 255 PROGRAMME SOURCE Assemblage : ProCODE WONAUEWN SCROLL1.S HEE EERE REE * Transition V1 # RHEE AAR E EEE EES * Cette version effectue la transition en 26s PTR = $8 } pointeur de ligne HBASL = $26 HBASH = $27 HPAG = $ES HPOSN = $F417 ORG $308 * Transfert partie de la routine HPOSN * pour améliorer la vitesse d’exécution BCL LDX £968 3 installe un RTS 4 la fin STX $378 LDX £32 3 c’est parti pour 33 octe LDA HPOSN,X STA HPOS ,X DEX BPL BCL ts GUY-HACHETTE if 25 t 26 4 * Début du programme 5 27 f 0318: A2 68 28 LOX £0 ; premiére ligne 0312: A? 28 29° ~=BCLX LDA £%28 3 sélectionne la page 1 r 6314: 85 ES 38 STA HPAG $ 0316: 80 28 63 «31 STA MEM+2 j adresse de la ligne @ i 0319: AP 68 32 LDA £6 @31B: 8D 2A 83 «8633 STA MEM+1 4 Q31E: Ag 81 34 LDA £1 ; premiére ligne i @320: 85 68 35 STA PTR ; initialise le pointeur $ @322: 26.57 63 36 DEBUT JSR HPOS j calcul adresse de Ja ligne i 6325: Ag 27 37 LDY £39 ; c’est parti pour 4@ octets iq 0327: Bi 26 38 BCLY! LDA <¢HBASL),Y 3; transfert d’un octet t 0329: 99 88 48 39 MEM STA $8,Y t 632C: a8 48 DEY ; un de moins i 632D: 16 FB 41 BPL BCLY1 3 le dernier? t @32F: AS 26 42 LOA HBASL j sauvegarde des coordonnées t 6331: 8D 2A a3 43 STA MEM#+1 A 0334: AS 27 44 LDA HBASH 5 0336: 8D 28 63 «45 STA MEM+2 t 0339: E46 68 46 INC PTR j une ligne de plus t 633B: AS 68 47 LDA PTR t 33D: CP Ce 48 CMP £192 3 la dernié@re? i @33F: D@ E1 49 BNE DEBUT } mon L 8341: 66 Eé Se ASL HPAG 3 sélectionne la page 2 } 0343: 6A Si TXA t 0344; 2857 83 52 JSR HPOS j transfert de la ligne X... $ 0347: AB 27 53 LDY £39 r 0349: BI 26 54 BCLY2 LDA ‘HBASL),Y t @34B: 99 D8 3F 55 STA $3FD0,Y t 634E: 88 56 DEY t O34F: 16 FB 5? BPL BCLY2 it @351: E8 58 INX j une ligne de plus i 6352: E@ Ce 59 CPX £192 3 la derniére? t 0354: De BC 68 BNE BCLX } non ] 8356: 48 61 RTS j oui => retour BASIC 62 HPOS OFB t SCROLL2.S ; 1 RRM HHH EHH ER f 2 * Transition V2 * 4 3 HERRERA E REE AER ERE 4 t ProCODE - * Cette version effectue la transition en 13s } 7 PTR = $8 3 pointeur de ligne t 8 HBASL = $26 9 HBASH = $27 f 18 HPAG = SES t 11 HPOSN = F417 t 12 ; (suite page 6) { TREMPLIN MICRO 5 1 Bol 6308: 6382: 0384: 8386: 8389: @38B: @36E: 316: 0313: 8315: 8318: @31A: @31C: @31E: 6321: 324: 0326: 8328: 632B: @32E: 0338: 8332: 8334: 0336: 8338: 833A: 33D: 8348: 8341: 6343: 8345: 0347; 6349: 634B: Q34E: 8358: 8353: 8355: 8357: 835A: @35B: @35D: @35F: 8361: 8363: 8365: 06 86 Ag 85 28 as 20 Aa Bi 99 88 16 £6 AS cy oe 68 43 83 83 3F * Création sous-programme en $6000 BCL BCLX SCROLL2.S (suite) ORG 308 LDA £$26 ; STA HPAG LDA £0 ; STA INDi+1 LDA £968 STA IND1+2 LDA £$A2 ; JSR INDI LDA £$27 JSR INDI Loa £1 ; STA PTR LDA £$BD ; JSR INDI JSR IND DEC PTR LDA £$9D ; JSR INDI JSR IND INC PTR INC PTR LDA PTR CMP £192 BNE BCL LOX €@ LDA FIN,X ; JSR INDI CPX £7 BNE BCLX * Début du programme DEPART BCLY ASL HPAG LDA £8 STA PTR JSR $6008 LDA PTR JSR HPOSN ; LDY £39 LDA (HBASL) ,Y STA $3FD8,Y DEY BPL BCLY INC PTR ; LDA PTR CMP £192 ; BNE DEPART ; RTS sélectionne la page 1 pointe en $6068 installe un LDX £%27 ligne 1 installe un LDA installe un STA la derniére? non installe la fin page 2 ligne @ monte d’un cran transfert ligne 191 une ligne de plus la derniére? non GUY-HACHETTE 67 * Routine pour la création 68 0366: AS 48 69 IND LDA PTR 0368: 28 17 F4 76 JSR HPOSN 3 calcul ligne A @36B: AS 26 re LDA HBASL } Sauvegarde... @36D: 28 72 63 72 JSR INDI 0378: AS 27 73 LDA HBASH 0372: 8D 68 68 74 ~INDI STA $6888 @375: EE 73 63 75 INC INDI+1 0378: D8 83 76 BNE IND2 O37: EE 74.83 77 INC IND1+#2 ig 37D: 48 78 IND2 RTS ~~ rea @37E: CA 88 FIN HEX CA 3 DEX O37F: 38 81 HEX 30 ; BMI 8380: 89 82 HEX 63 6381: 40 83 HEX 4C 3 UMP $6682 8382: 62 84 HEX 62 8383: 46 85 HEX 68 8384: 48 86 HEX 68 3 RTS SCROLL1 A Ecriture sur disquette : BSAVE SCROLLI.C,A$300,LS57 0308: A2 40 BE 78 83 A2 20 BD 17 F4 9D 57 3 CA 19 F? a750 Sile langage 8310: A2 88 AP 28 85 ES BD 2B 83 AP BB BD 2A 3 AP O1 BESE machine et 0320: 85 68 26 57 63 AB 27 BI 26 99 BB BG 88 18 FB AS E973 l'assembleur ne 8338: 26 8D 24 63 AS 27 8D 2B 43 ES BB AS BB C9 CB DA 8958 vous inspirent 0348: E1 86 Eé 8A 20 57 83 AB 27 B1 26 99 DB 3F 88 18 Azar pas, contentez- 9350: F8 E8 E@ CA DB BC 60 8Céc vous de recopier ces routines ala suite d'un SCROLL2.¢€ BSAVE SCROLL2.C,A$300,L$85 CALL-151. Les caractéres 0308: AY 28 85 ES AY BG ED 73 83 AP 48 BD 74.83 AP AZ 9F38 HEXA indiqués 9310: 28 72 83 AY 27 28 72 83 AP G1 85 68 AP BD 20 72 3429 en bout de ligne 0320: 83 26 66 3 Cé G8 AP 9D 28 72 03 280 66 83 ES OB «IAC sont destinés au 6338: Eé @8 AS 68 C9 CO DB E4 A2 OB BD 7E 43 26 72 83 FCaD contréle de la 0340; E8 EG 67 D@ F5 86 ES AD O@ 85 88 20 6 69 AS BB FRED saisie (contréle 9358: 26 17 F4 AB 27 BI 26 99 DG 3F 88 18 F8 ES BB AS 1D94 facile avec votre 0368: 88 C9 CO DB ES 48 AS G8 26 17 F4 AS 26 20 72 03 Ea disquette 8370: AS 27 8D 68 468 EE 73 03 DG 63 EE 74 63 68 CA 38S 7AF SIGNATURE). 8388: 63 4C 42 48 40 agit DAMIER 9308: AZ 88 86 09 86 18 AI BB 85 B& AP BB 85 7 AP 11 GBFF2 voir page 8 8316: 85 88 AS 18 4A 98 86 AD BB B5 B46 C46 BB AS BS AG cand €328: 87 AS 89 28 11 F4 AG 63 A2 4B 20 SD FSA 18 18 7a 6338: 65 86 85 84 98 82 E46 87 C4 BB 18 E1 AS 89 49 88 45a 8348: 85 89 ES 18 AS 18 C9 18 98 BC 48 36 36 36 6E 24 GEA BSAVE DAMIER, @358: 24 24 6C 36 36 36 SE 24 24 24 24 08 B154 A$300,L$5C TREMPLIN MICRO 7 , ae. ee NESTOR DAMIER HGR [L A FORME ? un simple carré. Le programme : aussi clair que possible (le probleme pourrait étre traité autrement), pour étre compris par des utilisateurs peu habitués au langage machine. L'adresse horizontale du point initial de chaque carré est sur deux octets (elle est stockée en $6-7). ‘adresse verticale (un seul octet) est mémorisée en $9. On utilise par ailleurs deux pointeurs : le nombre de carrés par ligne, décrémenté jusqu’d @ inclus (il est stocké en $8) et le nombre de lignes (dans la case mémoire $18). Telle qu'elle se présente, la routine fonc- tionne aussi bien avec le 6502 qu‘avec le 65C02... ou le 65€816 de l'Apple IIGS. Vous remar- querez qu'elle n'utilise pas la pile et ne cherche pas non plus 4 tirer parti des registres. La couleur du damier est modifiée par la ligne Basic 11, en décalant toutes les adresses horizontales d'un point (POKE 775,0 et POKE 792,8 ou bien POKE 775,1 et POKE 792,9). Vous trouverez page 10 le listage de DAMIER] : méme longueur, mais l’affichage des carrés se fait par colonne au lieu de s'effectuer par ligne. XDRAW (OU DRAW): En Basic, pour utiliser XDRAW ou DRAW, il est nécessaire d’indiquer le ~~ numéro de la forme dans la table, et aussi de l’adresse de cette table 4 l'APPLE (pointeurs $E8-E9). En langage machine, il suffit de placer dans X la partie basse de l’adresse du premier octet de la forme et dans Y sa partie haute. Les pointeurs $E8 et E9 ne sont pas utilisés. Par contre, avant de tracer une forme, il est indispensable de positionner le curseur ($F411). DAM.DEMO 1 PRINT CHR$ (21): HGR : HGR2 : TEXT : HOME 727E 3 PRINT CHR$ (4)"BLOAD DAMIER" D49E 5 HCOLOR= 3: ROT= @: SCALE= 1 D7cB 7 POKE 49232,0: POKE 49234,@: POKE 49237,@: POK E 49239,6 8728 9 POKE 230,64: CALL 768: REM TRACE HGR2 664F 11 POKE 775, ABS ¢ PEEK (775) - 1): POKE 792,8 + PEEK (775) 6c14 Pou SuIBRIE ‘Ga BaRler 13 POKE 49232,@: POKE 49239,8: POKE 49236,0: POK plus compact (comme E 238,32 31E3 celui tracé par le pro- 15 CALL 768: REM TRACE HGR 8331 gramme de Maurice CHA- 17 IF PEEK (49152) < 128 THEN 7 c24c VELLI, page 3), il suffit de 19 POKE 49168,8: PRINT : TEXT osp8 majorer le nombre de 21 VTAB 23: PRINT "(MENU DE DISQUETTEctG ";: GE lignes : ($346 : C9 1B) et T R$: PRINT : HOME A4DB de n‘ajouter que 7 pts par 23 IF R@ = "M" THEN PRINT CHR (4)"RUN MENU,D1 ligne : ($33E : 6907). " 259D sunesenaseussosseeenscce 8 GUY-HACHETTE 300: 302: 304 : 306 : 308 : 30A: 30C: 310: 312: 314: 315: 317: 319: 3IB: 31D: SIF: 321: 323 : 326 : 328 : 32A : 32D: 32F : 330 : 332: 334 : 336 : 338 : 33A : 33C : 33E : 340: 342: 344: 346 : 348 : 34A: 34B: 354: A2 86 86 Ag 85 Ag 85 Ag 85 AS 4A Ag 85 cé A6 A4 AS AG A2 Ag 18 65 85 £6 cé 10 AS 69 85 £6 AS co 36 36 og 09 18 Go 06 oo o7 W 08 18 a8 06 08 07 09 11 F4 03 4B 5D Fé 10 06 06 07 os EI a9 as 18 18 18 BC 36 36 6E 36 6E 24 * Hor Pthor Ver Ptver Hposn XDraw * * BCL3 8 SEU5 TESS HG0e Vous wn-@ NNUNNN ALOn= 26 BCLI £8S2S3sy 35 36 37 38 39 =BCL2 40 4) 42 43 44 45 46 47 48 49 50 * 51 24 24 24 6C 24 24 24 OG 52 EQU EQU EQU EQU EQU EQU ORG LDX STX STX LDA STA LDA STA LDA STA LDA LSR BCC LDA STA DEC LDX LDY LDA JSR LDY LDX JSR LDA cLC ADC STA BCC INC DEC BPL LDA ADC STA INC LDA CMP BCC RTS TABLE DE FORME(S) : UN CARRE 36 HEX $6 $8 $9 $18 $F411 $F65D $300 £$00 Ver Ptver £$00 Hor £$00 Hor+1 £$11 Pthor $18 BCLI £$08 Hor Pthor Hor Hor+1 Ver Hposn £$03 £$4B XDraw £$10 Hor Hor BCL2 Hor+1 Pthor BCLI Ver £$08 Ver Ptver Ptver £$18 BCL3 * [DPAIMIIERR (ASSEMBLAGE PROCODE) ; Position horizontale de la forme. ; Nombre de formes par ligne. Position verticale de la forme. Nombre de rangées. ; Positionne le curseur. ; Trace la forme (X,Y). ; Initialisation. Nombre de formes horizontales. ; Nombre de lignes ? ; Pair ou impair ? ; Pair : on saute. ; Sinon 8 de plus horizontalement ; que l'on stocke ; et une forme de moins. ; Partie basse dans X. Partie haute dans Y. Position verticale dans A. Et curseur en place. Adresse du premier octet de la forme dans Y,X. XDraw fait le reste. Plus 16 horizontalement. Annulation de retenue. Sans retenue : saut. Partie haute éventuelle. Une forme en moins. ; Suite jusqu'd @ inclus. ; Position verticale majorée ; de 8 (damier normal). ; Ne pas oublier le nombre ; de lignes. ; Est-il égal a 24 ? Inférieur : encore une. Sinon c'est terminé. VOIR LES CODES: DANS LE BAS DE LA PAGE7. — (voir DAMIER? page suivante) 3636366E2424246C3636366E2424242400 TREMPLIN MICRO 300 : 302 : 304 : 308 : 30A: 30C : 316 : 312: 317 : 319 : 34B : 354 : 36 36 6 1 2 3 4 5 6 7 8 9 16 oo u 06 12 oo 13 07 14 22 15 8 16 oo 17 09 18 a8 19 20 65 21 G8 22 09 23 24 18 25 06 26 07 27 09 28 11 Fa 29 03 30 4B 31 5D F6 32 a9 33 34 19 35 69 36 18 37 38 39 18 40 DF 4 06 42 43 os 44 06 45 02 46 07 47 68 48 C2 49 50 51 52 53 36 36 6E 24 36 6E 24 24 54 * DAMIER1 * Hor Pthor Ver Ptver Hposn XDraw * * BCL2 BCLI 24 24 6C 24 24 0G EQU EQU EQU EQU EQU EQU ORG LDA STA LDA STA LDA STA LDX STX LDA LSR BCC LDA STA INX STX LDX LDY LDA JSR LDY LDX JSR LDA CLC ADC STA LDX INX INX CPX BCC LDA CLC ADC STA BCC INC DEC BPL RTS TABLE DE FORME(S) : UN CARRE 36 HEX 3636366E2424246C3636366E2424242400 Pour utiliser DAMIERI, modifiez la ligne 3 de DAM.DEMO, mais surtout sa ligne 11, qui devient : POKE 769, ABS(PEEK(769) — 1) (ASSEMBLAGE PROCODE) $6 ; Position horizontale de la forme. $8 ; Nombre de formes par ligne. $9 ; Position verticale de la forme. $18 ; Nombre de rangées. $F411 ; Positionne le curseur. $F65D ; Trace la forme (X,Y). $300 £$00 ; Initialisation. Hor £$00 Hor+1 £$22 ; Nombre de formes horizontales. Pthor £$00 ; Initialisation verticale. Ver Pthor ; Rangée ? ; Paire ou impaire ? ‘ BCLI ; Paire : on saute. £$08 ; Sinon 8 de plus verticalement Ver : que l'on stocke ; et plus une rangée. Ptver ; Nombre de lignes stocké. Hor ; Partie basse dans X. Hor+1 ; Partie haute dans Y. Ver ; Position verticale dans A. Hposn ; Et curseur en place. £$03 ; Adresse du premier octet £$4B ; de la forme dans Y,X. XDraw ; XDraw fait le reste. Ver ; Position verticale majorée £$10 ; de 16 (damier normal). Ver Ptver ; Nombre de lignes dans X. ; On écrit 1 ligne sur 2. £$18 ; Est-il égal a 24 ? BCL] ; Inférieur : encore une. Hor ; On avance horizontalement. ; Annulation de la retenue. £$08 ; Plus une forme. Hor ; Ecriture partie basse. S ; Pas de retenue : saut. Hor+1 ; Sinon incrém. partie haute. Pthor ; Une forme en moins BCL2 ; Siplus grand ou égal @... ; Sinon c'est termine. Pour sauver ce pi me: BSAVE DAMIER1,A$300,L92 10 GUY-HACHETTE DAMIER RAPIDE 10 PRINT CHR$ (21): HGR2 : HCOLOR = 3: PRINT CHR$ (4)"BLOAD DAMRAP” —_ SSS SSS 15 CALL 768: GOSUB 45 ; 5 20 FOR! = 0 TO 127: POKE 800,1: CALL 768: GOSUB 45: Essayez aussi cette routine. Vous consta- NEXT terez qu'elle n'utilise pas XDRAW... mais Vaffichage (simulé) d'un caractére gra- 25 HOME : TEXT phique : le carré. Celui-ci est représenté 30 VTAB 22: PRINT "(M)ENU DE DISQUETTE ";: GOSUB 45 par une série de $7F. Dans la démo, on ——35_ IF R§ = "M" THEN PRINT CHRS (4)RUN MENU, D1" remplace successivement la valeur $7F . ar des valeurs allant de $0 4... $7F 40) HOMES END rat la production de divers écrans. (On 45 CALL - 198: GET RS: PRINT:IF R$ <I> CHRS (27) THEN peut interrompre le programme en pres- RETURN sant ESCAPE). 50 POP: GOTO 25 0 + BAMRAP (AssemBLAGe PROCODE) 1 * 2 VT EQU $18 ; Pointeur ligne. 3 WNDWDTH EQU $21 ; Largeur fenétre. 4 WNDBTM EQU $23 : Bas de fenétre. 5 BASL EQU $28 ; Adresse basse colonne 1. 6 BAS2L EQU $2A : Pointeur ligne de destination. 7 HPAG EQU $E6 : Drapeau page HGR ($20/49). 8 VTAB EQU $FC22 : On utilisera VTAB +2. 9 + 10 ORG $300 1 * 300: A2 ag 12 LDX £800 ; Registre X = @. 302: 8A 13° BCL4 TXA ; X passé dans A. 303: 85 18 14 STA VT ; Pointeur ligne. 305: 20 24 FC 5 JSR VTAB+2 ; Positionnement. 308: AG GG 16 LDY £$00 ; Registre Y G zéro. 30A: AS 28 17 BCLS LDA BASL ; Transfert de la partie 39c: 85 2A 18 STA BAS2L : basse, puis de la partie 30E: AS 29 19 LDA BASL+1 ; haute, mais aprés, 310: 29 G3 20 AND £$03 : AND 66000011 et ORA $E6 312: G5 E6 21 ORA HPAG : ($7 devient $43... 314: 85 2B 22 STA BAS2L+1 ; $4 devient $4G, etc.). 316: AS 18 23 LDA VT : Pointeur ligne dans A. 318: 4A 24 LSR ; Bit @ dans la retenue. 319: 90 G2 25 BCC BCLI ; SiC = @ (pas de retenue), 31B : E6 2A 26 INC BAS2L ; on n'incrémente pas. 31D: A2 oO 27—~«~BCLI LDX £$00 ; X = 1: compteur. 31F : AQ 7F 28 BCL2 LDA £$7F ; Carré plein = 8 fois $7F. 321: 91 2A 29 STA (BAS2L),Y ; Ecriture HGR ou HGR2. 323: 18 30 CLC ; Annulation de la retenue. 324: AS 28 31 LDA BAS2L+1 : Partie haute dans A 326: 69 G4 32 ADC £$04 : majorée pour le point 328: 85 2B 33 STA BAS2L+1 : suivant. 32A: E8 34 INX : Ne pas oublier pointeur. 328: E¢ G8 35 CPX £$08 ; Est-on a8 ? 32D: 9 FO 36 BCC BCL2 ; Non : encore un point. 32F: C8 37 INY ; On trace un carré sur 330: C8 38 INY ; deux donc ¥ + 2. 331: C4 21 39 CPY WNDWDTH ; A-t-on terminé la ligne ? 333: 90 DS 40 BCC BCL3 ; Non: passons 4 l'autre. 335: A6é 18 4) LOX VT ; VT dans X. 337: E8 42 INX ; VT = VT +1. 338: E4 23 43 CPX WNDBIM : Est-ce la derniére ligne ? 33A: 9 C6 44 BCC BCL4 ; Non: encore une autre. 33C: 60 45 RTS ; Oui: termine ! BSAVE DAMRAP,A$300 ,L$3D (Suite page 12) TREMPLIN MICRO W [————————— DAMIER.VC Essayez enfin cette derniére routine, plus compacte (26 octets), mais proche de la précédente. Constatez, grace 4 la boucle de la ligne 30 (on peut en sortir par ESCAPE) l'importance de la valeur initiale de X ($304). Peut-étre est-il pos- sible de faire encore plus court : rien ne vous interdit d'essayer ! Remarque: Pour que cette routine fonc- tionne, il faut que l'adresse $E5 soit @ ... ce qui n'est pas le cas aprés DAM.DEMO... d'ou le POKE 229,0 (qui donne le premier carré blanc). Un POKE 229.1 permet de démarrer avec un carré noir. 300: 20 DB F3 JSR $F3D8 303: A2 IF LDX £$1F 305: A9 7F LDA £$7F 307: CO 78 CPY £$78 309: DO GI BNE $030C 30B: C8 INY 30c: 91 £E5 STA ($E5),Y 30E: CB INY 30F: C8 INY 310: CO F9 CPY £$F9 312: DG F3 BNE $0307 314: E6 £6 INC $E6 316: CA DEX 317: 1 F2 BPL $030B 319: 60 RTS BSAVE DAMIER.VC,A$300,L$1A Une collection de petites routines indispensables : ° CLINS D’OEIL AU 65C€02 DE L’APPLE (avec disquette) ind ROUTINES LM POUR 65C€02 ET 6502 (avec disquette) Ces recueils regroupent des programmes publiés dans Tremplin Micro, mais présentent aussi diverses routines originales, faciles 4 mettre en ceuvre 4 partir du Basic (bulletin de commande a la fin de la revue). . J J J J 10 30 40 50 60 70 80 90 DAMIER.VC HGR2 (& la sortie : Y = @). Compteur pour partie haute de I’adresse ($E6). Pour obtenir un carré plein. Si Y est différent de G, pas d'incrémentation. YH + ly Une ligne du carré. Ne pas oublier qu'il s'agit d'un damier ! Si Y est différent de $F9 on continue. Sinon partie haute de l'adresse incrémentée, et compteur décrémenté en conséquence. On poursuit (de $40 a $5F). Retour. TEXT : HOME : PRINT CHR§ (21) : POKE 229,0 FOR | = 768 TO 793: READ R: POKE |,R: NEXT FOR | = 31 TO 1 STEP - 1: POKE 72,1: GOSUB 70: CALL 768: NEXT GOSUB 70: TEXT VTAB 22: PRINT "(M)ENU DE DISQUETTE ";: GET RS: PRINT : IF R$ = "M" OR R$ = "m" THEN PRINT CHRS (4)"RUN MENU.D1” HOME : END CALL - 198: POKE 49168,0: WAIT 49152,128,127: POKE 49168,0: IF (PEEK (49152)) <> 27 THEN RETURN TEXT : POP : GOTO 50 DATA 32,216,243, 162,31 ,169,127,192,120,208, 1,200,145, 229,200,200, 192,249,208, 243,230 ,230,202,16,242,96 GUY-HACHETTE VISUALISER Dos | Clément RENARD Version 2 Seconde version d'une routine permettant de visualiser, sur l'un des écrans graphiques de l'Apple, les 96 caractéres d'une police classique (768 octets). Nous donnons ici le source de CAR.VIS2. II ne différe de CAR.VIS1 (dont on trouvera les codes plus loin) que par la présence de la ligne 32 : — EOR $7F. Pour obtenir un affichage nor- CAR.DEMO mal, il faut : EOR $00... car EOR $7F affiche les caractéres 1@ TEXT : PRINT CHR$ (21): HGR2 : HCOLOR = 3: PRINT CHR$ en: mode inverse; Led “utilisa: (4)"BLOAD CAR.VIS1": PRINT CHR$ (4)"BLOAD FG,A$6000" teurs d'un moniteur couleur 15 CALL 768: GOSUB 40 savent que les résultats ne sont 20 HOME : TEXT malheureusement pas extraor- dinaires en mode normal et 25 VTAB 22: PRINT "(M)ENU DE DISQUETTE ";: GOSUB 40 inacceptables en mode inverse. 30 IF R$ = "M” THEN PRINT CHR$ (4)"RUN MENU,D1” Par contre, avec une police spé- P ciale (voir Tremplin Micron°12), 45 HOME END on obtient une visualisation cor- 40 CALL - 198: GET R$: PRINT : RETURN recte en mode normal. @ * CAR. WESU2 (ASSEMBLAGE PAGE PROCODE) 1 * 2° Carac EQU $06 ; Nombre de caractéres. 3 Lgn EQU $07 ; Pointeur ligne. 4 Wndwdth EQU $21 ; Largeur fenétre ($28). 5 Bas! EQU $28 Adresse basse colonne 1. 6 Bas2! EQU $2A Point. ligne destination. 7 Hpag EQU $E6 ; Drapeau HGR = $20, HGR2 = $40. 8 Adrf EQU $5FF8 ; Adresse fonte moins 8 9 Vtab EQU $FC22 ; On utilise Vtab+2. Ww * VW ORG $300 2 * 300: A2 GG 13 LDX £$00 ; Index X @ zéro. 302: 86 G6 14 STX Carac ; Et zéro pour Carac. 364: BA 15 BCL6 TXA : X passé dans A, 305: 85 G7 16 STA Lgn ; puis dans pointeur ligne. 307: 20 24 FC 7 JSR Vtab+2 ; Curseur. 30A: AG OG 18 LDY £$00 : Registre Y & zéro S.V.P. (suite page 14) TREMPLIN MICRO 13 30c: AS 28 19 BCLS LDA Bas! ; Adresse partie basse passée 30E: 85 2A 20 STA Bas2I ; dans Bas2l, puis partie 310: AS 29 21 LDA Basi+1 ; haute dans Bas2I, mais aprés 312: 29 @3 22 AND £$03 ; AND 00000011 et ORA $26 ou 40 314: G5 £6 23 ORA HPAG 3 ($7 = $43 — $4 = $40 —$5 = $41...) 316: 85 2B 24 STA Bas2l+1 ; pour adresse HGR ou HGR2. 318: A2 08 25 LDX £$08 ; Registre X = 8 (compteur). 3IA: EE 26 G3 26 = BCL2 INC BCL3+1 ; Adresse basse incrémentée. 31D: DG G3 27 BNE BCLI ; Sile résultat n’est pas G, SIF: EE 27 03 28 INC BCL3+2 ; sinon on incrémente partie haute 322: CA 29° ~=BCLI DEX ; X=X—1. 323: DG FS 36 BNE BCL2 ; $i X différent de @, encore. 325: BD F8 5F 31 BCL3 LDA $5FF8,X ; Au départ, X = 0. 328: 49 7F 32 EOR £$7F ; $7F = INVERSE — 00 = NORMAL. 382A: 91 2A 33 STA ($2A),Y ; Ecriture. 32C: 18 34 CLC ; Annulation de la retenue. 32D: AS 28 35 LDA Bas2I+1 ; Partie haute majorée de $4, 32F 69 G4 36 ADC £$04 : pour écriture du point 331 85 2B 37 STA Bas2l+1 ; suivant du caractére. 333 Es 38 INX 7 X=X+1. 334: EO 08 39 CPX £$08 ; SiX plus petit que 8, 336: 90 ED 40 BCC BCL3 ; onn‘a pas terminé. 338: E6 G6 4) INC Carac ; A-t-on passé tous les 33A: AS G6 42 LDA Carac ; caractéres de la police ? 33C : C9 60 43 CMP £$60 ; lly ena $60 (96). 33E: BO OC 44 BCS BCL4 ; Siona termine : vers fin. 340: CB 45 INY ; Sinon on saute un espace 341: C8 46 INY ; pour plus de clarté. 342: C4 21 47 CPY Wndwdth ; Ne pas dépasser Ia limite. 344: 9 C6 48 BCC BCL5 ; Cestlecas ? suite BCLS. 346: Aé Q7 49 LDX Lgn ; Sinon on récupére le nombre 348: ES 50 INX ; de lignes et on le majore de 349: EB 51 INX ; 2 pour plus de lisibilité. 34A: DO BS 52 BNE BCL6 ; Suite. 34C:: AD FB 53 BCL4 LDA £$F8 ; Remise en état de l'adresse 34E : 8D 26 G3 54 STA BCL3+1 ; pour une autre fonte $51: AS SF 55 LDA £$5F ; (inutile sila routine est 353: 8D 27 G3 56 STA BCL3+2 ; rechargée 4 chaque fois). 356: 60 57 RTS ; Retour au Basic. BSAVE CAR. VIS2,A$300,L$57 CAR.VIS1 BSAVE CAR.VIS1,A$300 ,L$57 300: A2 GG 86 G6 8A 85 G7 26 24 FC AG GO AS 28 85 2A 310: AS 29 29 @3 G5 £6 85 2B A2 G8 EE 26 G3 DG G3 EE 326: 27 G03 CA DG FS5 BD F8 SF 91 2A 18 AS 2B 69 G4 85 330° 28 £8 EG G8 960 EF £6 G6 AS G6 C9 66 BO GE CB C8 340° C4 21 90 C8 A6 G7 EB EB EO G9 90 BB AD FB 8D 26 350° G3 AY 5F 8D 27 @3 66 . 4 GUY-HACHETTE OUR mener 4 bien l'impression d'un graphique il faut, entre autres choses, avoir compris le réle de la carte interface, car c‘est souvent elle qui fait tout échouer. Limitons-nous aux cartes Apple (carte paralléle, ou Super-Serial). Supposons que votre carte soit sur le slot 1. En assembleur, la méthode classique pour transmettre des données 4 |'imprimante consiste 4 : 1. Placer l'adresse du slot, (c'est-a-dire $C100) dans les octets $36 et $37 en page zéro : $36 devra rece- voir £$00 et $37 devra recevoir £$C1. 2. Envoyer a I'imprimante un flux d’octets par la routine COUT (=$FDED). LDA £$C) JRS $FDED provoque l'écriture de A sur votre papier. Ce flux d'octets transite par la carte, qui a un droit de regard sur les valeurs qu'elle transmet @ |'impri- mante. Droit légitime et bénéfique si vous imprimez votre roman. Droit abusif et catastrophique si vous imprimez (ou tentez d'imprimer) un graphique. En effet, si le dessin du graphique comporte, en un point quelconque, un assemblage de points corres- pondant aux valeurs $0D ou $8D (retour chariot) ou aux valeurs $09 ou $89 (Control-I), la carte va immé- diatement se sentir concernée. Aprés retour chariot, elle ajoute “Line feed” ($0A). Cet octet supplémentaire décale tout et fausse la signification du flux d'octets que recoit l'imprimante. Quant au Ctrl-I, la carte ne le transmet jamais & limprimante. Elle le garde dans ses profondeurs, et elle attend Ia suite, qu'elle interpréte comme un ordre a elle donné. Les conséquences sont imprévisibles. Généralement, vous assisterez 4 une danse frénéti- que de l'imprimante, qui se mettra a éjecter des métres de papier, en écrivant ici ou la quelques carac- téres bizarres, uniquement pour gacher vos feuilles. Par exemple : “Shunter" la carte (elle ne Ia pas volé), en placant directement vos octets sur $C090 (carte paralléle) ou sur $CG98 (carte Super- Serial). En outre vous devrez, aprés l’envoi de chaque octet, faire une petite boucle d’attente, pour rempla- cer les routines qui, dans la carte, vérifient que limprimante est libre et peut recevoir l'octet suivant. Donc, pour transmettre 4 l'imprimante les octets du graphique (et uniquement ceux-la), lorsque Ac con- tient la valeur & transmettre, remplacez $FDED par : TREMPLIN MICRO $CG90 (si carte paralléle en slot 1) $CO98 (si carte Super-Serial en slot 1) £$2D $FCA8 (boucle d'attente fonction de Ac. Tester la bonne valeur & prendre sur l'accumulateur, variable selon la rapidité de |'imprimante entre £$22 et £$2F). Madeleine HODE, auteur de Gribouille. SUR APPLE lic, essayez cette petite routine : 16 PRINT CHRS (4)"PRE1": PRINT : PRIN T CHR® (27)"n": PRINT CHRS (9)"896 N": FOR I = 768 TO 785: READ C: POK E 1,C: NEXT READ C: POKE 773,C: IF C = @ THEN 6 8 PRINT CHRS (27)"G8832"; CALL 768:X = X + 1: IF X <¢ 18 THEN 38 PRINT :X = @: GOTO 20 PRINT : PRINT CHR® (4)"PRE8" DATA 162,32,168,16,169,8,153,136,19 2,169,45,32,168,252, 202,208,241 ,96: REM Avec une carte paralléle, remp] acer 136 par 128 88 DATA 13,141,9,137,8 Sous-programme LM (ligne 70) 300: A2 20 LDX £$20 Slot + 16 302: AQ 10 LDY £$10 304: AI OO LDA £$00 306: 99 88 CO STA $C@88,Y Carte parallele : $80 309: A 2D LDA £$2D 30B: 20 A8 FC JSR $FCA8 30E: CA DEX 30F: DO FI BNE $0302 31: 60 RTS . Vous obtiendrez ceci : ——————— aS 5 Votre bibliotheque INFORMATIQUE © VARIATIONS EN C | (Steve Schustack) Avantage non négligeable, les lecteurs de VARIATIONS EN C peuvent acqué- rir la disquette des exemples étudiés dans le livre. Ceux-ci présentent un autre intérét : ils sont presque tous extraits d'un méme programme (un logiciel de gestion), écrit sur un IBM PC (c'est la que le bat blesse un applema- niaque convaincu !) avec deux lec- teurs de disquettes, 512 K de RAM, la version 2.00 de MS-DOS et la version 3.00 du compilateur C de Microsoft (que je ne connais absolument pas). Je constate que nous disposons, sur n'importe quel Apple //GS normale- ment constitué, des mémes étourdis- santes possibilités... du moins pour ce qui est de la RAM et des lecteurs. Pour le reste, j'espére que l'on ne va pas nous obliger 4 utiliser MS-DOS pour tater du C : ce serait trop béte. Foi de Nestor, je me refuserai toujours 4 pas- ser par des voies aussi tortueuses pour satistaire ma passade pour un langage que j'ai pourtant diablement envie de mioffrir. Et je vous promets que ces VARIATIONS EN C sont rudement ten- fantes : présentation, abondance des matiéres et clarté des textes... C'est vrai que c'est un produit MICROSOFT PRESS : une référence a laquelle s‘ajoute celle de Cedic Nathan, tout un programme ! CEDIC NATHAN (Microsoft Press) 6 Boulevard Jourdan, 75014 PARIS Tél, (1) 45.65.06.06 © LA PRATIQUE D'APPLEWORKS (Michel Mossetti) Si vous figurez au nombre des heureux élus qui ont pu s‘offrir un APPLE //GS pour leur petit Noél (30% de remise aux membres non largués du Club Apple), vous avez pu bénéficier d'un cadeau nullement négligeable : la ver- sion 1.4 du logiciel intégré d'Apple, AppleWorks. Pour les néophytes, je rappelle que ce logiciel comprend non seulement un traitement de texte, mais un module de gestion de fichiers et de calcul élec- tronique (lisez "tableur"). Pour utiliser au mieux ces outils, vous aurez tout intérét 4 vous munir d'une bonne docu- mentation, et notamment celle que vous propose Michel Mossetti. Ne sou- riez pas ; méme s'il est facile de se ser- vir d’AppleWorks, c'est encore plus commode quand on a sous les yeux les 200 pages d'un bouquin bourré d'exemples (ils sont tous archivés dans un index des opérations). Comment établir une lettre de relance (élémen- taire, mon cher Nestor), un état budgé- taire ou un poulet (les jeunes ne savent pas & quoi cela ressemble !)... 4 une petite amie ? (Presque) tout y est ! McGRAW-HILL, 28 Rue Beaunier, 75014 PARIS @ LEXIQUE APPLEWORKS (Michel Mossetti) J'ai omis de préciser que Miche! Mos- setti exerce la profession d'informati- cien depuis plus de quinze ans (il est aussi ingénieur CNAM et enseignant au Centre National de la Recherche Scientifique). Dans ce second ouvrage, l'auteur a adopté le classement alpha- par NESTOR bétique et il est certain que celui-ci présente bon nombre d’avantages pour l'utilisateur moyen. II supporte la version 1,3 d'AppleWorks, mais on n'y parle évidemment pas de la version 1.4, celle tournant sur I'Apple //GS. Ne disposant pas, 4 l'heure oi je rédige ces lignes, de cette nouvelle version, je n'ai pas été en mesure de la verifier. Une chose est certaine : les exemples resteront valables, de méme que I'uti- lisation des diverses commandes. Une remarque au passage : pour une raison que j‘ignore, je n’avais jamais eu l'occasion de compulser des ouvrages de McGraw-Hill et ‘ai été trés agréa- blement surpris par leur présentation claire et sérieuse (le format, notam- ment, est fort bien choisi). A quand les outils du GS chez cet éditeur ? McGRAW-HILL, 28 Rue Beaunier, 75014 PARIS © SYSTEMES D'EXPLOITATION DES MICRO-ORDINATEURS (M. Courvoisier, R. Valette) Cet ouvrage présente sous forme con- cise les principes fondamentaux des systémes d'exploitation utilisés dans les micro-calculateurs, puis il les illus- tre au moyen de quelques systémes trés répandus. Dans la premiére par- tie, la présentation des concepts part du schéma classique en couches, en insistant sur la gestion des taches, pro- bléme de base pour l'utilisateur des micro-calculateurs dans le domaine de la commande des procédés industriels. la deuxiéme partie décrit quelques systémes d'exploitation. Le choix se porte sur CP/M et MS-DOS pour les systémes de type “ordinateur person- nel" basés sur des processeurs 8 ou 16 bits, iRMX 86 pour les systémes desti- nés aux applications temps réel, et UNIX qui est un systéme d'exploitation largement répandu dans le domaine universitaire et qui tend 4 devenir le standard des stations de travail basées sur des processeurs 32 bits. DUNOD, 17 Rue Rémy-Dumoncel, 75661 PARIS (95 F ttc) GUY-HACHETTE zaam vil fic so ce le er te in di pc pr (cx Programme demandé UTILISATION sunsesicrarc ECRIRE et LIRE REMPLACER RECHERCHER LONGUEUR D’'UN ENREGISTREMENT Elle est contenue dans la variable L (ligne 105). Elle est égale au nombre de caractéres plus deux (le return final et les guille- mets du début, qui per- mettent d'utiliser la ponc- tuation). ll est représenté par la variable F$ (ligne 105). ONERR GOTO Ne doit normalement ser- vir que pour créer le fichier. Par la suite, il est souhaitable de supprimer cette ligne... ou de revoir le traitement trés som- maire des _ possibles erreurs. La longueur est testée et les caractéres interdits (guillemets et divers contréles) filtrés par la ligne 165. On peut prévoir un DISK FULL (code ER=9), etc. seeonseveunezzeuzeazezaes TREMPLIN MICRO 106 165 116 115 120 125 130 135 140 145 158 155 168 165 178 175 1386 185 198 195 266 205 216 215 226 225 236 FIC.DIRECT TEXT : NORMAL :0% = CHR (4): PRINT D S"PRE3": HOME PRINT +: PRINT D®"BLOAD RECHFIC1" Fe = "FIC":L = 842: REM Lonqueur maxim um de la donnée + 2 (quillemets au déb ut et return & la fin? ONERR GOTO 58a VTAB 1: INVERSE : PRINT "FICHIER DIREC T DE LONGUEUR "L - 2: NORMAL GOSUB 45@: REM VERS NOMBRE DE DONNEES GOTO 526 REM REM * REM EERE RHEE EKER ARERR EERE REE SAISIE * ee VTAB 4: PRINT ""3: CALL —- 657 At = "": FOR X = 512 TO 549 + L:A = P EEK (X): IF A < > 162 AND A > 159 AND A < > 141 THEN AS = AS + CHR CA - 1 28): NEXT VTAB 4: CALL - 958: PRINT AS: IF AS = "" THEN POP : GOTO 524 VTAB 22: CALL - 868: PRINT "<C>ORRECT <R>EFAIRE "3: GET RS: PRINT : IF R® = "R" THEN GOSUB 19@: GOTO 1468 IF R® <¢ > “"C" THEN 175 RETURN VTAB 5S: POKE 1403,L - 3: PRINT : RE TURN REM HEHEHE RHEE EEE ERE R RR EH REM * ECRIRE * REM ##XHRRER HERE R HEHEHE RHR ERE PRINT : VTAB 4: CALL - 958: FOR I = 1 TO L - 2: PRINT "_"3: NEXT : PRINT GOSUB 168 N= N+ 1: PRINT 863A 887A 8E1D 74A5 77AL 9CAB $3B1 FESS 883A 883A B48E 1F47 eBs? dt 201 mat no ph Pa fac me doi For uti dai et ble util du ou TRE 235 GOSUB 478 E748 PRINT DS 24@ PRINT D¢ BF22 | D$contient CHR$(4), com- 245 VTAB 1: HTAB 32: CALL - 868: PRINT N: mande comprise par le GOTO 224 $3F8 DOS et par ProDOS. 258 : 863A Quand un fichier est 255 REM HHRHRHEH EHR HRERR HERR EHERE ouvert, aprés une com- 268 REM * REMPLACER * mande WRITE ou READ, 265 REM HHRRRRHR RHR ERERER ERR RERRE ne pas oublier de repren- 270: 003A dre la main pour un PRINT 275 VTAB 22: CALL - 8468: INPUT “REMPLACER Ds, Hah seu st un LE NUMERO ";R$:R = VAL (R$): IF R > INET aera bein ose N THEN 275 4E16 ture ! 286 IF R = @ THEN GOSUB 455: VTAB 26: PRI NT N" enregistrements": GOTO 275 72F7 285 PRINT D$"READ"FS",R"R: INPUT A$: PRINT PONCTUATION OF 6A7F +4 296 VTAB 4: CALL - 958: PRINT AS as64 senile de ae 295 GOSUB 196: GOSUB 1468 2ccB passant par CALL-657 36@ GOSUB 475: PRINT D$: GOTO 520 4828 | ($FD6F). Ne pas oublier 305 3: 883A que cette routine ne filtre 310 REM *xxxeeeenHnnnenneneexeeee pas naturellement les 315 REM * CHERCHER * mauvais caractéres (con- B20 REM *HxxHHHHHRHRH RHR HR RHR RHEE tréles divers et ESCAPE). 325 : 883A 338 V = 3: VTAB 22: CALL - 868: INPUT "CH AINE RECHERCHEE:ctG ";CH$: IF CH® = "" RE INTERDIT THEN 520 CFBS Ne pas utiliser les guil- 335 LC = LEN (CHS) saz | lomets 34@ FOR I = 1 TON E10A 345 PRINT Dé"READ"FS",R"I: INPUT AS: PRINT RECHERCHE Ds B776 a 350 CALL 768,CH$,A$: IF NOT PEEK (24) TH Else yiay seco lfc EN GOSUB 368 1FFO@ chine (voir plus loin). 355 NEXT I: GOTO 338 7146 Celle-ci vous autorise & 360 V =U + 1: UTAB V: CALL - 958: PRINT utiliser indifiérermment 13: HTAB 4: PRINT AS S7B1 les minuscules ou les 365 IF V = 2@ THEN CALL - 198: VTAB 22: majuscules. Attention ! PRINT "“PRESSEZ UNE TOUCHE ";: GET RS: les caractéres accentués PRINT :¥ = 3 8104 conservent par contre 378 RETURN 6381 leur valeur. Sur la dis- 375 : 803A quette, RECHFICO permet 380 REM *xHRHHRH RHE RHR R ERE R EERE de différencier les minus- 385 REM * LIRE a cules et les majuscules. 39D REM HHH HHRRHERHR HERR HER HERE RE Pour rechercher un signe 395: 003A de Baneioation {formals 400 VTAB 22: CALL - 868: INPUT "LIRE LE N See ee arene UMERO ";R#:R = VAL (RB): IF R > N THE ple:” vi ou"... N 408 ca97 ‘ 405 IF R$ = "" THEN 520 3392 410 IF R= @ THEN GOSUB 455: VTAB 28: PRI COMPATIBILITE NT N" enregistrements": GOTO 400 36ED Ce programme _ fonc- 415 PRINT D$"READ"FS$",R"R: INPUT A$: PRINT flonne: soda: DOS-0) Pro Wad 6A7F DOS, mais vous constate- 420 VTAB 4: CALL - 958: PRINT A$: GOTO 49 rez quill se révéle beau- 18 GUY-HACHETTE —— Ee ————EEE coup plus performant avec ProDOS. La recher- che, notamment, est plus rapide, le tampon autori- sant la lecture d'un nom- bre supérieur d’octets par séquence. N’oubliez pas que le fi- chier direct est gourmand en mémoire-disquette. Si vous fixez la longueur d'un enregistrement 4a 200, par exemple, le mot “Toto” exigera le méme nombre d’octets qu'une phrase de 200 caractéres. Par contre, on accéde facilement et instantané- ment 4 n'importe quelle donnée existante. NOMBRE Fonction de la disquette utilisée... Il est stocké dans l'enregistrement @ et contenu dans Ia varia- ble N. La variable R est utilisée pour le numéro d'un enregistrement 4 lire ou 4 remplacer. 425 438 435 440 445 458 4s5 468 465 476 475 488 485 4968 495 Sea Ses S16 sis 526 S25 538 S35 548 545 558 sss 568 565 570 S75 538 58s 598 REM RHR RHR KERR HR ERR EER HEHE REM * SUR LE FICHIER * REM Hee RR HE EERE REH ERR R ERE PRINT DS" OPEN"FS",L"L PRINT D#“READ"FS" ,RO" INPUT N: PRINT D%: VTAB 1: INT N: RETURN HTAB 36: PR PRINT D¢"WRITE"FS",R@": PRINT N: RETUR N PRINT Dé"WRITE"FS",R"N: GOTO 488 PRINT O&"WRITE"FS",R"R PRINT CHR® (34) + A$: RETURN PRINT D#"CLOSE"FS : HOME : END REM RHEE HERR HER EH RR EERE ER EEE REM * LIGNE DE CHOIX * REM eee RRR RR RRR RRR EERE EERE VTAB 22: PRINT "<L>IRE “<E>CRIRE ~<R>E MPLACER “<C>HERCHER “<F>INctG “3: GET R$: PRINT : IF R& > CHR® (82) THEN R& = CHR ¢ ASC (RB) - 32) RS "L" THEN 488 RS "E" THEN 226 RE *R": THEN 275 RS "C" THEN 336 IF R® "F" THEN GOSUB 465: GOTO 485 GOTO 526 REM RHR RRRE RRR EERE EERE RHEE REM * ERREUR * REM HERRERA RHEE EERE ERE R HERE nun ER = PEEK (222): > S THEN 598 GOSUB 465: PRINT D®: GOTO S26 VTAB 22: PRINT D$: PRINT "“ERREUR IMPRE VUE ": GOSUB 465: GOTO 485 POKE 216,0: IF ER <¢ @3DD 883A 883A BFeA CADE 7CAL EC7A D3EC 3E6F 7271 7046 8E8B 88346 883A 2FF1 4B0B 7ED4 SiEB 3CD4 3F16 0942 883A 663A ABCD 3027 B72B PAGE SUIVANTE: EXPLICATIONS DE <RECHFIC1> @306: G318: $326: 6330: 63468: 6356: 26 26 Ad a4 49 Ba DE DE Bi 86 D1 CODES DE RECHFIC1 (ligne 190) 28 28 19 18 E3 E3 oF 66 98 @7 FO OF AB G2 Bi 83 99 18 66 88 18 FS E465 DF A® 62 BI 83 99 46 B68 88 18 FB 88A3 SE 63 88 16 F8 Ad G6 AS 19 CA 18 scs2 88 16 61 68 BD SE 83 D1 87 F@ EE E9B7 18 CY 5B 98 68 CP 61 98 88 CP 7B 2E05 08 ES E4 18 Fé D1 C8 D® FB C68? BSAVE RECHFIC] ,A$300 ,L$5E TREMPLIN MICRO 2 (routine RECHFIC de FIC.DIRECT) 300: 20 BE DE JSR $DEBE = 303: 20 E3 DF JSR $DFE3 — 366: AG G2 LDY £$02 ~] 308: BI 83 LDA ($83),Y 30A: 99 18 GG STA $0018,Y 30D: 88 DEY 30E: 1 FB BPL $0308 =! 310: 26 BE DE JSR $DEBE 7] 313: 20 E3 DF JSR $DFE3 316: AG G2 LDY £$02 318: Bl 83 LDA ($83),Y SIA: 99 G6 GG STA $0006,Y 31D: 88 DEY SIE: 16 FS BPL $0318 = 326: A4 18 LDY $18 ~) 322: Bl 19 LDA ($19),¥ 324: 99 SE G3 STA $@35E,Y 327: 88 DEY 328: 10 FB BPL $0322 = 32A: A4 G6 LDY $06 32C: A6é 18 LDX $18 32E: CA DEX 32F: 16 G4 BPL $0335 d 331: E8 INX “7 332: 86 18 STX $18 334: 60 RTS 3 335: 88 DEY 77 336: 16 @1 BPL $0339 I 338: 60 RTS 7 339: ° BD SE @3 LDA $035E,xX _| 33C: DI G7 CMP ($@7),Y ~] 33E: FO EE BEQ $032E 346: 49 26 EOR £$20 342: C9 41 CMP £$41 ~] 344: 99 16 BCC $0356 = 346: C9 SB CMP £$5B “7 348: 96 GB BCC $0352 = 34A: C9 61 CMP £$61 ~] 34C: 98 G8 BCC $0356 = 34E: C9 7B CMP £$7B 7 350: BO G4 BCS $0356 at 352: Dl O7 CMP ($07),Y ~] 354: FO D8 BEQ $032E =J 356: E8 INX 7 357: E4 18 CPX $18 359: FO DI BEQ $032C 35B: CB INY | 35C: DG FB BNE $0356 RECHERCHE D'UNE VARIABLE DANS UNE AUTRE CHKCOM teste la présence de la virgule et PTRGET recherche la variable par son nom. On sait lire la longueur de la variable a I'adresse trouvée en $83-84. La méme adresse +1 et +2 fournit l’adresse réelle de la chaine. Mémes opérations pour la seconde variable. La premiére représentait la chaine recherchée, celle-ci la chaine dans laquelle on recherche. Le choix des adresses $18-1B et $6-8 est arbitraire. Longueur de la chaine 4 rechercher dans Y. Ecriture des Y octets de cette chaine 4 partir de $35E. On notera que L est en vérité égal OL + 1 (G&L), mais c'est sans importance. RECHERCHE Longueur de la grande chaine dans Y. Longueur de la petite dans X. X = X-1. Jusqu’d X = G, on saute. a, c'est pour renseigner le Basic. Si PEEK(24) = G, ona trouvé AdansB ! Y = Y-1. Jusqu’a Y = G, on continue. Sinon c'est fini et, $18 contient toujours la longueur de la chaine recherchée... et PEEK (24) n‘est pas égal a0. COMPARAISON 1 Si c'est oui, on passe au caractére suivant. Ou A devient a et Z... z, on vice-versa. Si plus petit que "A", pas de comparaison. Si plus petit que $5B (plus grand que "Z"), saut vers COMPARAISON2. Si plus petit que "a", pas de comparaison. Si plus grand que "z”, pas de comparaison non plus. COMPARAISON2 Si égalité, vers caractére suivant. On réajuste la valeur de Y pour que la recherche reprenne GY + 1. 20 GUY-HACHETTE a ee N00 Marcel COTTINI SYSTEME D'EXPLOITATION ProDOs Le dernier-né des systémes d’exploitation, en occurrence ProDOS, suscite chez bon nombre de lecteurs pratiquant |'Apple //, certaines réti- censes 4 l'emploi. Cet article a la tache de fami- liariser l'utilisateur débutant ou averti, avec les programmes systémes et lui donner tous les ingrédients pour une meilleure utilisation de ProDOS. ProDOS, Professional Disk Operating System, est un ensemble de micro-programmes qui, as- sociés les uns aux autres, forment un program- me systéme, capable de gérer les divers péri- phériques reliés 4 un environnement Apple //. C'est une suite d’instructions faisant partie des programmes systémes (Operating System), per- mettant entre autres, la gestion d'un lecteur de disquettes a l'aide de commandes évoluées. Lors des différentes manipulations, l’opérateur n‘a pas besoin de s’occuper du déplacement de la téte de lecture, ni de se soucier de la gestion et de I'écriture des divers fichiers sur la disquette. Ce réle est attribué au systéme d’exploitation. Comme tout programme (soft), ProDOS occupe une place en mémoire centrale, suivant ses pos- sibilités intrinséques. En régle générale, tout concepteur de logiciels effectue un compromis entre les possibilités offertes par le matériel (hard) et le logiciel (soft). Pour le fichier PRO- DOS, la mémoire se trouve amputée de 12 Ko, l'Apple Ile ou lic répartit d'une fagon astucieuse cette occupation. Les 12 Ko en haut de la mémoire sont attribués au fichier PRODOS par commutation alternée du systéme et de la ROM. Cet espace est normalement occupé par la ROM AppleSoft et par le Moniteur. En réalité, le fichier PRODOS occupe 16 Ko, dont 4 Ko sont obtenus par la commutation de la Bank Switched Memory — bank | et 2. ProDOS, développé par la société Apple Computer, est le dernier-né d'une gamme de programmes systémes, destiné 4 fonctionner sur la série des Apple //. Il permet d’accroitre considérablement la sauvegarde de la mémoire de masse, par |'utilisa- tion d'un disque dur. Ce systéme a fait son appari- tion officielle début 1984 avec la version 1.0 ; une nouvelle version revue et corrigée, circule depuis début 1985. Une autre accompagne les logiciels les plus récents. La dénomination ProDOS recouvre en fait l'association d'un systéme d’exploitation et d'un programme interface. STRUCTURE DU SYSTEME D'EXPLOITATION ProDOS Le systéme d’exploitation ProDOS se compose : — d'un fichier PRODOS qui se loge dans la carte langage, et regroupe tous les sous- programmes en langage machine — MLI —. II se trouve sauvegardé sous la forme d’un pro- gramme du type SYS, avec comme nom de fichier : PRODOS ou KERNEL. — d'un fichier également du type SYS, sous la forme XXX.SYSTEM, et qui se loge 4 |’ancien emplacement du DOS 3.3. Chaque disquette de démarrage standard Pro- DOS comporte au moins deux fichiers communs écrits en langage machine PRODOS et XXX.SYSTEM. Remarque : XXX.SYSTEM représente un format dont les XXX désignent un nom de fichier pou- vant étre tout programme répondant 4 cette con- vention, par exemple un traitement de texte en langage machine. En général c'est BASIC. SYSTEM qui est utilisé pour la plupart des dis- quettes conventionnelles. Ecrit en langage machine, i! renferme tous les sous-programmes et routines MLI (Machine Lan- guage Interface). C'est le coeur du systeme (noyau — KERNEL), permettant de gérer tous les fichiers autres que ceux du type AppleSoft. Il est l'équivalent du File Manager et de RWTS du DOS 3.3 ; il occupe l’ensemble de la carte langage (a l'exception de la zone $D000-$DOFF de la bank 2), ainsi que l'espace $BFQO-SBFFF servant @ commuter les différentes parties hautes de la mémoire, et 4 recevoir des appels de program- mes ou de routines externes. PRODOS fut écrit au départ pour fonctionner sur un Apple // de 48 Ko de mémoire, (suite poge 22) sennmseoceenseeenasennensssnesssoesesessonernusseaseseeEseesesenssessonecssasesEssasescasEERSESREEOEEEE TREMPLIN MICRO 21 SYSTEME EXPLOITATION PrODOS (i) en se placant sous l’adresse $C0G, et sur un Ile de 64 Ko, en se placant sur la carte langage. Cette der- niére version a été retenue pour la commercialisa- tion. Elle se trouve sur la disquette sous la forme d'un fichier du type SYS, qui ne peut étre que “booté”. PRODOS se loge sur les 16 Ko de la carte langage d'un Apple //+ ou en haut de la mémoire sur un Ile et un Ilc, et fixe HIMEM 4 $BFQG. Lors- que PRODOS est chargé en mémoire, les comman- des exécutées sont des commandes PRODOS. Lors- que celui-ci recoit une commande qu'il ne peut pas interpréter, il la transmet 4 |'AppleSoft qui teste sa validité avant de Iutiliser. Si, pour une raison quel- conque, l’ordre n'aboutit pas, un message d’erreur sera renvoyé par le systéme Basic. Ecrit en langage machine, il est l'interface entre un programme AppleSoft et le fichier PRODOS. I! per- met de passer la main au Basic pour exécuter des commandes de I'interpréteur AppleSoft. II est logé aux adresses $9600-$BEFF. Comme PRODOS, BASIC.SYSTEM est un fichier du type SYS, unique- ment “bootable”. BASIC.SYSTEM est sollicité en mémoire, 4 chaque fois qu'il s‘agit de traiter des programmes du type AppleSoft. Lorsque celui-ci est chargé en mémoire centrale, HIMEM est fixé a l'adresse équivalente du DOS 3.3 — $9600 — ALLOCATION DES BLOCS SUR UNE DISQUETTE ProDOS Aprés le formatage d'une disquette ProDOS par le programme utilitaire FILER, celle-ci présente un certain nombre de blocs occupés et de blocs libres. Le tableau qui suit refléte l'image type d'une dis- quette aprés formatage sous ProDOS. Pistes 35 (0-34) Secteurs par piste 16 (0-15) | | Secteurs par disquette 560 | Bytes par secteur — 256 | Bytes par piste 7 4096 | Bytes par disquette 143 360 f re 280 blocs par disquette de 0 4 279 ($060-$117) 8 blocs par piste de 0 47 ($00-$07) 1 bloc 2 secteurs | 512 bytes par bloc ~ de 0.8511 ($000-SIFF). Un bloc se divise en deux parties : partie gauche et partie droite. Les 256 premiers bytes d'un bloc sont ceux de gauche, les 256 bytes suivants, ceux de droite. Capacité d'une disquette aprés formatage : Blocs disponibles : 273 blocs Bytes disponibles : 139 776 bytes. A ce total, il faudra cependant retrancher le nom- bre de blocs nécessaires pour la sauvegarde des fichiers PRODOS et BASIC.SYSTEM, indispensables pour démarrer le systéme. PRODOS version 1.0.2 : 31 blocs BASIC.SYSTEM version 1.0.2 : 21 blocs Total = 52 blocs ou 26 624 bytes Bytes réellement disponibles: 139776 - 26624 = 113 152 bytes. NOTION DE VOLUME BIT-MAP ET SYSTEM BIT-MAP Deux Bit-Map sont disponibles pour le systeme Pro- DOS : — System Bit-Map — SBM — de la page globale de PRODOS, aux adresses $BF59-SBF6F — Volume Bit-Map — VBM — sur la disquette, Fichiers systemes Utilisateur Le bloc $02 est généralement désigné sous |'appel- lation Key-Block et les blocs $03 4 $05 sont appelés Non Key-Block. | Blocs 0-1 Loader _ | Bl - -Di locs 2-5 Volume-Directory bloc é: | Bloc 6 Bit-Map Blocs 7-279 Volume-Subdirectory Pour le traitement des fichiers texte, ProDOS gére automatiquement les pages allouées aux tampons mémoire par la commande OPEN. Le programmeur peut, avant |'implantation d'un programme en mémoire centrale, solliciter par exemple une routine qui pourra fournir la premiére page disponible. SnaneansneccnnsececassseressnzssesesssssasessnsennrenneeeeeoeunsessEsesoEsesosesoensosseesenannansonece 22 GUY-HACHETTE a ae re a + Implantation d'un programme en mémoire : — ll sera au préalable chargé au bas de la zone mémoire non encore utilisée par le systéme. — A ce programme sera associé un sous- programme Move, qui aura une double fonc- tion : modifier la System Bit-Map et le pointeur de HIMEM, puis placer le programme 4 son adresse définitive. ProDOS suit les mémes régles de chargement, lors du boot d'une disquette. nés 4 la valeur FF (255 en décimal), les blocs 8 4 279 sont inutilisés (8 * 34 = 272 blocs). Le total des blocs libres est : 272 + 1 = 273 blocs. $00 [01 | FF) FF) FF\FF) FF|FF) FFIFF| FF FF FF FF FF FF) FF sio [rr | FF) FF] Fe|FF FF|FF | FF|FF| FF (FF FF |FF FF |FF| FF $20 | FF | FF] FF) 00/00 | 00} 00 | 00/00] 00 |00 J00 00 j00 |00| oo Cest la table d’allocation des blocs d'une disquette — bloc 6. Une disquette 35 pistes, utilise les 35 pre- miers bytes du Volume Bit-Map pour gérer l’occu- pation de ses blocs. Chaque type de la table mar- que 8 blocs, ce qui fait un total de : 35 * 8= 280 blocs. La table occupe 512 bytes (1 bloc) et peut gérer ala limite : 8 * 512 = 4096 blocs, mais seuls 280 blocs sont utilisés par les versions actuelles de ProDOS. Chaque bit représente un bloc : si le bit est 41, le bloc est libre, si par contre il est a G, le bloc est occupé. | Byte $01 = Piste $01 = Blocs $008-S00F Byte $02 = Piste $02 = Blocs $010-$017 Byte $22 = Piste$22 = Blocs $110-$117 La valeur du byte est donnée suivant la position relative dans la table d'occupation, au niveau de la disquette ProDOS. Représentation d'un byte : Byte $00 Blocs $006-$007 01234567 00000001 =@1 Le bloc $007 est libre et les blocs $000-$006 occupés. Byte $01 Blocs $068-$00F 89ABCDEF VVtV10101 = FF Les blocs $008-$G0F sont tous libres. Le premier byte de la Bit-Map affiche @1 et désigne un bloc libre : c'est le bloc 7 de la disquette. Les trente-quatre bytes suivants, sont tous position- $30 | 00 | 00| 00} 00/00 | 00/00 | 00|00/ 00 |00 }00 |00 }00 |00| 00 $40 | 00 | 00/ 00| 00/00 | 00} 00 | 00}00] 00 |00 }00 }00 }00 |00| 00 $5 | 00 | 00) 00) 00)00 | 00/00 | 00/00} 00 |00 |00 /00 |00 |00} 00 $60 } 00 | 00} 00| 00/00 | 00/00 | 00/00/00 {00 |00 |00 |00 }00) 00 $70 00 | 00) 00) 00/00 | 00}00 | 00}00} 00 |00 |00 |00 }00 }00) 00 $80 | 00 | 00) 00} 00) 00 | 00/00 | 00} 00} 00 }00 )00 |00 }00 }00| 00 $99 | 00 | 00} 00) 00/00 | 00/00 | 00/00] 00 |00 00 }00 |00 | 00) 00 $AG } 00 | 00 | 00| 00/00 | 00|00 | 00/00} 00 |00 |00 |00 }00 }00) 00 |s80 [00] 00/ 00/ 00/00 | 00/00 | 00/00] 00 |00 {00 |00 |00 fo0| 00 $C |00 | 00) 00} 00) 00 | 00/00 | 00}00/ 00 }00 /00 |00 }00 | 00) 00 $D9 } 00 | 00} 00} 00/00 | 00/00 | 00} 00} 00 |00 )00 |00 }00 }00} 00 $€G |00| 00| 00| 00]00 | 00/00 | 00/00} 00 |00 |o0 |00 |00 00 00’ $FO {00 | 00] 00/00} 00 | 00}00 | 00} 00} 00 |00 |00 |00 |00 |00| 00 ORGANISATION INTERNE DE ProDOS TABLES DES MATIERES — Volume-Directory — Volume-Subdirectory ORGANISATION DU FICHIER PRODOS — Version 1.0.2 Par comparaison au DOS 3.3, le fichier PRODOS n‘occupe pas de place bien précise sur la surface de la disquette. Pour cette raison, il sera fait réfé- rence 4 une position relative (0 dans notre cas) par rapport 4 une valeur arbitraire donnée au bloc de départ. L'adresse de départ, $2000 dans notre lis- ting, est celle ov le fichier PRODOS est implanté par le Loader au moment du boot de la disquette et juste avant l'appel de la routine Move. ADRESSES ET VECTEURS DU MLI * Routine Move — Relocator. Sous-programme pour transférer PRODOS dans la carte langage. Blocs 04: adresses $2000-$29FF. * RAM Disk-Driver Bloc 5: adresses $2AQ0-$2BFF. (suite page 24) ‘eeeeeeneeeeeenseeseese ses eeessessssesssoccesssCeeEEeEseHe see oReeTeEReeeeeneEeeeeneeeeeReeeeeeeeO TREMPLIN MICRO 23 — RAM Disk-Driver (64 Ko auxiliaires $0200-$03FF). Bloc 6: partie gauche, adresses $2C00-$2C7E. — RAM Disk-Driver ($FFGQ-$FF7E Bank 1). Bloc 6: partie gauche, adresses $2C7F-$2CFF. — Bytes nuls. * Le MLI — Machine Language Interface. Bloc 6 : partie droite, adresses $2D00-$2DFF. — Début du MLI ($D000-$DGFF Bank 1). Blocs 7-21 : adresses $2EQ0-$4BFF. — MLI ($D100-SEEFF Bank 1). Bloc 22: partie gauche ; adresses $4C00-S4CFF. — Fin du MLI (SEFQG-SEFFF Bank 1). Bloc 22 : partie droite ; adresses $4D00-$4D05. — MLI ($FO0G-$FO05 Bank 1). Bloc 22: partie droite ; adresses $4D06-$4DFF. — Bytes nuls. * La Page Globale de PRODOS Bloc 23 :partie gauche ; adresses $4E00-S4EFF. — Page Globale pour appel de PRODOS dans Ia carte langage adresses $BEQQ-SBEFF. Bloc 23: partie droite ; adresses $4FOO-S4FFF. — Page Globale du BASIC.SYSTEM ($BF00-$BFFF). * Les Interruptions Bloc 24: partie gauche ; adresses $5000-$5069. — Routine Horloge ($F142-$F1AB). Bloc 24: partie gauche ; adresses $506A-$507C. — Date ($FIAC-$F2GE). Bloc 24 : partie gauche ; adresses $507D-$509A. — Bytes nuls. Bloc 24 : partie gauche ; adresses $509B-$50EB. — Interrupt (SFF9B-SFFEB). Bloc 24 : partie gauche ; adresses $50EC-$50F9. — Bytes nuls. Bloc 24: partie gauche ; adresses $50FA-S50FF. — NMI, IRQ et Reset ($FFFA-SFFFF). Bloc 24 : partie droite ; adresses $5100-S51FF. — Bytes nuls. © Le Disk-Driver Bloc 25 : partie gauche ; adresses $5200-$5395. — Disk-Driver ($F800-$F995). Bloc 25: partie gauche ; adresses $5396-$53FF. — Données du Disk-Driver ($F996-$F9FF). Bloc 25: partie droite ; adresses $5400-$54FF. — Table des nibbles (SFAGO-SFAFF). Bloc 26 : partie gauche ; adresses $5500-$5572. — Bytes nuls. Bloc 26 : partie droite ; adresses $5573-$5584. — Données Disk-Driver ($FB74-SFB84). Bloc 26 : partie droite ; adresses $5585-$55FF. — Disk-Driver ($FB85-SFBFF). Bloc 27 : adresses $5600-$57FF. — Disk-Driver ($FCOG-$FDFF). Bloc 28 : partie gauche ; adresses $5800-58BD. — Disk-Driver ($FEGQ-$FEBD). Bloc 28 : partie gauche ; adresses $58BE-$58FF. — Bytes nuls (SFEBE-SFEFF). * La routine REBOOT Bloc 28 : partie droite ; adresses $5900-$59FF. — Début de Reboot ($D100-$D1FF Bank 2). Bloc 29 : adresses $5AGG-$5BFF. — Routine Reboot ($D200-$D3FF Bank 2). TABLE DES MATIERES PRINCIPALE Le Volume-Directory — Entrée du nom d'un Volume. Ce type de Directory est implanté aux blocs 0602- 0005 de la disquette. Par comparaison au Subdirec- tory, le Volume-Directory ne permet pas sa dupli- cation. Le Volume-Directory occupe 4 blocs sur une disquette standard au format 5 pouces 1/4, pou- vant contenir un total de 51 noms de fichiers. Les quatre premiers bytes de chaque bloc du Direc- tory sont réservés pour les pointeurs arriére et avant — Backward et Forward. Le pointeur avant — Forward Pointer — désigne 4 I'intérieur du Directory, le numéro du bloc qui précéde son pro- pre bloc. Le pointeur arriére — Backward Pointer — désigne l'intérieur du Directory, le numéro du bloc qui suit son propre bloc. Au niveau du Key-Block, bloc 0002, le pointeur arriére affublé de la valeur 0000 signifie que c'est le premier bloc du Directory. Au niveau du bloc 0005, Non Key-Block, le pointeur avant affublé de la valeur 0000 signifie que c'est le dernier bloc du Directory. VOLUME-DIRECTORY Key Block Header Volume Name — Block 00 02 Le premier nom qui figure dans la table des matié- res principale (Volume -Directory) est celui du Volume sauvegardé lors du formatage de la dis- quette par le programme FILER. Le Volume- Directory permet la sauvegarde d'un certain nom- bre de paramétres particuliers. Position contenu $00-$01 Pointeur arriere — LByte, HByte : 00 0G ; G00 signifie que c'est le premier bloc. $02-$03 Pointeur avant — LByte, HByte : 03 G0 ; $0003 pointe le bloc 3 du Directory. $04 Storage Type/Name Length. 4 bits de poids fort qui caractérisent la sau- vegarde d'un fichier. 4 bits de poids faible qui désignent Ia lon- gueur du nom du Volume. Exemple : $F6 ou F = Fichier Volume et 6 = 6 caractéres. Saarland alia lalallala at ee ate deel edd dededetaldedeteldadeldeledaldadadatededatdedaddedaladcblddadidaed 24 GUY-HACHETTE —~+—2s-§ $05-$13 Nom du fichier — USERS.DISK par ex. $14-$1B Bytes réservés pour une application future. Positions N° d'ordre des entrées $1C-$1F Date et heure de la sauvegarde d'un Hex. Déc. nom du Volume-Directory. Entrée 1 $004 G04 $20-$21 Versions de PRODOS. Entrée 2 $028 943 $22 Access Byte. Byte daccés au fichier. icicles $os2_ | 982 Exemple: $C3 = Lecture/écriture Entrée 4 $079 121 permise. Entrée 5 $0AG 166 $23 Nombre de bytes alloués @ chaque Entrée 6 SOCF 199 entrée du Volume-Directory : Entrée:7. $OEE 238 — 39 bytes pour chaque entrée Volume. Entrée 8 $115 277 $24 Nombre d'entrées possibles par bloc. Entrée 9 $13C B16 — 13 entrées par bloc. = p Entrée 10 $163 355 $25-$26 Total des noms de fichiers actuelle- Entrée 11 $18A 394 ment sauvegardés dans la table des matiéres ou Volume-Directory : Entrée 12 $181 433 — maximum 51 fichiers. Entrée 13 $1D8 472 $27-$28 Pointeur de la Bit-Map — G6 00 = 0006. $29-$2A C é totale de la di Bl VOLUME-DIR' Ry ts ité tot i - : Crm gna eece™ S| |) donkey oes . Deuxiéme bloc du Directory — Block 00 03 VOLUME-DIRECTORY Position contenu Position relative des entrées $00-$01 Pointeur arriére — LByte, HByte. Pointe le y" y' Configuration d'une entrée La suite de la table des matiéres, aprés la sauve- garde des paramétres du Volume-Directory, per- met la gestion de 51 noms de fichiers. Le bloc 0002 ou Key Block peut contenir 12 noms de fichiers (13 moins celui du nom du Volume) et les 3 blocs sui- vants, 13 noms chacun, ce qui fait un total de : (13 * 3) + 12 = 51 noms de fichiers. Pointeurs avant et arriére 4 bytes 13 entrées de noms de fichiers 507 bytes Total 511 bytes Le byte la position 512 est inutilisé au niveau des 4 blocs du Volume-Directory et contient la valeur 00. Chaque bloc d'une table des matiéres se divise en un certain nombre d'entrées de noms de fichiers, dont chacune peut étre désignée par un pointeur relatif : pointeur de début $00 ; pointeur de fin $26 ; total £$27, soit 39 bytes par entrée. bloc précédent : 62 00 ; 0002 = bloc 02. $02-$63 Pointeur avant — LByte, HByte. Pointe le bloc suivant : 64 00 ; $0004 = bloc 04. $04-$2A Premiére entrée d'un nom de fichier. $2B-$51 Deuxiéme entrée d'un nom de fichier. $1D8-$1FE Trainin entrée d'un nom de fichier. $1FF Inutilisé. J Troisiéme bloc du Directory — Block 00 04 $00-$01 Pointeur arriére — LByte, HByte. Pointe le bloc précédent : 03 00 ; 0003 = bloc 03. (suite page 26) ala ah a aaa ahaa edad eel dale delete adele 25 TREMPLIN MICRO $02-$03 Pointeur avant — LByte, HByte. Pointe le bloc suivant : 05 00 ; 0005 = bloc 05. $04-2A Premiére entrée d'un nom de fichier. $2B-$51 Deuxiéme entrée d'un nom de fichier. $1D8-$1FE —Treiziéme entrée d'un nom de fichier. $IFF Inutilisé. Quatriéme bloc du Directory — Block 00 05 $00-$01 Pointeur arriére — LByte, HByte. Pointe le bloc précédent : 64 G0 ; 0004 = bloc 04. $02-$03 Pointeur avant — LByte, HByte. Pointe le bloc suivant. Ce pointeur est nul : dernier bloc. $04-$2A Premiére entrée d'un nom de fichier. $2B-$51 Deuxiéme entrée d'un nom de fichier. $1D8-$1FE —Treiziéme entrée d'un nom de fichier. SIFF Inutilisé. VOLUME-DIRECTORY Entrée d'un nom de fichier La position relative des paramétres de chaque entrée du nom d'un fichier dans la table des matié- res est donnée par rapport 4 chaque entrée possi- ble. Chaque pointeur débute avec la valeur $00 et termine avec la valeur $26 (£$27 ou 39 bytes alloués 4 chaque fichier). Chaque bloc peut contenir 13 noms de fichiers accompagnés de ses caractéristi- ques, le byte 512 étant toujours inutilisé. Une table des matiéres principale peut contenir un total de 52 noms de fichiers, le premier nom étant réservé a celui du nom du Volume de la disquette. j Entrée d'un nom de fichier Positions relatives $00-$26 Position Contenu $00 Storage Type/Name Length. 4 bits de poids fort ayant pour valeur la caractéristique de sauvegarde du fichier. 4 bits de poids faible qui désignent la longueur du nom du fichier. $01-SOF Nom du fichier programme — 15 caractéres maximum. $10 File Type. Type du fichier — $0B = BIN. $11-$12 Pointe le premier bloc du fichier. 1200 = 0012 ; pointe le bloc $0012. $13-$14 Blocks Used. Nombre total de blocs occupés par le fichier : 45 00 = 0045 ; blocs occupés = $0045. $15-$17 EOF Pointer. Longueur d'un fichier texte. Fin d'un fichier binaire ; 550000 = $000055 bytes de longueur. $18-$1B Date & Time. Date et heure de création du fichier. Format : 60 G6 G0 Gd. — 2 bytes pour la date et 2 bytes pour l'heure, avec une carte horloge. $1C-$1D Versions de PRODOS. SIE Access Byte. Paramétre d’accés au fichier. $1F-$20 Aux. Info. Information auxiliaire : adresse d'implantation du programme par exemple. $21-$24 Date & Time. Date et heure de la modi- fication. Format : 00 00 00 G0. — 2 bytes pour la date et 2 bytes pour l'heure, avec une carte horloge. $25-$26 Pointe le Key-Block d'un Directory dans lequel se trouve sauvegardé le nom du fichier. TABLE DES MATIERES AUXILIAIRE Volume-Subdirectory Cette table des matiéres particuliére est souvent désignée sous les termes Subdirectory, sous- catalogue ou encore table des matiéres auxiliaire. Ce type de fichier, désignant cette table des matié- res, ne peut étre créé que par la commande CREATE. Le nom du fichier Subdirectory se trouve sauvegardé dans le Volume-Directory, il pointe le Volume-Subdirectory. Ce dernier, appelé trés sou- Ses encennseunnnanasscassenssessessessssrssrssenseoneesuseeozenenseenneeneneeeneee ee oeeeeeeeesoEEseseo 26 GUY-HACHETTE 4 vent Key-Block Subdirectory, occupe au départ un bloc. Il est possible de sauvegarder dans ce nou- veau Volume, des fichiers programmes ou Subdi- rectory. Le fichier ainsi créé sera du type DIR et aura comme Storage byte la valeur DC, tandis que dans le Volume-Subdirectory, le nom du Volume aura comme valeur EC. Les quartets D et E repré- sentent Storage Type, tandis que le quartet C équi- vaut 4 Name Length. Entrée d'un nom de Volume du Subdirectory Header-Entry — Key-Block Les 4 premiers bytes sont réservés aux pointeurs arriére et avant, suivant le méme principe que la représentation du Volume-Directory. Deux bytes pour le pointeur arriére — Backward Pointer — et 2 bytes pour le pointeur avant — Forward Pointer. A la suite, se trouvent les 39 bytes de la premiére entrée de la table des matiéres auxiliaire — Volume-Subdirectory. En opposition au Volume-Directory, le Volume- Subdirectory n’a qu'un nombre limité de blocs. lorsque le Subdirectory est créé par CREATE, BASIC.SYSTEM + commande MLI, le systéme lui attribue un seul bloc. S'il arrive par la suite que plus de 13 noms de fichiers doivent y étre sauve- gardés, un deuxiéme bloc sera chainé au premier (nom du Volume-Subdirectory compris). Etant donné la structure de chainage d'un Subdirectory, les blocs ne peuvent en aucun cas se suivre dans le sens ascendant. Position Contenu $00-$01 Pointeur arriére — 00 60 = $0000. $02-$03 Pointeur avant — 00 00 = $0000. $04 Storage Type/Name Length. 4 bits de poids fort qui caractérisent le type de sauvegarde. 4 bits de poids faible qui désignent la longueur du nom du Volume-Sub- directory. $05-$13 Nom du Volume-Subdirectory — SUB- DIRECTORY par exemple. Maximum 15 caractéres. $14-$1B Le nom de "uHUSTON !" est sauve- gardé 4 cet endroit, mais i! n'a aucune signification précise. $1C-S1F Create Date & Time. Date et heure de création du Volume-Subdirectory. $20-$21 Versions de PRODOS. $22 Access Byte. Paramétre d’accés au fichier — $C3. $23 Longueur d'une entrée dans la table des matiéres — 39 ou £$27 bytes. $24 Nombre d’entrées possibles par bloc — 512/39 = 13 ov OD. Nombre de fichiers actuellement sau- vegardés dans le Volume-Subdirectory — 1 00 = £$0001 fichier. $25-$26 Parent Pointer. Numéro du bloc de la table des matiéres ol) est sauvegardé le nom du fichier qui pointe ce Volume-Subdirectory. 0200 = $0002 = bloc 2, si le nom du fichier se trouve sauvegardé dans le bloc 2. $27-$28 $29 Parent Entry. Numéro de l'entrée dans le bloc parent. $2A Longueur d'une entrée dans la table des matiéres du parent, c’est-a-dire le Directory dans lequel se trouve le nom du fichier Subdirectory. Sous le systeme d’exploitation DOS 3.3, le bloc index (Index Block) est référencé sous le terme de Track Sector List. — bloc index = 2secteurs = 512 bytes. — Une disquette ProDOS est composée de blocs de données d'une taille de 512 bytes chacun. BLOCS REPERTOIRES : Index Blocks. ll existe deux types de blocs index : — Master Block. C'est un bloc répertoire principal, qui peut pointer 128 blocs répertoires auxiliaires (Index Blocks) dont chacun peut 4 nouveau pointer 256 blocs de données. Ce type de bloc pointe toujours un bloc index, mais jamais un bloc de données d'un pro- gramme. Un fichier avec un Storage Type de valeur 3 contient un Master Block qui pointe un ou plusieurs blocs index. Cette limitation de blocs index est due au maximum de 24 bits alloués au pointeur EOF (lon- gueur d'un fichier). La grandeur d'un tel pointeur est 128 * 256 * 512 = 16777226 = 16 mégabytes, ov 128 représente le maximum de blocs index, 256 le maximum de blocs de données et 512 le nombre de bytes par bloc. Un Master Block ne se différencie pas visuellement d'un bloc index, sa structure interne reste la méme. — Index Block. C'est un bloc répertoire auxiliaire encore appelé bloc index ; il se compose d'un bloc de 512 bytes et pointe un maximum de 256 blocs de données. Ce type de bloc pointe toujours un bloc de données. Un fichier avec un Storage Type de valeur 2 contient un seul bloc index, tandis qu’avec un Sto- rage Type 3, la capacité est de 128 blocs index. err oe TREMPLIN MICRO 27 LES TAMPONS ALLOUES A PRODOS FCB, VCB et VBM ProDOS sauvegarde en mémoire différentes don- nées auxquelles les fichiers et les périphériques pourront se référer par la suite. Ce sont autant de renseignements placés dans des tables bien struc- turées, o chaque élément d'une donnée a une signification précise. $F000-SFOFF $100 (256) bytes pour la sauvegarde des variables des sous-programmes MLI. SFIQG-SFIFF $100 (256) bytes pour la sauvegarde du préfixe (PREFIX) et du chemin actuel (Pathname). $F200-SF2FF $100 (256) bytes pour la sauvegarde du Volume Control Block (VCB) : 8 entrées maximum, 4 raison de $20 (32) bytes par entrée. $F300-SF3FF $100 (256) bytes pour la sauvegarde du File Control Block (FCB) : 8 entrées maxi- mum, 4 raison de $20 (32) bytes par entrée. $F4Q0-SFSFF $200 (512) bytes pour la sauvegarde de la Volume Bit-Map (VBM) actuelle. $F600-SF7FF $200 (512) bytes pour la sauvegarde des Volume-Directory et Volume-Subdirec- tory actuels. C'est un espace mémoire réservé pour les entrées des fichiers de données, ou de Directory ; il se trouve aux adresses $F30G-$F3FF. Cette structure se trouve uniquement en mémoire vive (RAM) et n'a rien de commun avec les entrées d'un fichier de données ou de Directory d'une disquette. Lorsqu'un fichier est ouvert par la commande OPEN, qu'il s'agisse d'un fichier de données, de Directory ou de Subdirectory, le systeme sauve- garde certaines caractéristiques de ce fichier 4 un emplacement mémoire appelé File Control Block — FCB. Divers renseignements sont alors disponibles pour ProDOS : le numéro du bloc d'entrée du Volume-Directory, le numéro du premier bloc de données, le pointeur 4 I'intérieur d'un fichier (Mark), le pointeur de la fin d'un fichier (EOF), le byte de référence du périphérique en ligne (Unit Number), etc. Un fichier de données ProDOS est toujours créé par la commande MLI CREATE. Le FCB a une capacité maximale de 8 entrées, ce qui correspond 4 une zone mémoire ayant une possibilité de sauvegarde pour les caractéristiques de 8 fichiers. Un maximum de 8 fichiers peuvent étre ouverts simultanément sous ProDOS, d’ou le nombre maxi- mum de 8 entrées autorisées. Chaque entrée ampute la mémoire de 32 bytes, ce qui totalise 256 bytes pour l'espace mémoire alloué 4 FCB. Si l'on a une suite de plusieurs entrées dans la table FCB, elles s'échelonnent d'une maniére graduelle et pro- gressive, c'est-a-dire que la premiére entrée débute a I’adresse $F300, la deuxiéme entrée l'adresse $F320, etc. Pos. Adres. Signification $00 F300 File Reference Number. Un byte : utilisé comme référence interne du MLI, indi- que le numéro d’ordre dans les entrées de FCB. Unit Number — DSSS00G0. Un byte : ren- seigne le MLI sur le périphérique en ligne. $01 F301 $02 F302 Key Block Number. Deux bytes qui indi- quent le numéro du bloc — Key Block — du Directory ol se trouve sauvegardé le nom d'un fichier nommé DATAI par exemple. $04 F304 Directory Block. Deux bytes qui indi- quent le numéro du bloc ol se trouve réellement sauvegardé l'entrée du fichier au nom de DATAI cité comme exemple. $06 F306 Entry Number. Un byte : DATA2 est la deuxiéme entrée 4 l'intérieur de ce méme bloc — DATA2 étant un nom de fichier cité comme exemple. Storage Type. Un byte : il caractérise le genre du fichier DATA ; ce n'est en fait qu'une partie de Storage Type, et plus précisément 4 bits qui sont utilisés. Le byte pouvant prendre les valeurs suivan- tes : $01, $02, $03, $0D, $GE ou SOF. Statut byte. Un byte : il représente V'image binaire de plusieurs données (Index bloc modifié, bloc de données modifié, fichier modifié depuis que la commande OPEN a été déclarée, etc.). $07 F307 $08 F308 $09 F309 Access byte. Un byte ; il caractérise la facon dont un fichier sera abordé par la seauuaeseusuerssoensanenenessearssssessssonessEeTEE EST sEsesSeEesesseAsosEcenseeessesssenecssneseeesees GUY-HACHETTE suite ; écriture autorisée, lecture seule, etc. ses $F200-$F2FF. Comme FCB, cette structure existe uniquement dans la mémoire de |'Apple et n‘a rien de commun avec les entrées des fichiers de $0A F30A — Newline Character. Un byte : il est déter- i i miné par la fonction Aci et dési- connees ev Directory dels aisquette: gne le dernier caractére @ lire dans un 8 entrées au maximum sont disponibles, et cha- fichier. cune occupe 32 bytes, ce qui permet au systéme de mémoriser 8 lecteurs de disquettes. L’occupation $0B F30B Buffer Index. Un byte : numéro d’ordre de l'espace mémoire alloué au VCB est dégressive, du tampon dont le pointeur se trouve c'est-a-dire que la premiére entrée se fera a sauvegardé dans la page globale de l'adresse $F2EG, la seconde 4 l'adresse $F2CG, etc. FRODOS. La raison d’étre de VCB est due essentiellement 4 $0C F30C Data Pointer. Deux bytes (LByte, HByte) : . notion ne Nolume des chquettes meee en place pointent le premier bloc des données du Nala Se Eee SU ONS» Serr auanue.le. ee 2 fichier DATA. olume d'une disquette, placé en en-téte d'un 1c Volume-Directory, sera copié aux bytes relatifs SOE F3GE Index Block Number. Deux bytes (LByte, $01-$OF (1-15) de l'entrée VCB, tandis que le HByte) : cette paire de bytes est nulle si numéro de bloc du Key Block sera copié en $16 (22). le fichier DATA ne posséde pas de réper- toire des blocs, fichier de moins de 512 | Entrée d'un Volume Control Block —VcB | bytes de longueur, sinon les deux bytes indiquent le nombre de blocs index. Pos. Adres. Signification $10 F310 First Block. Deux bytes : c'est le nu- $00 F2E0 Name Length. Un byte : désigne Ia lon- méro du premier bloc qui se trouve en gueur du nom d'un fichier. mémoire. $01 F2E1 Name. Nom du Volume-Directory, avec $12 F312 Pointeur MARK. Trois bytes (LByte, un maximum de 15 caractéres. MByte, HByte) : pointent la position rela- tive dans un fichier. $10 F2FO Unit Number — DSSSG000. Un os qui $15 F315 Pointeur EOF. Trois bytes (LByte, MByte, copselane sus /e‘perinncriave en tae HByte) : désignent la longueur d'un fichier texte, qui correspond 4 la position $11 F2F1 Flag Byte — Drapeau. Un byte qui absolue dans un fichier. informe que le fichier est ouvert ou SSS Se ea. fermé : dans le premier cas le byte pren- $18 F318 Blocks Used. Deux bytes (LByte, HByte) : dre: corvme valeur £680 as dons le'sacond désignent le nombre de blocs occupés cas £$00 par le fichier, i a sc icgehiaee $12 F2F2 Total Blocks. Deux bytes qui désignent le altel Drei re (nutes: nombre total des blocs alloués 4 la dis- $1B F31B Level. Un byte : utilisé par les comman- quette ; c'est la capacité maximale de des CLOSE et FLUSH : c'est la copie de sauvegarde — $0118 = 280 blocs pour Vadresse $BF94 de la page globale de un disque 35 pistes standard. PRODOS. $14 F2F4 Free Blocks. Deux bytes qui renseignent SIC F31C Flag Byte — Drapeau. Un byte : prend la sur le nombre de blocs disponibles de la valeur £$00, pour un fichier fermé et disquette. £$80 pour un fichier ouvert ou modifié. - $16 F2F6 Blocks Number Key-Blocks. Deux bytes $1D F31D Deux bytes inutilisés. qui renseignent sur Ja position du Key SIF FSIF Newline Enable Mask. Un byte de mas- Gear — (soae2 que, utilisé par NEWLINE ($C9), $18 F2F8 Deux bytes inutilisés. [ Volume Control Block — vee | SIA F2FA VBM Block. Deux bytes (LByte, HByte) Volume Control Block désigne les entrées des péri- phériques (drives) en ligne et se trouve aux adres- qui pointent le premier bloc de la Bit- Map — normalement bloc $0006. (suite page 30) aaa aa el a a a a aa aaa a ala ella alaalelataitalatel TREMPLIN MICRO 29 $1C F2FC BM Extent Number. Un byte qui rensei- gne sur le numéro — valeur relative du bloc de la Bit-Map : @0 = premier bloc de la VBM. VBM Extent est une configura- tion engendrée par un Volume qui nécessite plus d'un bloc pour sa Bit-Map. $1D F2FD Un byte inutilisé. $IE F2FE File Open. Un byte qui désigne le nom- bre de fichiers ouverts 4 cet instant. SIF F2FF Un byte inutilisé. U'auteur signant ses articles sous la plume de Mar- cel COTTINI a écrit un certain nombre de livres trai- tant les sujets les plus divers sur |'informatique grand public, en particulier LA PRATIQUE DE L'APPLE II. Parmi ses ouvrages SYSTEME PRODOS DE L'APPLE II des éditions du PSI est principale- ment destiné @ I'étude du systéme d’exploitation ProDOS. Il s‘adresse 4 tous ceux qui désirent sortir des sentiers battus de la programmation rétro- grade. Un livre a lire et 4 relire. Le contréle des connaissances sur Apple ASSIMIL récidive, mais cette fois avec espagnol Qui ne connait pas les fameuses méthodes ASSIMIL... et notam- ment Le nouvel anglais sans peine ? Qui n‘a jamais eu entre les mains l'un des populaires petits bouquins du fameux éditeur international ? ASSIMIL est devenu synonyme — et pas seule- ment en France — d'auto-apprentissage des langues. II faut avouer que les auteurs sont passés maitres dans l'art — 6 combien difficile — d’expliquer la prononciation des mots de chaque langue (cela va de I’anglais 4 I'hébreu, mais en passant par le chinois, l’arabe, le brésilien, le serbo-croate, l'espéranto... et j’en oublie, tant la liste est longue). Naturellement, les cassettes facilitent bien les choses, mais ‘ai connu un jeune professeur qui se familia- risa avec le russe sans autre guide que le manuel. ET APPLE? J'y viens : il vous aide tout sim- plement 4 contréler vos connais- sances grace 4 16 programmes, enregistrés sur 3 disquettes et vous proposani plus de 500 exer- cices. Aujourd’hui, ce contréle concerne l'espagnol, mais la méme méthode existe en anglais (nous en avions d’ailleurs parle il y ade cela quelques mois). Le but des auteurs est 4 la fois simple et ambitieux : vous aider Renseigne: 3 @ assimiler 87 points de gram- maire, orthographe ou vocabu- laire de l'espagnol courant, d'abord en vous présentant la régle correspondante, ensuite en vous proposant de résoudre les exercices d'application. Le logiciel, réalisé par d’authenti- ques pédagogues, prévoit bien entendu les principaux cas d'erreur ce qui le rend d’autant plus sympathique. its ; 11, rue des Pyramides — 75001 PARIS — Tél. : (1) 42.60.40.66. ™ apoie ASSIMIL exercices d'auto-controle GUY-HACHETTE BITIEUX, ENORME, tique pour un tas de caiculs ! Pierre PRIVAT NE rapide lecture des lignes 185 & 215 du listage ci-aprés vous donnera un avant- godt des nombreuses possibilités du BRICO (pensez "BRICOLAGE”), programme de Pierre PRIVAT (Castres, 81). N’hésitez pas & poursuivre votre examen sommaire, en vous attardant sur les lignes des divers menus de ce programme. Je vous l’accorde : on peut lui reprocher de pécher par excés de longueur. Vous reconnaitrez pourtant qu'il était difficile de concevoir un programme 4 la fois simple et court, mais néanmoins, capable de présenter tous les avantages de celui-ci. Et puis, qui vous empéche de supprimer une certaine redondance d'instructions en-utilisant les astuces habituelles ? Notez au passage, que la disquette TREMPLIN MICRO vous évitera l’ankylose du poignet qui — je n’en doute pas — vous guette déja ! 108 : REM #ee##eeeeK## BRICO, par Pierre PR IVAT, Oct 1986 #eeeeeee 115 PRINT : CLEAR : HOME : LOMEM: 28755 128 M$ = "Xx" 125 ONERR GOTO 2518 138 D$ = CHR$ (4):BIP$ = CHR (7) 135 PRINT D$;"PRE3": PRINT 148 Mi$ = "(ESC) --) “Retour au menu généra 1" 145 M2$ = “L’unité utilisée est le: * 158 M3$ = "ATTENTION: Utilisez le point a] a place de la virgule !* 155 PI = 3.1415926524 168: 165 REM ### 178: 175 TA = 15:ST = 8 188 HOME : HTAB 27: PRINT “BRICO, BRICOLAGE": GOSUB 2690 185 VTAB S: HTAB 14: PRINT “1. --> run périmétre” 198 PRINT : HTAB 14: PRINT "2, --> r une surface" 195 PRINT : HTAB 14: PRINT "3. --) run volume” 208 PRINT : HTAB 14: PRINT "4, --) r des dosages" MENU GENERAL ##* AIDE AU Calcule “Calcule “Calcule Calcule 8830 SE6B ecis 271C 2080 1886 265 PRINT : HTAB 14: PRINT "5. --> “Calcule r la quantité de revetement (sols/murs/ plafond)" 218 PRINT : HTAB 14: PRINT "6, --> “Convert ir des unités" 215 PRINT : HTAB 14: PRINT "7. --> “Calcule rt des consommations" 228 PRINT : HTAB 14: PRINT "8. --> “Termine rn" 225 GOSUB 2435: IF REP < 1 OR REP > 8 THEN PRINT BIP$: GOTO 225 238 ON REP GOTO 256,585,815,1158,1405,1985, 2218 ,2738 235 : 248 REM #**# PERIMETRES #¥* 245: 258 T$ = "PERIMETRE": GOSUB 1920 255 VTAB 2: HTAB 38: PRINT “CALCULER UN ";T $ 268 GOSUB 2698 265 VTIAB 5: HTAB 29: PRINT "1. --> “Carré” 278 PRINT : HTAB 29: PRINT "2. --)> “Rectang er 275 PRINT : HTAB 29: PRINT "3. --) “Parallé logr amme" 288 PRINT : HTAB 29: PRINT "4. --) “Triangl e" 285 PRINT : HTAB 29: PRINT "S. --) “Trapeze 298 PRINT : HTAB 29: PRINT "6. --) “Cercle” 6696 1369 O1EB 665 3642 883A 963A AEF B928 9FBI 4944 asia CS 530D E108 8037 eennnananaeneensoeenesenessssseorssasscassosoenssnasassessssossssssssousensnecseeosseanasennonneeneees TREMPLIN MICRO 31 —_ eR D Rw eeeesnassesn Bes eves senoEDDeNsssEansssOR Ness CORSE TEN sEELeCETEEEsLoEese ones seovessEssoeEEeeaEEES 295 PRINT : HTAB 26: PRINT M$ 386 GOSUB 2435: IF REP < 1 OR REP > 6 THEN PRINT BIP$: GOTO 368 385 ON REP GOTO 325,355,355, 385,430,475 318: 315 REM ##* PER. CARRE tt 328: 325 HOME : HTAB 38: PRINT T$;" D’UN CARRE": GOSUB 2718 338 VTAB 18: HTAB 15: INPUT “Longueur d’un coté ? ";C: IF C <¢ = THEN PRINT BIP $: GOTO 338 335 P = C * 4: GOSUB 2538: GOSUB 2478: GOTO 325 348 : 345 REM ##* PER. RECTANGLE *## 358: 355 HOME : HTAB 16: PRINT T$;" D’UN RECTANG LE QU D’UN PARALLELOGRAMME": GOSUB 2718 368 VTAB 8: HTAB 15: INPUT “Longueur ? ";LO : IF LO ¢ = @ THEN PRINT BIP$: GOTO 3 68 365 VTAB 18: HTAB 15: INPUT “Largeur ? ";LA : IF LA ¢ = 8 THEN PRINT BIP$: GOTO 3 65 378 P = (LO + LA) * 2: GOSUB 2538: GOSUB 24 78: GOTO 355 375 : 386 REM ##* PER. TRIANGLE ##* 385 : 398 HOME : HTAB 28: PRINT T$;" D’UN TRIANGL E*: GOSUB 2718 395 VTAB 9: HTAB 15: INPUT “Lonqueur du fer coté 2? ";Cl: IF Cl < = @ THEN PRINT BIP$: GOTO 395 488 VTAB 11: HTAB 15: e coté ? "3C2: IF C2 ¢ BIP$: GOTO 468 485 VIAB 13: HTAB 15: INPUT “Longueur du 3n e coté ? ";C3: IF C3 < = 8 THEN PRINT BIP$: GOTO 485 418 P= Ci + C2 + C3: GOSUB 2538: GOSUB 247 @: GOTO 398 “is: 428 REM *** PER. TRAPEZE ##* 425: 438 HOME : HTAB 29: PRINT T$;" D’UN TRAPEZE “: GOSUB 2718 435 VTAB 8: HTAB 15: INPUT “Longueur ler co té ? "31: IF Cl < = 8 THEN PRINT BIP $: GOTO 435 448 VTAB 9: HTAB 15: INPUT "Longueur 2me co té ? *;C2:; IF C2 ¢ = 8 THEN PRINT BIP $: GOTO 448 445 VIAB 18: HTAB 15: INPUT “Longueur 3me c INPUT “Longueur du 2m = 8 THEN PRINT GECD 8834 8838 0548 8834 C64 0834 6Bi4 C383 9710 8127 073F oté 2 "303: IF C3 ¢ P$: GOTO 445 458 VTAB 11: HTAB 15: INPUT "Longueur 4me c oté ? ";C4: IF C4 ¢ = 6 THEN PRINT BI P$: GOTO 458 455 P= Ci + C2 + C3 + C4: GOSUB 2538: GOSU B 2478: GOTO 438 468: 465 REM ##* PER, CERCLE ##* 478: 475 HOME :T$ = "CIRCONFERENCE": HTAB 27: PR INT T$;" D’UN CERCLE": GOSUB 2716 488 VTAB 11: HTAB 15: INPUT "Diamétre du ce rcle ? "3D: IF D < = THEN PRINT BIP $: GOTO 488 485 P = D * PI: GOSUB 2538: GOSUB 2478: GOT 0 475 498: 495 REM ##* SURFACES *#* 586: 585 T$ = "SURFACE": GOSUB 1928 518 HTAB 38: PRINT “CALCULER UNE ";T$: GOSU B 2698 = 6 THEN PRINT BI S15 VIAB 5S: HTAB 29: PRINT "1. --) “Carré" 528 PRINT : HTAB 29: PRINT "2. --> “Rectang le* 525 PRINT : HTAB 29: PRINT "3. --) “Parallé Jogr amme* 538 PRINT : HTAB 29: PRINT "4. --) “Triangl e" 535 PRINT : HTAB 29: PRINT "5. --) “Trapeze 548 PRINT : HTAB 29: PRINT "6. --) “Cercle” 545 PRINT : HTAB 29: PRINT --) “Sphére* 558 PRINT : HTAB 26: PRINT Mi$ 555 GOSUB 2435: IF REP < 1 OR REP ) 7 THEN PRINT BIP$: GOTO 555 568 ON REP GOTO 588,616,645,688,715,755,775 565 : 578 REM ##* 575: 588 HOME : HTAB 29: PRINT T$;" D’UN CARRE*: GOSUB 2718 585 VTAB 16: HTAB 15: INPUT "Longueur d’un coté ? ";C: IF C < = ® THEN PRINT BIP $: GOTO 585 598. S = C * Cs GOSUB 2578: GOSUB 2478: GOTO 588 595 3 686 REM *#* SURF. RECTANGLE #** 685 : 618 HOME : HTAB 29: PRINT T$;" D’UN RECTANG LE": GOSUB 2718 615 VTAB 8: HTAB 15: INPUT “Longueur ? ";LO : IF LO < = @ THEN PRINT BIP$: GOTO 6 SURF. CARRE ##* EO6F O16F 0E35 8834 C9E7 £BB7 0838 9E12 6944 O61A cSt E108 6037 9888 C78A 0834 8834 Fe2c A357 8834 8834 FeS4 Salalah adele alee a aerate alae deere ett deed deaeteededded deeded edt et ed GUY-HACHETTE 32 15 628 VTAB 18: HTAB 15: INPUT “Largeur ? ";LA : IF LA < = @ THEN PRINT BIP$: GOTO 6 28 625 S$ = LO * LA: GOSUB 2578: GOSUB 2478: GO TO 618 638: 635 REM ### SURF. PARALLELOGRAMME s+ 648: 645 HOME : HTAB 26: PRINT T$;" D’UN PARALLE LOGRAMME": GOSUB 2718 658 VTAB 8: HTAB 15: INPUT “Longueur ? ";L0 : IF LO < = @ THEN PRINT BIP$: GOTO 6 58 655 VTAB 18: HTAB 15: INPUT “Hauteur ? ";HT : IF HT < = @ THEN PRINT BIP$: GOTO 6 55 668 S = LO * HT: GOSUB 2578: GOSUB 2478: 60 TO 645 665 : 678 REM ##* SURF. TRIANGLE ##* 675 : 688 HOME : HTAB 29: PRINT T$;" D’UN TRIANGL E*: GOSUB 2718 685 VTAB 8: HTAB 15: INPUT “Base ? ";BS: IF BS ¢ = 6 THEN PRINT BIP$: GOTO 685 698 VTAB 16: HTAB 15: INPUT "Hauteur ? "HT : IF HT ¢ = @ THEN PRINT BIP$: GOTO 6 98 695 S = (BS * HT) / 2: GOSUB 2578: GOSUB 24 78: GOTO 688 788 : 765 REM #*## SURF, TRAPEZE ##* 718 : 715 HOME : HTAB 29: PRINT T$;* D’UN TRAPEZE ": GOSUB 2718 728 VIAB 8: HTAB 15: INPUT “Grande base ? * j6B: IF GB < = @ THEN PRINT BIP$: GOT 0 728 725 VTAB 9: HTAB 15: INPUT "Petite base ? * 3PB: IF PB < = @ THEN PRINT BIP$: GOT 0 725 738 VTAB 18: HTAB 15: INPUT "Hauteur ? ";HT : IF HT < = 6 THEN PRINT BIP$: GOTO 7 38 735 $ = ((GB + PB) * HT) / 2: GOSUB 2578: G OSUB 2478: GOTO 715 748: 745 REM #** SURF. CERCLE ### 758 : 755 HOME : HTAB 29: PRINT T$;* D’UN CERCLE* : GOSUB 2718 768 VTAB 8: HTAB 15: INPUT "Diamétre ? ";D: IF D < = THEN PRINT BIP$: GOTO 768 765 S$ = PI * ((D / 2) * 2): GOSUB 2576: GOS 7229 6503 1008 0834 8034 all 4828 BB17 0834 8834 FAIS Dace 0834 0834 F370 B9AF 8BFF EFFC 8834 88348 A76D UB 2478: GOTO 755 778 : 775 REM *#* SURF. SPHERE ##* 788 : 785 HOME : HTAB 28: PRINT T$;" D’UNE SPHERE "; GOSUB 2718 798 VTAB 8: HTAB 15: INPUT “Diamétre ? "5D: IF D < = 8 THEN PRINT BIP$: GOTO 798 795 S = (PI * ((D / 2) * 2)) * 4: GOSUB 257 8: GOSUB 2478: GOTO 785 888 : 885 REM ##* VOLUMES ### 818: 815 T$ = "VOLUME": GOSUB 1928 828 HTAB 29: PRINT "CALCULER UN ";T$: GOSUB 2698 825 VTAB 5: HTAB 28: PRINT “1. --) “Cube” 838 PRINT : HTAB 28: PRINT "2. --) “Parallé lepipéde rectangle” 835 PRINT : HTAB 28: PRINT "3. --) “Prisme droit a base parallélogramme* 848 PRINT : HTAB 28: PRINT "4. droit a base triangulaire® 845 PRINT : HTAB 28: PRINT "5S. ~-) “Prisme droit & base trapézoidale" 858 PRINT : HTAB 28: PRINT "6. --) e 855 PRINT : HTAB 28: PRINT "7. --) “Sphére” 868 PRINT : HTAB 17: PRINT MI$ 865 GOSUB 2435: IF REP ¢ 1 OR REP > 7 THEN PRINT BIP$: GOTO 865 878 ON REP GOTO 898,926,968, 1808 ,1846, 1885, 1128 “Prissme “Cylindr 875 : 888 REM *### VOL. CUBE ###* 885 : 898 HOME : HTAB 28: PRINT T$;" D’UN CUBE": GOSUB 2718 895 VIAB 18: HTAB 15: INPUT “Longueur d’un coté 2 ";C: IF C ¢ = 8 THEN PRINT BIP $: GOTO 895 988 V = C * 3: GOSUB 2685: GOSUB 2478: GOTO 898 985 : 918 REM ##* VOL. PARALLELEPIPEDE RECTANGLE ee VIS: 928 HOME : HTAB 21: PRINT T$;" D’UN PARALLE LEPIPEDE RECTANGLE": GOSUB 2718 925 VTAB 8: HTAB 15: INPUT "Longueur ? ";LO 3 IF LO < = @ THEN PRINT BIP$: GOTO 9 25 938 VTAB 9: HTAB 15: INPUT “Largeur ? ";LA: IF LO ¢ = 8 THEN PRINT BIP$: GOTO 938 935 VTAB 18: HTAB 15: INPUT "Hauteur ? ";HT B75C 8834 7410 5705 4287 O61E B635 0832 EFOE cdi 8834 E45 0038 8838 a a § TREMPLIN MICRO 33 NEN eee = @ THEN PRINT BIP$: GOTO 9 948 V = (LO * LA) * HT: GOSUB 2685: GOSUB 2 478: GOTO 928 945 : 958 REM ##*# VOL. PRISME DROIT BASE PARALLE LOG, ##* 955 : 968 HOME : HTAB 16: PRINT T$;" D’UN PRISME DROIT A BASE PARALLELOGRAMME": GOSUB 27 18 965 VTAB 8: HTAB 15: INPUT “Longueur paral! elogramme ? ";L0:; IF LO < = 8 THEN PR INT BIP$: GOTO 965 978 VTAB 9: HTAB 15: INPUT “Hauteur parallé logramme ? ";HP: IF HP < = @ THEN PRI NT BIP$: GOTO 978 975 VTAB 18: HTAB 15: INPUT “Hauteur du pri sme ? ";HH: IF HH < = @ THEN PRINT BI P$: GOTO 975 986 V = (LO * HP) * HH: GOSUB 2685: GOSUB 2 478: GOTO 968 985 : 998 REM *** VOL. PRISME DROIT BASE TRIANG. +e 995 3 1868 HOME : HTAB 18: PRINT T$;" D’UN PRISME DROIT A BASE TRIANGULAIRE": GOSUB 2718 1885 VTAB 8: HTAB 15: INPUT “Base triangle ? ";BA: IF BA < = 8 THEN PRINT BIP$: G6 OTO 1885 1818 VTAB 9: HTAB 15: INPUT “Hauteur triangl e 2? “;HT: IF HT < = 6 THEN PRINT BIPS . + GOTO 1818 1015 VTAB 18: HTAB 15: INPUT “Hauteur du pri sme ? ";HH: IF HH < = 8 THEN PRINT BI P$: GOTO 1815 1628 V = ((BA * HT) / 2) * HH: GOSUB 2685: G OSUB 2478: GOTO 1608 1825 : 1038 REM #*#* VOL. PRISME DROIT BASE TRAPEZ. et 1035 + 1048 HOME : HTAB 18: PRINT T$;" D’UN PRISME DROIT A BASE TRAPEZOIDALE": GOSUB 2718 1845 VTAB 8: HTAB 15: INPUT “Grande base tra peze ? ";GB: IF GB < = 6 THEN PRINT B IP$: GOTO 1845 1658 VTAB 9: HTAB 15: INPUT "Petite base tra peze 2 ";PB: IF PB < = @ THEN PRINT B IP$: GOTO 1858 1855 VTAB 18: HTAB 15: INPUT "Hauteur trapéz e ? "sHT: IF HT < = @ THEN PRINT BIPS : GOTO 1855 1868 VTAB if: HTAB 15: INPUT “Hauteur du pri #3 2? 8834 0634 7172 8475 SEC 8834 876F sme ? ";HH: IF HH < = @ THEN PRINT BI P$: GOTO 1868 { 1865 V = (((GB + PB) * HT) / 2) * HH: GOSUB 2685: GOSUB 2478: GOTO 1048 1678 : 1875 REM *** VOL. CYLINDRE *##* 1688 : 1885 HOME : HTAB 38: PRINT T$;" D’UN CYLINOR —": GOSUB 2718 1698 VTAB 8: HTAB 15: INPUT “Diamétre cylind re? *3D: IF D < = @ THEN PRINT BIP$: GOTO 1898 1895 VTAB 18: HTAB 15: INPUT “Hauteur cylind re ? ";HC: IF HC < = THEN PRINT BIP $: GOTO 1895 1188 V = (((D / 2) * 2) * PI) * HH: GOSUB 26 85: GOSUB 2478: GOTO 1685 1185 : 1118 REM ##* VOL. SPHERE ##* MiSs 1128 HOME : HTAB 38: PRINT T$;" D’UNE SPHERE ": GOSUB 2718 1125 VTAB 18: HTAB 15: INPUT "Diamétre sphér e ? "3D: IF D < = @ THEN PRINT BIPS: GOTO 1125 1138 V = ((D * 3) * PI) / 6: GOSUB 2685: GOS UB 2478: GOTO 1126 1135: 1148 REM ##* DILUTIONS/DOSAGES *#* 1145: 1158 HOME : PRINT : HTAB 23: PRINT "CALCULER DES DOSAGES ET DILUTIONS": GOSUB 2698 1155 TA = 18 1168 VTAB 7: HTAB 26: PRINT “1. --) “1 + X" 1165 PRINT : PRINT : HTAB 28: PRINT "2. --) “xX” PRINT : PRINT : HTAB 28: PRINT "3. --) “X produit / Y produit" 1175 PRINT : PRINT : HTAB 17: PRINT MIS 1186 GOSUB 2435: IF REP < 1 OR REP > 3 THEN PRINT BIP$: GOTO 1188 1185 ON REP GOTO 1205,1278,1335 1198 : 1195 REM ### DOSAGE 1 + X ##* 1268 : 1205 HOME : HTAB 28: PRINT “DILUTIONS DE FOR ME 14x? HTAB 15: PRINT "1 partie de concentré p our X parties de diluant.": GOSUB 2698 1215 VIAB 5: HTAB 16: INPUT "Unité utilisée > *3US 1228 VTAB 7: HTAB 18: PRINT M3$ 1225 VIAB 18: HTAB INPUT "Valeur de X ? "3X: IF X ¢ = @ THEN PRINT BIP$: GOTO 1225 1178 1218 8838 683A SFil £035 8834 0838 4002 8834 8834 FEC6 391F dE7C FF31 44FC 883A 8834 771A 2063 FAB2 DIAZ 4574 ad aaa aa ae aaa ada a eae eae aaah alealaiaataleletellateteaiaeiael GUY-HACHETTE 34 suueseeeseeensessesesessssssssssesscesscrssnzananessssseessnssessssessssessossssnesaeesssssasesseneenes 1238 VTAB 12: HTAB 18: INPUT "Quantité total e a obtenir 2 ";Q: IF @< = 8 THEN PR INT BIP$: GOTO 1238 12352 =X + 1:00 =Q@/ 2:00 = INT (QC * 18 8) / 188:0D = Q - QC 1248 VTAB 15: HTAB 18: PRINT "II vous faudra donc:" 1245 PRINT : HTAB 13: PRINT “- ";QC;" ";U8;" de concentré, et” 1258 HTAB 13: PRINT "- ";QD;" ";U8;" de dilu ant.": GOSUB 2478: GOTO 1158 1255 : 1268 REM ##*# DOSAGE X % ##* 1265 : 1278 HOME : HTAB 38: PRINT "DOSAGES DE FORME x %" 1275 HTAB 16: PRINT "Diluer X % d’un produit dans une quantité donnée": GOSUB 2698 1288 VTAB 5: HTAB 18: INPUT "Unité utilisée ? *3US 1285 PRINT : HTAB 18: PRINT M3$ 1298 VTAB 16: HTAB 18: INPUT “Valeur de X ? "sX: IF X ¢ = 68 THEN PRINT BIP$: GOTO 1298 1295 VTAB 12: HTAB 18: INPUT “Quantité a laq uelle on ajoute le produit ? ";Q: IF @ (= 6 THEN PRINT BIP$: GOTO 1295 1388 D = (Q / 188) * X:D = INT (D * 1888) / 1988 1385 VTAB 15: HTAB 18: PRINT "I] vous faudra donc ajouter:" 1318 PRINT : HTAB 13: PRINT "- "3D; de produit, et" 1315 PRINT : HTAB 18: PRINT "Vous aurez au t otal: ";@ + D3" ";U$;" de solution.”: G OSUB 2478: GOTO 1158 1328 : 1325 REM *#*# DOSAGE X / Y ##* 1338: 1335 HOME : HTAB 26: PRINT "DOSAGES DE FORME X UNITES POUR Y UNITES" 1348 HTAB 18: PRINT “Ajouter X unités d’un p roduit par Y unités d’un autre produit" : GOSUB 2698 1345 VTAB 5: HTAB 18: INPUT "Unité utilisée 2 "sUs 1358 PRINT : HTAB 18: PRINT M3$ 1355 VTAB 9: HTAB 18: INPUT "Valeur de X ? * 3X: IF X ¢ = @ THEN PRINT BIP$: GOTO 1355 1368 YTAB 11: HTAB 1@: INPUT "Valeur de Y ? "s¥: IF Y ¢ = 8 THEN PRINT BIP$: GOTO 1368 1365 VTAB 13: HTAB 18: INPUT "Quantité total e de produit a obtenir 7 °;Q: IFQ@< = 7291 c7c4 1D8C 8834 8834 0887 2305 FAB2 AGB 168C 0838 LL) 6598 S1DF FAB2 E45¢ 878 @ THEN PRINT BIP$: GOTO 1365 1378 OX = (0 / (X + Y)) # X:0X = 108) / 188:0Y = Q - 1375 PRINT : HTAB 18: PRINT "I1 vous faudra donc: * 1388 PRINT : HTAB 13: PRINT “- ";QX;" ";U8;" de produit X, et" 1385 HTAB 13: PRINT "- ";QY;" ";U$;" de prod uit Y.": GOSUB 2478: GOTO 1158 1398 : 1395 REM ##* ROULEAUX REVETEMENT ###* 1488 : 1485 HOME : PRINT : PRINT : HTAB 23: PRINT * CALCUL DE LA QUANTITE DE REVETEMENT": 6 OSUB 2698 1418 TA =1 1415 VTAB 9: HTAB 28: PRINT "1. --> “Murs (P apiers peints)* 1428 PRINT : PRINT : HTAB 28: PRINT "2. --) “Plafond ou sol (rouleaux)” 1425 PRINT : PRINT : HTAB 28: PRINT "3. --) “Sols et murs (carrelages)" 1438 PRINT : PRINT : HTAB 17: PRINT MIS 1435 GOSUB 2435: IF REP < 1 OR REP > 3 THEN PRINT BIP$: GOTO 1435 1448 ON REP GOTO 1445,1645,1735 1445 T$ = "MURS (Papier peint)* 1458 HOME : HTAB 29: PRINT T$: HTAB 12: PRIN T M3$: GOSUB 2698 1455 VTAB 5: INPUT "Hauteur des murs (en m) 2? "3H: IF H ¢ = @ THEN PRINT BIP$: GO TO 1455 1468 HM = H * 108 1465 VTAB 7: INPUT "Périmétre de la piéce (e nm) ?";P: IF P< = THEN PRINT BIP $: GOTO 1465 1478 VTAB 9: INPUT "Total des largeurs des o uvertures (en m) ? "30: IF 0 < @ ORO > = P THEN PRINT BIP$: GOTO 1478 1475 PP = (P - 0) * 108 1488 VTAB 12: INPUT “Longueur d’un rouleau ¢ enm) ? ";L: IF L < = @ THEN PRINT BI P$: GOTO 1488 1485 LO = L * 188 1498 VTAB 15: INPUT “Largeur d’un rouleau (e ncm) ? ";LA: IF LA <¢ = @ THEN PRINT BIP$: GOTO 1498 1495 VTAB 18: INPUT “Distance entre motifs i dentiques <raccord) (en cm) ? "sMT: IF MT < @ THEN PRINT BIP$: GOTO 1495 1568 LE = H4 + 5 + MT: REM ##* Longueur d’un 16 +e 1585 NR = INT (LO / LE): REM

Showing the first 100000 of 220603 characters.

mp.ls