Skip to main content

magazine poms14

  • PublicationApple Periodicals
  • Pages80
  • Sourcemagazine_poms14.pdf
← Magazines magazine poms14
/ 80
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
Pour tous les passionnés de lordinateur personnel, les branchés et ceux qui le sont moins, Apple lance le Club Apple. Enfin un |club avec des idées et des services pour comprendre, pour gagner, pour s'évader. Le Club Apple, c’est l'esprit Apple. Crest le fruit de|la passion. Pour en savoir plus sur le Club Apple - le fruil de la passion - et connaitre tous les avantages que nous réservons aux membres du club, découpez dés aujourd'hui le bon et retournez-le a Club Apple, avenue de 'Octanic Z\ de Courtaboeuf - BP 131, Les Ulis cedex 91944. Vous recevrez sans engagement de votre part toutes les informations pour devenir membre du club. Nom Prénom Adresse Code postal —__ — = SEPTEMBRE-OCTOBRE 1984 Sommaire Page Langage * | Niveau * * Editorial par Hervé Thiriez 5 Initiation a l’assembleur par Gérard Michel 7 B-A T Procédure & par Philippe Le Dru 15 A M-T i Disque virtuel 64K par Jacques Rey 19 A M-T Appleworks a l’essai par Guy Lapautre 23 i dane : L’Apple II sauce Macintosh par Jean-Michel Gourévitch 24 z Amper-interpréteur ICARE par Pascal Cantot 25 B-A M Visicalc Advanced Version par Hervé Thiriez 37 -d Les essais du Macintosh par Hervé Thiriez 43 De MacWrite 4 Apple Writer //e par Pom’s 45 B OM Les tokens du Basic Microsoft par Jean-Luc Bazanegue 46 (B) id: Gestion de masques améliorée par Jacques Tran-Van et Maurice Schapiro 47 B-A a Leve-toi et brille par Alexandre Avrane 53 fr 217 fichiers par disquette par Marcel Cottini 55 B M Conversion minuscules/MAJUSCULES par Alexandre Avrane 56 A M Un catalogue général par Michel Baudrand 57 B-A ¥ Koala pad a I’essai par Marcel Cottini 67 Micro-informations par Jean-Michel Gourévitch 69 Lecture/écriture rapide de tableaux par Jacques uma 73 B T INPUT généralisé miniature par Jacques Duma 73 B i Coursier des lecteurs par Alexandre Duback 75 Langage : Basic) - A(ssembleur) - P(ascal). (B) signifie : relatif au BASIC. * Niveau . D(ébutant) - M(oyen) - P(rofessionnel) - Tous) P-T signilie : programme utllisable par Les annonceurs ACER MICR' COMPUTER M.B.D.C, : SATELCOM : p77. SICOB : p. 4 INFOSOFT : p. 66 / TELECOMPO : p 74 7 HELLO : les débutants, mais dont la compréhension est de niveau “Professionnel” 18) Apple: p. 38-39 | ASAP: p. 7Z/ B.F.L.: p. 79 | Club Apple : p. 2) COMPUTER 3 : p. 74 / DYNAMITE ‘1 HIT Microsystéme : p. 80 | IEEE : p. 68 | INFORTEC : p. 68 /KARDEX: p 13/ LIST: p. 51 3 MEMSOFT: p. 44 | L’Ordinateur Individuel : p. 6 | PEACHTREE - p. 40-41 / P.S.1. Diffusion : p, 12 Edition MEV — 64-70 me des Chantiers — 78000 Versailles Directeur de la publication « Hervé Thiriez, Imprimerie Rosay, 94300 Vincennes. Imprime en France. Depot legal : 3° trimestre 1984 Pom’s n° 14 QUESTIONS DAUJOURD'HUI ? REPONSES AU SICOB. SICOB 84 CMT-PARIS LA DEFENSE DU 22AU 28 SEPTEMBRE (SAUF DIMANCHE 23) DE SHA 18H. JOURNEES PROFESSIONNELLES: 19.20, 21SEPT Editorial Trois ans déj ! Trois années pendant lesquelles Pom’s a augmenté sa pagination (ce numéro comporte 80 pages). sa fréquence de parution, son tirage. et méme son prix de vente. quoique moins de 15 % daugmentation en trois ans. cela soit tin record en matiére d'inflation ! Surtout avec le Papier qui a Pratiquement triplé et les frais postaux qui n'ont pas respecté les consignes du gouvernement en matiére de contréle des prix. Trois articles de ce numéro valent chacun le prix d'un abonnement annuel : tout d'abord le catalogue général de Michel Baudrand, et le programme Icare de Pascal Cantot qui regroupe (tel Haifa) un paquel de routines toutes plus intéressantes les unes que les autres. sous le contrdle du céldbre &. Puis. inspiré par l'article de Michel Haag paru dans le numéro 12, la transformation par Jacques Rey de votre carte 80 colonnes “élendue™ en un disque virtuel de 64K. Marcel Cottini stocke 217 fichiers sur une disquette. Il vous propose également un essai de Koala Pad. Dans le domaine des essais. vous trouverez également le logiciel Jane présenté par Jean-Michel Gourévitch, et Appleworks, logiciel intégré vu par Guy Lapautre. Pour ma part. j ai pu tester Visicalc Advanced Version, le dernier développement dle Visicale. Deux articles originaux d’Alexandre Avrane : d'une part une routine de conversion de Taffichage minuscule en majuscule pour que vos programmes concus sur ‘e et 'c soient utilisables sur Apple Il sans KOM LC. et d'autre part. une contribution originale en Visicale qui vous donnera les heures de lever et coucher du soleil. dacques Tran-Van ei Maurice Schapiro ont modifié le programme de gestion de masque écrit par Gerard Michel. Ce dernier poursuit par ailleurs sa série d'initiation 4 l'assembleur pour laquelle nous recevons toujours un courrier enthousiaste. Philippe Le Dru ajoute a I'Applesoft une routine de gestion de procédure avec des variables locales tout 4 fait “pascaliennes”. Quant A Jacques Duma, il vous délivre des problémes de virgules et deux- points dans les INPUTs en deux lignes d’Applesolt. En deux lignes également vous pourrez sauvegarder et recharger des tableaux de variables sur disquettes. La rubrique Macintosh grandit et va devenir, probablement A partir du numéro de novembre, un cahier complet. Je vous y présente une analyse de deux livres et deux logiciels de jeu. Jean-Luc Bazaneque a recherché pour vous les tokens du Basic Microsoft du Macintosh. et Pom’s vous donne le moyen denvoyer 4 votre brave Apple // des textes écrits avec MacWrite. Vous étes en elfel de plus en plus nombreux 4 disposer d'un Mac, et Pom's tent a apporter son soutien aussi aux utilisateurs A ce nou- veau bourreau des cceurs. Nous avons encore de nombreux Programmes passionnants en réserve e( prions les auteurs qui nous envoient leurs contributions de bien vouloir prendre patience. Dans le prochain numéro (navembre), entre autres beautés. vous aurez “Mobby Disk”. un programme qui permet d'analyser ou de modifier un disque 4 volonté Enfin, Por’s continue a rechercher un collaborateur connaissant parfaitement bien l'assembleur et le Basic Applesoft. sachant s‘exprimer clairement et sans fautes dortographe. pour un travail de rédaction pouvant aller du mi-temps au temps complet. Hervé Thiriez Erratum : sur la couverture. il s‘agissait de Bill Budge et non Bodge. Devons-nous y voir influence nefaste de la traduction de bug en Bogue ? Ont collaboré 4 ce numéro : Alexandre Avrane — Michel Baudrand ~ Pascal Caritui — Marcel Cottini — Alexandre Duback — Jacques Duma Jean-Michel Gourévitch ~ Guy Lapaulre — Philippe Le Dru ~ Gerard Michel - Jacques Rey — Maurice Schapiro n Van, Rédacteurs : Alexandre Avrane ~ Gerard Michel Directeur de la publication. rédacteur en chef ; Herve Thirtez Dessin : Laurent Bidot Siege social et abonnements : Editions MEV . 64-70), rue des Chantiers . 78000 Versailles Tél (3) 951.24.43 Rédaction et courrier des lecteurs : 59. bd de Glatigny — 7X00) Versailles Régle publicitaire : Force 7 Anne Jourdan - 5. place du Colonel Fabien - 75010) Paris Tél 2402201 Diffusion N.M.P.P. : Sophic Marner Tel (1) 240.22 01 Composition : Télécompo 13-15. avenue du Petit Parc 94300 Vincennes Tel 52! Impression : Rosay - 47, avenue de Pans 94300 Vincennes 1él 328 18 63 63 LAA LY Pom's n° 14 1980; il était déja la avant méme |’explosion de la micro- informatique , prét a évoluer avec elle d'année en année. 1984/1985 : il est “la” Bible. Son titre, ses fidéles le lui ont donne, naturellement: “LE” GUIDE. Instrument de premiere approche des neophytes Référence des passionnés, des vrais amateurs. des profes- sionnels, des constructeurs, des vendeurs. 4984/1985: LE GUIDE MICRO présente - les 216 fiches techniques detaillées des micro-ordinateurs du marché (de 500 FF a 50000 FF) le tableau exclusif de plus de 130 imprimantes, -un panorama des 60 logiciels a connaitre dans toutes les applications, -prés de 2000 adresses de constructeurs, de clubs et de boutiques, par ordre alphabétique et par département, - les mots clefs de |'informatique. 1* septembre 1984: LE GUIDE MICRO est vendu 35 FF chez votre marchand de journaux. 1984/1985 : élaboré par une équipe de journalistes, LE GUIDE MICRO explique : qu’est-ce qu’un ordinateur ? Que permet-il? LE GUIDE MICRO prend parti et dit pourquoi: pour ou contre 55 ordinateurs individuels. || commente les grandes manceu- vres de l'année 84. II tutoie l'avenir: les ordinateurs de janvier 85 sont au rendez-vous. LE GUIDE DE LORDINATEUR INDIVIDUEL Liarticle précédent nous a donné loceasion de rentrer un peu dans le détail du contenu des octets manipu- lés par votre Apple et de voir comment certaines instructions de Tassembleur travaillent au niveau des bits d'information. En analysant les traitements présen- tés au sujet des instructions ADC ou SBC, vous avez pu constater qu’il n'y a finalement rien de bien myste- rieux dans l'évolution de ces suites de 1 et de 0 qui constituent les octets. L’application rigoureuse de régles arithmétiques simples permet en effet de prévoir le résultat des opérations binaires et, par voie de conséquence, de comprendre le fonctionnement et les conditions d'emploi des instructions du langage assembleur réalisant ces opérations. Nous pouvons donc maintenant aborder d'autres instructions plus “fines” quant a leur champ d’appli- cation. Si, comme toujours, elles ma- nipulent la quantité économique d’in- formation qu’est l’octet, les con- séquences de cette manipulation ne peuvent étre totalement comprises qu’a l'aide d'un examen bit a bit. Des régles simples conduisent la en- core a la prédiction du résultal, et Cest bien normal lorsque les objets du traitement sont aussi "pauvres” et peu nombreux que 0 et 1. Les opérateurs logiques Nous retrouvons 1a des instructions présentes également dans |'Applesoft. Lorsque vous écrivez “IF A=2 AND B=3" vous savez que la condition ne sera satisfaite que si l'on a 4 la fois "A=2” et "B=3". De meme, si la condition devient “IF A=2 OR B=3". vous savez qu'il suffira que 2” ou que “B=3" pour qu'elle soit satisfaite, méme si l'on n’a pas "B-3" lorsque "A=2”, ou "A=2” lorsque "B=3” Si l'on considére que “vrai” est cadé "1" et que “faux” est codé par =2 AND B=3" ne sera vrai 2” donne 1 et si "B=3” . En revanche, pour que "A=2 OR B=3" soit vrai, il suffit que l'un des deux éléments 2" ou "B-3” donne 1. Des principes identiques sont utilisés pour les opé- rateurs logiques en assembleur, avec toutefois une distinction supplémen taire pour le “OR”. Le ET logique Le code mnémonique de |'instruction est AND. Elle réalise un "ET logi- Pom's n° 14 Initiation a l’assembleur (4) que” entre l'accumulateur et ce qui suit le code AND, c’est-a-dire un nombre ou le contenu d'une case- mémoire désignée par Tun des modes d’adressage déja étudiés. Le résultat est remis dans l’accumula- teur. Le ET s‘effectue bit a bit, selon la table de vérité suivante : O ANDO =0 Q AND 1 1 AND 0 =0 1AND1=1 Si le bit 3 de l'accumulateur est 4 1 au moment du AND et que le bit 3 de l'élément "comparé” est a 0, on retrouvera le bit 3 de l'accumulateur 40 l'issue du AND. Supposons ainsi que I’accurnulateur contienne "01001101" (soit_#$4D) et l'adresse $18 11011000” (soit #$D8). Aprés un AND avec le contenu de I'adresse $18, on trou- vera dans l’accumulateur la valeur 01001000” (soit #$48) : sur le bit 0 (le plus a droite) on a 1 et O qui donnent 0, sur le bit 1 on a 0 et 0 qui donnent 0, sur le bit 2 on a 1 et 0 qui donnent 0, sur le bit 3 on a 1 et 1 qui donnent 1... et ainsi de suite, Cette instruction AND permet en particulier de "forcer” des bits de Yaccumulateur 0. Prenons la valeur #SEF, par exemple, soit en binaire "11101111". Un AND #$EF forcera le bit 4 (le cinquigme en partant de la droite) de l'accumulateur 4 0 sans modifier les autres bits. Si l’'accumu- lateur contenait "01110101", on au- rait alors : 01110101 01100101 Tous les bits de l'accumulateur de- meurent inchangés, sauf le bit 4 qui passe a 0. Si ce bit 4 avait déja été a 0 avant AND, il le serait resté apres. En tout état de cause, on est certain de trouver O dans ce bit 4 aprés AND. En assembleur, cela s’écrirait : LDA #$75 AND #$EF et l'accumulateur contient maintenant #$65 (01100101). Kevenons un instant sur l'un des programmes diillustration proposés dans l'article précédent. Nous avions vu qu'il fallait retirer # $80 au code- clavier d'un chiffre pour obtenir son code-écran en mode INVERSE. Pour ce faire, nous avions utilise SBC #$80. Or les codes écran concernés AND 11101111 — Gérard Michel sont supérieurs 4 #$80 et leur bit 7 (le plus 4 gauche) est donc & 1. En binaire, #$80 vaut 10000000 et le complément @ 2 de #$80 vaut éga- lement 10000000 (calculez-le pour vous en convaincre). Retirer #$80 d'un octet dont le bit 7 est a 1 re- vient donc finalement 4 mettre sim- plement son bit 7 4 0 (1 + 1 — 0) sans modifier ses autres bits. On pourrait obtenir le méme résultat par un AND #$7F (#$7F = 01111111) qui force le bit 7 a 0 sans affecter les autres. Dans la mesure oi l'on ne connait pas toujours la valeur du bit C avant d'exécuter SBC, cette se- conde solution peut nous permettre de faire l'économie d'une instruction SEC en garantissant un résultat équi- valent. En résumé, si le bit 7 de l'ac- cumulateur est A 1, AND #$7F est équivalent a SEC suivi de SBC #380. Les différents formats de l’instruction AND sont (ADS désignant une adresse symbolique) e AND nombre = AND #$NN = 29 NN (par exemple 29 7F) @ AND adresse page 0 = AND ADS = AND $aa = 25 aa (le ET est effectué entre l'accumulateur et le contenu de l'adresse aa) @ AND adresse quelconque = AND ADS = AND $aaaa = 2D octet has/octet haut (AND $ED42 = 2D 42 ED) © AND adresse pa ADS,X = AND $aa,X = 35 aa © AND adresse quelconque,X AND ADS,X = AND $aaaa.X 3D octet bas/octet haut ® AND adresse quelconqueY = AND ADS,Y = AND $aaaa,Y = 39 octet bas/octet haut @ AND (adresse,X) = AND (ADS,X) = AND ($aa,X) = 21 aa @ AND (adresse),Y = AND (ADS),Y = AND ($aa),Y = 31 aa L'exécution de AND exerce une ac- tion sur le registre d'état : le bit Z (in- dicateur de résultat nul) vaudra 1 si Paccumulateur contient 0 apres AND et O dans le cas contraire, tandis que le bit N (indicateur de signe) sera a 1 ou 0 selon que le bit 7 de l'accumu- lateur sera lui aussi 4 1 ou U aprés AND. zéro,.X = AND Le ET logique "virtuel” Linstruction BIT réalise le méme traitement que AND mais ne remet pas le résultat dans l’'accumulateur qui reste done inchangé (d’ot le qualificatif "virtuel”’). En revanche, le il x a = a a | | zs F | | rt iBaRHREE registre d'élal se trouve affecté par BIT. D'une part, l'indicateur Z est positionné comme pour AND et, d'autre part, les bils 6 et 7 du contenu de |'adresse donnée aprés BIT sont copiés dans les bits 6 et 7 du registre d'état (indicateurs V et N) Supposons ainsi que vous voulliez sa- voir & un instant donné si le bit 7 du contenu de l’adresse $25 est a 0 ou 1 (nombre pasitif ou négatif en complément a 2), mais sans pouvoir modifier le contenu des registres A, X et Y. Aprés une instruction BIT $25, un test par BPL (branchement si in- dicateur N = 0) ou par BMI (bran- chement si N = 1) vous donnera l'information souhaitée et vous per- mettra d'orienter vos traitements en conséquence. De méme, si c'est le bit 6 qui vous intéresse, BIT $25 suivi de BVC ou BVS conduira au résultat. Linstruction BIT ne posséde que deux formats © BIT adresse page 0 = BIT ADS — BIT $aa = 24 aa © BIT adresse quelconque = BIT ADS = BIT $aaaa = 2C octet bas/octet haut Le OU exclusif Liinstruction EOR réalise un traite- ment bit par bit avec les mémes opé- randes et opérateurs que AND: ac- cumulateur et autre chose, avec résultat de l'opération remis dans laccumulateur. La table de venite de EOR est : OEORO=0 QOFOR1=1 1EORO=1 1EOR1=0 Un bit du résultat ne sera “vrai” que si lun des bits de départ est faux et l'autre vrai; un EOR sur deux bits pentques (0 ou 1) donne toujours EOR #$FF permet de calculer le complément 4 1 de |’accumulateur, par exemple : 01101001 EOR 11111111 > 10010110 L'accumulateur contenait_ #$69 (01101001) et, apres EOR #$FF (11111111), tous les bits 4 1 se re- trouvant A 0) et récipraquement, il contiendra #$96 (10010110). En as- sembleur, cela s'écnirait : LDA #$69 EOR #$FF En revanche, EOR #$00 laisse le contenu de l’accumulateur inchangé, comme vous n'aurez aucune peine 4 le vérifier L’exécution de EOR affecte les indi- cateurs N et Z dans les mémes conditions que celle de AND. Les formats possibles sont : @ EOR nombre = EOR #$NN — 49 NN @ FOR adresse page 0 = EOR ADS = EOR $aa = 45 aa © EOR adresse quelconque = EOR ADS = EOR $aaaa = 4D octet bas/octet haut © EOR adresse page 0.X = EOR ADS,X = EOR $aa,X = 55 aa e EOR adresse quelconque,X — EOR ADS,X = EOR $aaaa,X = 5D octet bas/octet haut © EOR adresse quelconque,Y = EOR ADS,Y = EOR $aaaa,Y = 59 octet bas/octet haut = EOR (ADS,X) = EOR ($aa,X) 41 aa EOR (adresse),Y = EOR (ADS),Y = EOR ($aa),Y = 51 aa e m io} wn ry a 8 g 58 Fs Le OU inclusif Cest le méme, sur le principe, que celui de l'Applesoft. Pour que le ré- sultat soit "vrai", il suffit cette fois que l'un des deux éléments de dé- part le soit sans que |’autre doive né- cessairement étre “faux”. Le code de Vinstruction est ORA et elle utilise la table de verite : 0 ORA0=0 OORA1=1 1ORAO0=1 1ORA1=1 Le ORA se fait entre l'accumulateur et autre chose, le résultat étant tou- jours remis dans I’accumulateur. Cette instruction permet notamment de forcer des bits 4 1 sans modifier les autres. Par exemple, ORA #$10 (00010000 en binaire) force le bit 4 de l’accumulateur 4 1 : 10001011 ORA 00010000 — 10011011 En assembleur, cela s’écrirait - LDA #$8B ORA #$10 et l'on aurait alors #$9B (10011011) dans I’accumulateur. A noter que si le bit 7 de I’'accumula- teur est 4 0, ORA #$80 (10000000) Etope 3 ASL éliminées les conséquences de la va- leur de l'indicateur C, ADC #$80 donne le méme résultat que SBC #$80 (—128 = 128 = $80). De méme, lorsque le bit 7 de l’accu- mulateur est 4 0, ORA #$80 revient a lui retirer #$80 (le bit 7 passe a 1 lorsqu’on ajoute le complément 4 2 de hid qui vest autre que #$80... Cette a entre opérateurs logiques et ADC/SBC ne peut toute- fois étre exploitée simplement que pour des calculs sur un octet, car AND et ORA ne manipulent pas la retenue dont on a besoin dés que Yon passe a des opérations sur deux octets. ORA affecte le registre d'état exacte- ment comme AND et EOR (bits N et Z); les formats de l’instruction sont : @ ORA nombre = ORA #$NN = 09 NN * ORA adresse page 0 = ORA ADS = ORA $aa = 05 aa @ ORA adresse quelconque = ORA ADS = ORA $aaaa = OD octet bas/octet haut © ORA adresse page 0,X = ORA ADS,X = ORA $aa,X = 15 aa @ ORA adresse quelconque,X = ORA ADS,X = ORA $aaaa,X = 1D octet bas/octet haut e@ ORA adresse quelconque,Y = ORA ADS,Y = ORA $aaaa,Y = 19 octet bas/octet haut © ORA (adresse),Y = ORA (ADS),Y = ORA ($aa),Y = 11 aa Décalages et rotations Décalage 4 gauche : ASL L’instruction ASL agit sur un octet selon le principe suivant : — un 0 entre dans Ioctet par la droite; — tous les bits de l'octet sont donc poussées vers la qauche: — le bit 7, qui était le plus 4 gauche, n'a plus de place dans l’octet et il “tombe” dans le bit de retenue C. Etope 1 FE ome fF ev om F] emo Etope 2 est équivalent a CLC suivi de ADC #$80. Si le bit 7 de l'accumulateur est 4 1, vous aurez sans doute cons- taté que cest AND #$7F (orttat11) qui équivaut a4 CLC suivi de ADC #$80 puisque, une fois Prenons par exemple octet "10100111" Si on lui fait subir un décalage a gauche, il deviendra "01001110" et le bit 7 qui était a1 se retrouve dans la retenue: C=1 aprés cette opération. Pom’s n° 14 Ouvrons maintenant une petite pa- renthése sur le systéme décimal. est évident pour tout le monde que 2*10 = 20. Si l'on examine ce résul- tat de plus prés, on peut dire que le chiffre 2 est en fait poussé vers la gauche par un O qui entre par la droite et méme, en raisonnant sur un seul chiffre, qu'il tombe finalement dans un chiffre de retenue C que l'on remet ensuite devant le résultat (en binaire, une retenue ne peut va- loir que 0 ou 1, mais elle peut pren- dre toute valeur entiére entre 0 et 9 en décimal). Finalement, la multipli cation par 10 en décimal n'est rien d’autre qu’un décalage des chiffres vers la gauche, poussés par un 0 qui rentre par la droite. En binaire, et en toute logique, un décalage a gauche revient 4 multi- plier par 2 octet qui fait l'objet du décalage. Soit par exemple l’octet "01110101" (117 en décimal); a l'issue du déca- lage, on a “11101010” et C vérifie bien que "11101010" = 234 en décimal = 2«117. De méme, si on décale a gauche "10100111" (167 en décimal), on obtient "01001110" (78) et C=1. Si Ton considére cette retenue de 1 comme le poids fort du résultat, on vérifie que 256 1 78 = 334 = 24167. Voyons maintenant les formats de Yinstructon ASL avant d’examiner plus en détail le probléme de la mul- tiplication par 2 sur deux octets ; @ ASL accumulateur = ASL = 0A @ ASL adresse page 0 = ASL ADS = ASL $aa = 06 aa © ASL adresse quelconque — ASL ADS — ASL $aaaa = OE octet bas/octet haut @ ASL adresse page 0,X — ASL ADS,X = ASL $aa,X = 16 aa @ ASL adresse quelconque.X = ASL ADS,X = ASL $aaaa,X = 1E octet bas/octet haut Soit un nombre stocké sur deux octets O1 (poids faible) ct O2 (poids fort). Multiplier ce nombre par 2 re- vient a: — décaler O1 a gauche — décaler O2 a gauche — ajouter 4 l'octet O2 ainsi multiplié la retenue éventuelle provenant du décalage (multiplication) de O1. Les lignes 1 4 17 du Programme 1 vous présentent une premiére mé- thode pour effectuer ce calcul, a l'aide des instructions que nous connaissons déja. On initialise une variable R (retenue) 4 0, mais on la fait passer 4 1 si le test BCC échoue aprés ASL O1 (l'échec signifie que cst un 1 qui est tombé dans la rete- nue C). Ensuite, on charge I'accumu- lateur avec O2, on le décale, on lui ajoute la valeur de R (0 ou 1) et on remet le résultat dans O2. Le sto- Pom's n° 14 ckage intermédiaire de la retenue nous est imposé par le fait que ASL O02 modifierait le bit C qui ne pour- rait donc garder a coup sar la valeur qu'il avait aprés ASI. O1 Ne regardez pas trop vite la suite du Programme 1, mais sachez néan- moins qu'il existe une maniére plus simple de parvenir au méme résul- tat... Précisons pour finir que I’exécution de ASL agit sur le bit C, bien sar, mais aussi sur l'indicateur N (mis 4 1 si le bit 7 de l'octet est 4 1 apres ASL, et 4 0 sinon) et l'indicateur Z (mis a 1 si l'octet ne contient plus que des 0 aprés ASL, 4 0 sinon). Décalage 4 droite : LSR Mémes causes, mémes effets, mais dans l'autre sens ! — un 0 entre dans I’octet par la gau- che; — tous les bits sont repoussés vers la droite; — le bit 0, le plus a droite, n'a plus de place et il tombe dans la retenue. Etope 1 LSR Poids fort (OZ) par 2. S’il est bien di- visible par 2, c’est-A-dire si son bit 0 est a 0, on aura C=0 apres LSR. Dans le cas contraire, on aura une retenue C=1 qu'il faudra remettre dans le bit 7 de l’octet de poids fai- ble (OL) aprés avoir également divisé ce dernier par 2. Reprenons l'exem- ple de 334/2 pour illustrer la chose Nous avons déja vu "10100111" (167) * 2 = "01001110" (78) plus une retenue C=1 qui est en fait un octet de poids fort 00000001”. Si l'on divise "01001110" par 2 au moyen de LSR, on _ obtient "00100111", soit 39 qui est bien la moitié de 78, mais, pour retrouver notre 167 de départ, il nous manque 128, soit la moitié de 256. Avec le bit 7 & 1, "00100111" devient "10100111", soit 167, et l'on peut prendre ce 1 dans C qui sera juste- ment a 1 aprés le décalage a droite de “00000001”. Supposons maintenant que le poids fort soit "00000010" et le poids fai- Etope 3 o—[b[p >| | mem [i Etape 2 Sans revenir sur les subtilités de la division par 10, et compte tenu de ce qui préc&de, vous avez déja deviné que l'instruction LSR permet notam- ment de diviser un octet par 2. Par exemple : 01001110" (78 en decimal) devient one (39) aprés LSR, avec ”11101010” (234) devient ayn” (117) aprés LSR, avec Mais pour retrouver le résultat de 334/2, puisque nous avions calculé tout a l'heure que 167*2 = 334, il faut de nouveau travailler sur deux octets. Nous y reviendrons apres avoir donné les formats de LSK. LSR accumulateur = LSR = 4A © LSR adresse page 0 = LSR ADS = LSR $aa = 46 aa e LSR adresse quelconque = LSR ADS = LSR $aaaa = 4E octet bas/octet haut © LSR adresse page 0,X = ADS,X = LSR $aa,X = 56 aa e LSR adresse quelconque,X — LSR ADS,X = LSR $aaaa,X = SE octet bas/octet haut Pour diviser par 2 sur deux octets, il faut tout d’abord diviser l'octet de LSR ble "01001110", ce qui correspond @ (2*256) + 78 = 59. La division de "00000010" par LSR donne 00000001" avec C=0, et celle de "01001110" donne toujours "00100111", d’oa un résultat a ce stade de (1*256) + 39 = 295, qui est bien la moitié de 590. Il n'est pas nécessaire cette fois de modifier le bit 7 de l'octet de poids faible, car le poids fort de départ était pair, ce que C=0 aprés LSR pourra nous indi quer. Ce mécanisme des divisions par 2 serait bien sr plus facile 4 analyser si l'on travaillait directement sur 16 bits Reprenons ainsi nos deux exemples : © 334 = 0000000101001110 LSR 0000000101001110 donne 0000000010100111 ou encore 00000000” et "10100111" © 590 = 0000001001001110 LSR 0000001001001110 donne 0000000100100111 ou encore 00000001” et "00100111" Comme nous sommes obligés de tra- vailler sur 8 bits, c'est le bit C aprés LSR sur le poids fort qui sert de “pont” entre les deux parties du nombre sur 16 bits Les lignes 19 4 30 du Programme 1 vous présentent une premiére meé- LL as thode pour effectuer ce type de cal- cul. On initialise une variable R a #$80, soit 10000000, et on décale le poids fort O2 par LSR. Si le test BCS échoue, c'est que C=0 apres ce premier LSR, dans ce cas, ASL R nous donnera simplement OUUUU0U0 dans R. Ensuite, on charge l'accumu- lateur avec le poids faible O1 et on le décale. Avec l'instruction ORA R, on fait donc ORA 10000000 si C était a 1 apres LSR O2, ce qui force le bit 7 de l'accumulateur a 1, ou ORA 00000000 qui laisse l'accumu- lateur inchangé dans le cas contraire. Le résultat est enfin remis dans O1. A noter que le hit N du registre d'état est toujours 4 0 aprés LSR, puisque le bit 7 du “dernier résultat” devient justement 0 Ie hit C prend la valeur du bit qui tombe dedans, et Vindicateur Z est positionné comme pour ASL_ Rotation a gauche : ROL L'instruction ROL fonctionne comme ASL, sauf sur un point fondamental : ce n'est pas systématiquement un 0 qui rentre dans l’octet par la droite, mais la valeur du bit de retenue C (0 ou 1). Le mécanisme est donc le sui- vant: — le bit de retenue C rentre par la droite: — les bits sont poussés vers la gau che; — le bit 7 de l’octet tombe dans la retenue. Etope 3 ROL poids fort revient a le décaler vers la gauche, puis A donner a son bit de droite la valeur de la retenue résul- tant du décalage du poids faible. On obtiendrait le méme résultat si le bit rentrant lors du décalage était juste- ment ce bit de retenue, et c'est exac- tement ce que permet de faire l'ins- truction ROL. Vous trouverez cette seconde mé- thode de calcul dans les lignes 32 4 36 du Programme 1. Nul doute qu'elle vous paraitra plus simple que la premiére. Autre exemple d'utilisation de ROL, le découpage des octets. Supposons ainsi que vous vouliez récupérer dans un octet O2 les 4 bits de gauche d'un octet Ol, qui, 4 eux seuls, constituent une information dont vous avez besoin (si O1=#$A2, c'est davoir O2=#$0A qui vous inte- resse) Le petit programme suivant vous permettrait d’y parvenir : LDX #4 LDA #0 STA O02 LDA O1 BO ROL Formats de l'instruction ROL : @ ROL accumulateur = ROL = 2A ROL adresse page 0 = ROL ADS = ROL $aa = 26 aa ® ROL adresse quelconque = ROL Etope 1 — i+ the j= 2 Etope 2 Si le bit C est a 0 avant l'exécution de ROL, cette derniere est equiva- lente A ASL. mais le fait important est que ROL permet de modifier l’or- dre des bits a l'inténeur d'un octet ou de faire passer des bits d’un octet a un autre. Reprenons notre probleme de la multiplication par 2 sur deux octets. lest simple de multiplier le poids fai- ble grace 4 ASL, mais la difficulté ré- sulte ensuite de la prise en compte d'une éventuelle retenue aprds la multiplication du poids fort par ce méme ASL. La multiplication par 2 consiste en un décalage & gauche avec entrée d'un 0 a droite; lorsque Yon ajoute une retenue 0 ou 1 a un octet ainsi multiplié, son bit de droite ne peut prendre que les valeurs 0 ou 1 sans qu'il y ait de retenue se pro- pageant a l'intérieur de T'octet. En d'autres termes, la multiplication du PF ee 10 ADS = ROL $aaaa = 2E octet bas/octet haut e@ ROL adresse page 0.X = ROL ADS,X — ROL $aa,X = 36 aa @ ROL adresse quelconque.X ROL ADS,X = ROL $aaaa,X = SE octet bas/octet haut L'exécution de ROL affecte le regis- tre d'état comme celle de ASL. Rotation 4 droite : ROR ROR est 4 ROL ce que LSR est 4 ASL! Cette fois, le bit C rentre par Etope 1 ROR la gauche, repousse les autres bits vers la droite et le bit 0 tombe par conséquent dans la retenue. Si C=0, ROR est équivalent 4 LSR Vous concevez sans doute, surtout si vous lisez le Programme 1 plus vite que prévu, que ROR peut nous étre fort utile pour notre division par 2 sur deux octets. Tout le probléme consistait justement a faire prendre au bit 7 du poids faible décalé a droite la méme valeur que ceile du bit C aprés le décalage 4 droite du poids fort. Il est done bien agréable de pouvoir décaler ce poids faible en faisant rentrer a la place du bit 7 la retenue en question, comme vous le verrez dans les lignes 38 a 42 du Programme 1. Pour en revenir maintenant au dé- coupage des octets, si l'on veut récu- pérer dans O2 les 4 bits de droite de Ol, il suffit de remplacer dans le pro- gramme précédent "BO ROL” par "BO ROR". C'est bien toujours par "ROL O02” qu'il faut faire rentrer les bits dans 02: si vous faites "ROR 02" et si O1=#$2F, par exemple, vous retrouverez #$FO dans O2 et non #$0F Formats de instruction ROR : © KOK accumulateur = KOK = 6A © ROR adresse page 0 — ROR ADS = ROR $aa = 66 aa ® ROK adresse quelconque = KOR ADS — ROR $aaaa — 6E octet bas/oclet haut ROR adresse page U.X = KOK ADS,X = ROR $aa,X = 76 aa e@ ROR adresse quelconque,X ROK ADS.X = KOK $aaaa,X 7E octet bas/octet haut L'exécution de ROR affecte les mémes indicateurs du registre d'état que celle de ROI Hl Découpage du_ registre d'état Toutes ces instructions de décalage et de rotation permettent de faire sortir des bits d’un octet, de les faire rentrer dans un autre... et nous allons maintenant les utiliser pour dé- couper et analyser un octet bien spé- cial : le registre d'état du micro-pro- cesseur. Pour ce faire, nous évo- querons d’abord deux nouvelles ins- tructions tenant a l'usage de la pile. Nous avons déja vu qu'il était possi- Etope 2 Fey mp | | mem fe Pom's n° 14 ble de déposer le contenu de I'accu- mulateur au sommet de la pile par PHA et de récupérer le sommet de la pile dans l'accumulateur par PLA. Ces mémes manipulations sont possi- bles avec le registre d'état au moyen de PHP (08), correspondant 4 PHA, et de PLP (28), correspondant a PLA. Alors qu'il n’existe pas d’ins- truction équivalente 4 STA pour sto- cker le registre d’état dans une case- mémoire, on peut y parvenir malgré tout grace a PHP suivi de PLA, qui permettent de récupérer le contenu du registre d'état dans I’accumula- teur. Les lignes 44 4 66 du Programme 1 constituent une sous-routine qui dé- coupe et affiche a l’écran le registre d'etat bit par bit. Nous allons en dé- tailler le fonctionnement, — Lignes 45 et 46: le registre sera stocké dans la variable P dés l'appel de la routine et c'est donc le contenu du registre au moment de cet appel que nous analyserons. M sera utilisé pour l’affichaye : il contiendra 0 ou 1 selon la valeur des indicateurs du re- fem d'état et "+" pour le bit inuti- isé. — Lignes 47 4 49: on récupére le registre par le biais de la pile et on le stocke dans P. — Lignes 50 4 52: X servira de compteur de boucle (il y a & bits & découper) et on initialise M a 0. — Lignes 53 et 54: par ASI. P. on fait sortir les indicateurs du registre dans l'ordre “bit 7", “bit 6”, ..., “bit 0”. Par ROL M, le bit sorti du regis- tre et tombé dans la retenue rentre dans M par la droite, ce qui garantit que M contiendra toujours 00000000" ou "00000001", done Ooul, — Lignes 55 et 56: si X=6, on est au bit 5 du registre qui n'est pas un indicateur. On saute alors en SO Pour afficher "*” (#$AA est le code- écran de "*" en mode NORMAL). — Lignes 57 a 60: pour atfficher 1 ou 0, on ajoute #$B0 au contenu de afin d'obtenir le code-écran en mode NORMAL de "1" ou 0”. On utilise ensuite la routine standard d'affichage du moniteur qui débute en $FDFO. — Lignes 61 4 64: LSR M permet de faire rentrer un 0 dans M par la gauche et de faire ressortir le bit qui était entré par la droite lors du ROL M; apres cette instruction, M est donc ré-initialisé 4 "00000000". Tant que X est différent de 0 aprés DEX, on boucle pour traiter tous les bits du registre en séquence. Si X=0, on sort de la routine. Le Programme 2 sert de jeu d’essai pour la routine analysée ci-dessus On fait exécuter certaines instruc- tions, puis on va afficher le registre d'état qui en découle par un JSR Pom’s 1° 14 TEST (TEST appelle la routine du Programme 1 en $32F, puis une routine du moniteur en $FC62Z qui envoie un RETURN 4 lécran, et ce afin de n’afficher qu'un registre par ligne). Le programme Basic P2.DEMO lance ce Programme 2 et vous donne finalement a l'écran une suc- cession de registres dont chacun cor- respond 4 |’état des indicateurs a I'is- sue des instructions qui précédent le JSR TEST ayant provoqué son affi- chage. Intéressez-vous surtout aux deux bits de gauche (indicateurs N et V) et aux deux bits de droite (indica- teurs Z et C). Sur la premiere ligne, par exemple, vous voyez : 11*10000, soit : N=1, V=1, Z=0 et C=0. Cet état résulte de l’opération #$40 + #$40, ou encore 64 + 64 en dé- cimal, ou enfin “01000000” + “01000000” en binaire. A Tissue de cette opération, le "dernier résultat” est "1000000" : il est négatif (bit 7 4 1), d’oa N=1, il y a eu débordement (retenue du bit 6 sur le bit 7), d’oa V=1, le résultat est different de 0, dot Z=0, et il n’y a pas eu de rete- nue extérieure, d’ot C=0. Amusez-vous (mais oui!) 4 analyser de cette facon les indicateurs corres- pondant aux autres opérations du jeu dessai. Ceci vous permettra de véri- fier les indications “‘littéraires” don- nées pour chaque instruction étudiée quant son influence sur le registre d'état et leur donnera un caractére plus concret. Recodage des caractéres Les codes ASCII, sous la forme des- quels les caractéres disponibles au clavier de votre Apple sont stockés en mémoire, sont tous inférieurs a 128. Ce n'est que pour I'affichage & Vécran et la saisie-clavier que l'on peut trouver des codes de valeur su- périeure 4 127. Si l'on se rappelle que 127 = #$7F en hexa et “O1111111” en binaire, on en déduit que tous les nombres compris entre 0 et 127 en décimal ont un bit 7 4 0 et que ce bit, ayant la méme valeur pour tous, ne peut servir a différencier un nombre d'un autre. En d'autres termes, 7 bits suffi- sent pour coder tous les caractéres disponibles: le huitigme n'apporte aucune information supplémentaire. Par voie de conséquence, il doit étre possible de coder 8 caractéres en 7 octets: si l'on récupére pour les 7 Premiers caractéres la place occupée par les bits "inutiles”, on dispose de 7 bits libres qui permettent de coder un huitiéme caractére. Cette possibi- lité présente un intérét certain pour quiconque voudrait un jour dévelop- per son propre systéme de gestion de fichiers de données, sans passer par DOS 3.3 ou autre, car si une dis- quette de 140K, par exemple, peut contenir 143360 caractéres de 8 bits, elle _peut stocker 163840 caractéres de 7 bits. Le gain de capacité n'est pas tout a fait négligeable... Nous nous bornerons pour I’instant 4 voir comment on peut recoder 8 ca- ractéres en 7 octets et les récupérer ensuite en 8 octets pour qu’ils restent exploitables par I'Applesoft, le moni- teur ou le DOS. Le programmme Basic PR3.DEMO demande 8 caractéres au clavier et les POKE & partir de |l'adresse $9000. Il appelle alors une routine, dont le source est Programme 3, qui recode le tout en 7 octets, les dé- place a l'adresse $9100 (afin qu'il n’y ait pas de doute sur l'efficacité du recodage) et les reconstitue en 8 octets. Le programme Basic récupere enfin les 8 caractéres par des PEEKs a partir de l'adresse $9100. Pour vous aider dans l'analyse de la toutine en assembleur, voici les prin- cipes du traitement réalisé : © Sur le premier octet, il y a un bit a récupérer 4 gauche. On fait sortir le bit 7 de l'octet par ASL. Par un LSR sur le deuxiéme octet, on fait tomber dans la retenue son bit 0 puis, par un ROR sur le premier octet, on [ait rentrer ce bit 0 du deuxiéme octet dans le premier tout en remettant a leur place les bits 0 a 6 de celui-ci. © Sur le deuxieme octet, il y a donc maintenant 2 bits a récupérer. Par deux ASL successifs, on fait sortir les bits 6 (ancien bit 7) et 7 (0 entré lors du LSR). En faisant ensuite deux fois “LSR sur le troisiéme octet suivi de ROR sur le deuxiéme”, on récupére dans les bits 6 et 7 du deuxiéme les bits 0 et 1 du troisiéme. © Et ainsi de suite jusqu’au septiéme octet sur lequel on fait sept fois ASL, puis sept fois "LSR le huitiéme - ROR le septiéme™. Dans ce dernier octet, on a finalement le bit 6 du septiéme de départ en position 0, et les bits 0 a 6 du huitiéme octet aux positions 1 a 7. ® Pour retrouver 8 octets a partir de 7, on commence par faire tomber le bit 7 du premier octet dans la rete- nue par ASL. Puis on enchaine ROL sur le deuxiéme, ROL sur le troi siéme... ROL sur le huitigme : le bit 7 de chacun des 7 octets se retrouve ainsi en bit O dans le suivant. Un LSR sur le premier octet lui redonne alors sa forme de départ (remise en place des bits décalés 4 gauche par ASL et rentrée d'un 0 en position 7) © Le deuxiéme octet a maintenant récupéré ses 7 bits “utiles”; il lui teste 4 en céder un (son bit 7 actuel) qui appartient au troisiéme (c’était ETS Pabisiecnitet tty ll son bit 0 de départ). On fait donc ASL sur le deuxiéme, suivi de ROL sur le troisigme, ROL sur le qua- triéme... ROL sur le huitiéme. Un LSR sur le deuxiéme octet lui re- donne enfin sa forme intiale. ® Ce mécanisme se poursuit jusqu’a ce que l'on ait traité de méme le sep- tiéme octet (ASL octet 7 - ROL octet 8 - LSR octet 7). Le huitiéme octet a des lors retrouvé ses 7 bits utiles, et un AND #$7F force son bit 7 4 0 pour garantir un code ASCII inférieur 4 128. Il ne reste plus qu’a rendre la main au Basic pour qu'il récupére les 8 caractéres et les affiche. 0325 a1 Programme 1 0328 32 0325 33 0325 0606 34 **END OF PASS 1 0327 2607 35 **END OF PASS 2 0327 60 36 032A 37 0300 1 ORG $300 032A 38 u3u0 2 jMULTIPLICATIUN PAR 2 SUR 2 UCIETS| 032A 39 0300 3 jPREMIERE METHODE 032A 9607 40 0300 4 01 2 $6 032C 6606 4 0300 5S 02 EPZ $7 O32E 60 42 0300 6 eR EPZ $8 032F 43 0300 AV00 7 LDA #0 032F 44 0302 8508 a STA R 032F 45 0304 0404 9 ASL O1 032F 46 0304 9002 10 BCC SUITE! 032F 08 a7 0308 E408 At INC R 0330 48 as 030A ASO? 12 SUITE! LDA 02 0331 e518 ae 030C CA 13 ASL 0333 A208 so O30D 186 14 cLe 0335 A700 St O30E 6508 is ADC R 0337 6517 s2 0310 8507 16 STA 02 0337 0618 33 0312 60 17 RTS 0338 2617 oq 0313 18 ; 033D E006 ss 0313 19 ;DIVISION PAR 2 SUR 2 OCTETS 033F FOOE 56 0313 20 ;PREMIERE METHODE 0341 ASI? 57 0313 A’80 21 LDA #80 0343 18 58 0315 8508 22 STA R 0344 69B0 3° 0317 44607 23 LSR 02 0346 20F0FD 60 n3i9 B002 = 24 BCS SUITE? 0349 4619 osie 0608 = 25 ASL R 0348 CA 62 031D ASO6 26 SUITE2 LDA O1 034C DOEB 63 O31F 44 27 LsR O34E 60 64 0320 oS090 26 ORA R 034F A?AA 6s 0322 8506 29 STA O1 0351 DOFS 66 0324 60 30 RTS 0353 6 Récapitulation 1 *300.352 0300- AY 00 85 08 06 06 YO U2 0308- Eé 08 AS 07 0A 18 65 08 0310- 85 07 40 AP 80 85 08 44 0318- 07 BO 02 04 08 AS 04 4A 0320- 05 08 85 06 60 06 06 26 0328- 07 60 46 07 66 06 60 08 jMULTIPLICATION PAR 2 SUR 2 OCTETS jDEUXIEME METHODE ASL Of ROL 02 RTS i }DIVISION PAR Z SUR 2 UCTETS ;DEUXIEME METHODE LSR UZ ROR Of RTS DECOUPAGE DU REGISTRE D’ETAT EPZ $18 EPZ $19 ZV st ASL P s2 JSR $FDFO so LOA #SAA 0330- 68 85 18 AZ 08 AY OU BD 0338- 19 06 18 26 19 EO 06 FO 0340- 0£ AS 19 18 49 BO 20 FO 0348- FD 46 19 CA DO EB 60 A? 0350- AA DO FS Programme 1.DEMO (7): PRINT "MULTIPLICATION 1 7 "R 40 POKE 7,2 / 256: POKE 6,2 - 256 1 REM DEMONSTRATION DES MULTIPLI * PEEK (7): PRINT : CALL 76 CATIONS ET DIVISIONS PAR 2 SU 8+ 19:R = PEEK (6) + 256 * R 2 OCTETS PEEK (7): PRINT "DIVISION 1 2 REM LA DIVISION PAR 2 D’UN NOM 2 "R BRE IMPAIR DONNE BIEN SUR UN 50 POKE 7,2 / 256: POKE 6,2 - 256 RESULTAT APPROCHE PAR DEFAUT * PEEK (7): PRINT : CALL 76 (LE CALCUL NE PORTE QUE SUR D 8 + 37:R PEEK (6) + 256 * ES NOMBRES ENTIERS> PEEK (7): PRINT "MULTIPLICAT 5 REM ION 2: 'R 6 REM 60 POKE 7,2 / 256: POKE 6,2 - 256 10 PRINT CHR (4)"BLOAD PROGRAMM * PEEK (7): PRINT : CALL 76 E 1.080" @ + 42:R = PEEK (6) + 256 * 20 TEXT : HOME : INPUT “VOTRE NOM PEEK (7): PRINT “DIVISION 2 BRE : "3;Z: IF 2 > 32767 THEN : "R 20 80 PRINT : PRINT "MULT. BASIC : * 30 POKE 7,2 / 256: POKE 6,2 - 256 z* PRINT : PRINT "DIVISIO * PEEK (7): PRINT : CALL 76 N BASIC : "2 / 2: PRINT : GET @:R = PEEK (6) + 256 * PEEK 2$: GOTO 20 Fn ee 12 Pom’s n° 14 LILLE..... LILLE..... LILLE..... LILLE — Apple //e, Apple ///, Mac-Intoch, BFM 186. dragon, oric, alice, casio m.b.d.c. disquettes, Flexettes, 3M, Verbatim listing, rubans encreurs. m.b.d.c. m.b.d.c le conseil, le matériel, les périphériques “""*** les logiciels, les consommables, m.b.d.c. !© S.A.V. sur place. le Service Complet. m.b.d.c. 172, RUE SOLFERINO. 59800 LILLE — TEL. (20) 57.91.87 . OUVERT DU MARDI AU SAMEDI DE 9h30 4 12h ET DE 1430 a 19h AE355 : machine de bureau ux, conservation marges-tabulation: c RDEX “3 201, rue Carnot AF .00 94120 FONTENAY-S/BOIS 4, Op + AE 355, la super compact qui voit loin : Tey Aiyare 1110 une machine @ écrire électronique de bureau une imprimante pour micr« 8 répond di Lan SF ooryar eo ou 1049 20aa1n © 39 JSR TEST Programme 2 104C ASFF 40 LDA HeFF 104E 2980 41 AND He80 1050 20Aa10 42 JSR TEST 1053 A960 43 Loa #e80 **END OF PASS 1 1055 2901 44 AND Ai *#END OF PASS 2 1057 20A410 45 JSR TEST 1050 AIFF 46 LOA #SFF 1000 4 ORG #1000 105C 85CE a7 STA SCE 1000 2 JEU D’ESSAI POUR LE REGISTRE D’ETAT| i95E 24cE 48 BIT $cE 1000 3 3 1060 20A410 49 JSR TEST 1000 Az00 4 Loa #0 1063 A9FF 50 LDA #SFF 1002 48 5 PHA 1065 A200 St LOX #0 1003 28 é PLP 1067 @6CE 52 STX $CE 1004 A?40 7 LDA #840 1049 24CE 53 BIT $CE 1006 18 8 cic 1068 20a410 «54 JSR TEST 1007 6940 9 ADC #840 106E AgII 55 LOA Heit ina9 20a410 «10 JSR TEST 1070 4914 56 EOR ##11 100C A940 1 LbA 4840 1072 20A410 57 JSR TEST 100E 38 12 ‘Sec 1075 AFF se LOA #SFF 100F E930 13 SBC #30 1077 4980 39 EOR #$80 1011 20a410 14 JSR TEST 1079 20a410 © 60 JSR TEST 1014 Az40 15 LOA #840 1070 AY7F 61 LOA #87F 1016 38 16 SEC 107E 0980 62 ORA #80 1u1/ EvS0 17 SBC #S50 1080 20A410 63 JSR TEST 1019 200410 18 JSR TEST 1083 A940 64 LDA #$40 ie 101C A940 19 LDA #840 1085 0940 65 ORA #$40 4 101E 38 20 SEC 1087 200410 66 JSR TEST eB 101F E750 21 SBC #$50 1084 A940 6? LOA #$40 1021 E900 22 SBC #0 108 0900 48 ORA #0 122 nadia §=—28 JSR TEST 108E 20410 49 JSR TEST & 1026 A900 24 Loa #0 1091 A900 70 LoA #0 1028 20041025 JSR TEST 1093 09700 a ORA #0 1020 ASFF 26 LOA #$FF 1095 20A410 72 JSR TEST 102D 20A410 © 27 JSR TEST 1098 AIFF 73 LOA HSFF 1030 A708 28 LOA #8 109A BSCE 74 STA $CE 1032 C708 2 CHP ae 1U¥C C6CE 75 DEC $ceE 1034 ZUAg10 30 JSR TEST 109E 24CE 76 BIT 3CE 1037 AvOB 31 LDA #8 10A0 200410 77 JSR TEST 1039 C910 32 CMP #910 10A3 60 78 RTS 1038 200410 33 JSR TEST 10A4 202F03 79 TEST JSR $32F 103E A908 34 LDA #e 10A7 2062FC 80 JSR $FCS2 1040 C902 35 CMP 42 10AA A900 a1 LOA Wo 1042 20a410 36 JSR TEST tnac 48 82 PHA 1045 AgFF a7 LDA HSFF 1080 28 83 PLP 1047 297F 38 AND #67F 10AE 40 24 RTS . 1020- 50 E9 00 20 A4 10 AY 00 ©=:10468- CE 24 CE 20 Aa 10 AP 11 Récapitulation 2 1028- 20 A4 10 AP FF 20 A4 10 1070- 49 11 20 Ad 10 AD FF 49 1030- AY 08 CF O08 20 Ad 10 AF 1078- 80 20 A4 10 AP 7F OF 80 1038- 08 CF 10 20 A4 10 AY OB —1080- 20 AA 10 AF 40 OF 40 20 1040- CP 02 20 Ad 10 AP FF 29 1088- A4 10 AP 40 09 00 20 Aa 1000- A? 00 48 28 AP 40 18 69 1048- 7F 20 A4 10 AS FF 29 80 1090- 10 A9 00 O09 O00 20 A4 10 1008- 40 20 A4 10 AY 40 38 EP 1050- 20 A4 10 AP 80 29 01 20 1098- A9 FF 85 CE Cé CE 24 CE 1010- 30 20 A4 10 A9 40 38 EP «=1058- Ad 10 AY FF 85 CE 24 CE 10A0- 20 Ad 10 60 20 2F 03 20 1018- 50 20 Ad 10 AP 40 38 EF 1060- 20 Ad 10 AP FF AZ 00 86 10A8- 62 FC AY 00 48 2B 60 Programme 2.DEMO 6 REM id 10 D$ = CHR$ (4): PRINT D$*BLOAD 1 REM JEU D’ESSAI POUR LE DECOUP PROGRAMME 1.0BU": PRINT D$"BL AGE DU REGISTRE D’ETAT OAD PROGRAMME 2.0BJ": TEXT : HOME 5 REM : CALL 4096 030F SEOO70 14 LSR 01, Programme 3 0312 CA 15 DEX 0313 7E0090 16 ROR 01,X *#END OF PASS 1 0316 8B 17 DEY ##END OF PASS 2 0317 DOFS 18 BNE Si 0319 A404 19 LDY SY 06300 1 ORG $300 0318 ca 20 INY 0300 . § o3ic Ee 21 INX 0300 3 ;CODAGE DE 6 CARACTERES EN 7 OCTETS 0310 E007 22 CPx #7 0300 4 s¥ EPZ $6 O31F DOES 23 BNE S32 0300 35 ol EQuU $9000 032i 24 5 0300 Az00 6 LOX #0 0321 25 j TRANSFERT DES 7 OCTETS RECODES 0302 ADUI 7 LOY #1 0321 26 0 EQU $7100 0304 8406 8 s3 STY SY 0321 A206 27 LDX #6 0306 1£0090 9 sO ASL 01,X 0323 BDOOT0 28 TO LDA O1,x 0309 8B 10 DEY 0326 900091 29 STA 0,X 030A DOFA M BNE SO 0329 CA 30 DEX 030C A406 12 LOY SY 032A 10F7 31 BPL TO O30E ES 13: 8} TNX 032C 32 3 SESE Pom’s n° 14 jRECONSTITUTION DE 8 CARACTERES A PARTIR DE 7 UCTETS o32c 34° «SxO EPZ $8 032C 35 «SxI EPZ $9 032C Az00 36 LOX #0 0343 88 bid cy 032E 8608 37 $6 STX SxO 0344 SOF3 ay BYC $4 0330 8609 38 STX SX1 0346 68 so 6s5 PLA 0332 E609 39 INC SX1 0347 AéOB si LOx sxo 0334 1E0091 40 ASL 0,x 0349 SEOO91 52 LSR 0.x 0337 Aso? ai LOX sx1 034C E8 53 INX 0339 3Fn091 4942 Sa ROL 0,X 34D E007 S4 CPX 47 033C 08 42 PHP 034F DODD ss BNE Sé 033D ES a4 INK 0351 BDOOS1 56 LDA 0,x 033E E008 4s CPX #68 0354 297F s? AND #67F 0340 FoO4 46 BE@ SS 0356 700091 se STA 0, 0342 28 a7 PLP 0359 60 oF RTS é i i 0318- FS A4 06 C8 EB E0 07 DO «=—*9340- FO 04 28 BB SO F3 68 AS Récapitulation 3 0320- £3 A2 06 BD 00 90 90 00 ©«—*034B- 08 SE 00 91 EB EO 07 DA 0300- A2 00 AO 01 84 06 1E 00 ©=0328~ 91 CA 10 F7 AZ 00 86 08 0350- DD BD 00 91 29 7F 9D 00 0308- 90 88 DO FA A4 06 EB SE 0330- 86 OF ES OF 1E UU 91 ASG =OSSB- 71 60 0310- 00 90 CA 7E 00 90 88 DO ©—:0338- OF 3E 00 91 08 EB ED 08 Programme 3.DEMO E 3.0BU":01 = 9 * 4096:0 = O1 . + 256 : JLOAD PR3.DEMO 30 TEXT : HOME : FOR I = 0 TO 7: PRINT ; LIST “CARACTERE NO "I" : ";: GET C $(I): PRINT C$(1): POKE O01 + 1 REM DEMONSTRATION DU CODAGE DE T, ASC (CSCI): NEXT : PRINT 8 CARACTERES EN 7 OCTETS : PRINT : CALL 768 5S REM 40 FOR I = 0 TO 7:CC#(I) = CHRS 6 REM ( PEEK (O + I)): PRINT "CARAC 10 HIMEM: 9 * 4096 - 1 TERE NO "I" = “CC$¢I>: NEXT 20 PRINT CHRS (4)"BLOAD PROGRAMM 50 PRINT : GET 2%: GOTO 30 Procédure & Philippe Le Dru Une des contraintes du Basic réside dans la définition de ses variables : en effet, toutes les variables d'un programme sont globales, c’est-a-dire que les valeurs de chacune sont, a un instant donné, identiques quelque soit le niveau od l'on se situe dans le programme. L'utilisation de variables locales, en revanche, permet, lors de l’écriture d'un sous-programme, d'affecter les noms des variables interes a ce sous-programme sans devoir se sou- cier si ces noms sont déja utilisés par ailleurs. D'od une approche modu- laire plus simple des problémes, et une programmation structurée plus efficace. La routine de PROCEDURE s’inspire du HBASIC et de HAIFA; elle per- met l'utilisation de sous-programmes récursifs avec passage de parameétres. Trois commandes sont disponibles : © & HOME initialise la pile et la place sur la carte langage (pour un Apple Il Plus) ou dans les 16K supplémentaires pour le //e ou le ‘ic, pour €viter d'encombrer la mémoire centrale. ¢ & DEF <nom>;<variables éven- tuellement précédées de "!""> marque le début d’un sous-pro- gramme. Le nom doit correspon- dre aux régles de syntaxe des ins- tructions DEF FN de |'Applesoft. Les variables suivant le point-vir- gule sont interes a l'exception de celles précédées par un point d’exclamation, qui sont alors glo- bales. Exemple ; & DEF P1;A,B,!C Les variables globales ne peuvent tre des chaines de caractéres. At- tention : celles-ci peuvent en outre @tre perdues si un nettoyage mé moire intervient avant leur "resto- ration”. © & FN <nom>;<variables ou ex- pressions numériques> appelle le sous programme. Les valeurs des variables ou expres- sions numériques sont calculées et affectées aux variables locales. L'ordre FN doit comporter le méme nombre d’expressions que le sous-programme comporte de variables. Comme dans le cas de |'instructon FN, ou comme pour les PROCEDU- REs en Pascal, la définition d'une Procédure doit en précéder I’appel. OQ REM PROCEDURE.DEMO 34 TEST = TEST + 1 1 REM 35 PRINT “GLOBAL :TEST="TEST S PRINT CHR® (4)"BRUNPROCEDURE. | 40 NEXT : END oBJO" 100 & DEF PROC;!1,TEST 10 & HOME 120 I = I:TEST = TEST * 2 11 GOSUB 100 125 PRINT "PROC: TEST="TEST 20 FOR I = 1 TO 11 130 & END 30 & FN PROC;I,TEST 140 RETURN Pom's n° 14 Fa SUCE- BU CE E6 80 AE DB BU EU B1A0- 20 ES DF 85 08 84 OF 20 Procédure OBJO 80D0- DO BO 06 2C 82 CO 4C 10 B1A8- 83 CO 2C 83 CO AS 08 20 8000- A? 4C 8D FS 03 AP 10 8D B0D8- D4 @D 00 EO 40 AE DB 80 81B0- BA 80 AS 09 20 BA AN 20 g0ns- Fé 03 AY AO AD F7 O3 60 S0E0- EO EO BO EF AD 00 EO EE @1B8- 82 CO 20 B7 00 FO OE 20 8010- C9 97 DO 03 4C AS 80 CP = SOEB- DA BO EE ES 80 DO 06 EE 81CO- BE DE AS B88 85 18 AS BF 8018- BS DO 03 4C 2F 80 CF C2 SOFO- DB 80 EE E6 80 60 20 BI B1CB- 85 17 4C 3A 81 20 83 CO 8020- DU U3 4C Fé BU LY BU DU = BOFB- 00 OF BO 85 14 20 EA DF 81D0- 2C 83 CO AS 1C 20 BA 80 8028- 03 4C FD 81 4C 7C DY 20 8100- 85 84 84 8B AD O1 BI 8A 81D8- AS BB 20 BA 80 AS BF 20 8030- B1 00 09 80 85 14 20 EA 8108- 85 1A C8 BI 8A 65 1B AP S1E0- BA 80 AS 75 20 BA 80 AS 8036- DF 85 GA 84 8B 20 6A DD 8110- 3B 20 CO DE AF 01 85 1C B1E8- 76 20 BA 80 AP C2 20 BA 8040- 20 DS E3 A? 3B 20 CO DE = gi1s- AS BB 85 18 AS BY BS 19 B1F0- 80 ZC 8Z CO AD 1A 85 BS 8048- AS 82 48 AS B1 48 AS BY g120- 20 BI 00 FO 08 CP 2C DD BIF8- AS 1B 85 BP 40 20 Bi 00 8050- 48 AS B8 48 AP 01 BS IC = g128- F7 Es IC DO F3 AD 00 BI 8200- 2C a0 CO 20 DD 80 C9 C2 8058- 20 Bi 00 FO 08 C9 2C DO 9130- GA C5 1C FO OS A2 2A 4C @208- FO O6 2C 82 CO 4C 79 OF Bg 8060- F? ES 1C DO F3 AS IC 48 8138- 12 D4 AS 1A 85 BB AS 16 8210- 20 DD 80 85 746 20 DD 80 a3 BO68- AD 00 68 71 BA CB CO OS 8140- 85 BY AZ 00 20 B7 OO CY 8Z18- 85 75 2U DD BU 8S BY 20 = 8070- 00 F8 20 B7 00 CY UU FU gi4g- 21 DO 04 20 BI 00 EB 86 8220- DD 80 85 BB 20 DD 80 85 = = =8078- 16 20 Bi 00 C7 00 FO OF = gi S0- 1D 20 E3 DF 85 85 85 06 8228- 1C C9 OO DO O4 2c 82 CO i g0s0- Cy AF DO FS 20 B1 00 Ce 8156- 84 86 84 07 20 B7 00 FO 8230- 60 20 DD 80 eS 69 20 DD = g0868- 60 DO EE 20 Bi 00 40 AD 8160- 03 20 BE DE AS BS 85 1A 8Z36- 80 85 08 20 DD 80 85 07 = 8070- 02 BI BE FO OE 18 AS BS B168- AS BF BS 1B 2C 83 CO 2C 8240- 20 DD 80 85 06 AS O09 FO S 8098- 67 04 85 BB 90 02 ES BF 8170- 83 CO AD 04 Bi 06 20 BA 8248- 09 AN OS SB BI 06 48 Ba = aoan- 4c 79 AM 4C 10 D4 20 BI ai7e- 80 8B 10 FE AS 04 20 BA = 8250- 10 FA AD 00 20 DD 80 91 = B0AS- 00 AP 00 BD DA BO SD ES g180- 80 AS 07 20 BA 80 20 82 8258- 06 CB CO 0S DO Fé AS OF a 80B0- 80 AY EO 8D DB 80 8D Ed 6188- CO AS 18 85 BB AS 17 BS 8260- FO DA AD 00 68 71 O08 CB = 80B8- 80 60 CE DA BO CE ES 80 © 8190- BY AS 1D DO OB 85 08 85 8268- CO 05 DO FB Cé IC AS IC = 80C0- AE DA 80 EB DD 06 CE DB 8198- 09 20 52 DA AS OF FO 07 8270- DO BF FN RS Programme PROCEDURE 42 BNE >1 86 PHA 43 JMP ADHOME 87 LDY #0 LISA 2.5 44 +1 CMP #sB8 88 *0 PLA Lp I HHI HE EE 45 BNE >2 89 STA ($8A),Y 2 3& HOME 46 JMP ADDEF 90 INY 3 j& DEF NOM;A,B,'C 47 -*2 CMP #802 Pal CPY #5 4 ;& END 48 BNE >3 92 BNE <0 S 3& FN NOM ;x*Y,C¢1> a? JMP ADFN e3 JSR CHRGOT Gf II IIE 50 *3 CMP #$80 94 CMP #0 ? ORG #8000 Si BNE >4 95 BEQ >4 8 OBJ $800 52 JMP ADEND ¥6 ;RECHERCHE &END @ peoees===-—— 53 °4 JMP $D97C 97 *3 JSR CHRGET 10 ;VARIABLES 54 j== a aaa 98 CMP #0 11 BAS EPZ $p0 55 ;&DEF NOM;A,B,!C 99 BEG >4 12 HAUT EPZ SEO S6) §opoo ee 100 CMP #SAF 13 NV EPZ $iC JSR CHRGET 101 BNE <3 14 FN EPZ $14 58 ;ADRESSE VAR. NOM 102 JSR CHRGET 15 Tx EPZ $18 sr ORA #80 103 CMP #380 16 WRT EQuU $co8s3 60 STA $14 104 BNE <3 17 RAM EQU $coso 41 JSR FNGET 105 JSR CHRGET 18 ROM EQU $C082 62 STA $8A 106 RTS 19 TP EP2 06 63 STY $8B 107 ;FIN LIGNE 20 ;ROUTINES APPLESOFT 64 JSR CHKNUM 108 “4 LDY #2 21 CHRGET EQuU $00B1 65 JSR ERRDIR 109 LDA ($B8),Y 22 CHRGOT EQU $00B7 66 LDA “3 110 BEQ >S 23 FNGET EQU $DFEA 67 JSR SYNCHR 111 cLc 24 CHKNUM EQU SDDéA 68 LDA $82 112 LDA $Be 25 ERRDIR EQU $E3D6 67 PHA 113 ADC #4 26 SYNCHR EQU $DECO 70 LDA $31 114 STA $Be 27 PTRGET EQU $0FES a PHA 115 BCC >6 28 CHKCOM EQU $DEBE 72 LDA $B9 116 INC $B9 2? LET EQU $DAS52 73 PHA We SS UMP <3 30 RETERR EQU $D979 74 LDA $B8 118 *5 JMP $D410 Q1 4------------------ 75 PHA 119 32 ;INITIALISE & 76 ;NB VAR =NB DE , +1 120 33 LDA #saC 77 LDA #1 121 34 STA $3F5 78 STA NV 122 < 35 LDA #LABEL Yo 74 JSR CHRGET 123 ADHOME JSR CHRGET 36 STA $3F6 80 BEQ >2 124 LDA #0 37 LDA /LABEL B61 CMP -, 125 STA Pitl 38 STA #3F7 82 BNE <1 126 STA P2+1 37 RTS 83 INC NV 127 LOA #HAUT 40 ;AIGUILLAGE 84 BNE <1 128 STA Pit+2 41 LABEL CMP #97 85 *2 LDA NV 129 STA P22 FP eee 16 Pom's n° 14 130 RTS 200 ;----------------—- 270 ;FIN D’ INSTRUCTION 131 201 ;STOCKAGE VARIABLES 271 JSR CHRGOT 132 ; SP EMPILE 202. 3----=-=---=---—--- 272 BEQ@ »3 133 ;------------------ 203 j;RECH VAR MUETTE 273 JSR CHKCOM 134 EMPILE DEC Pi+i 204 *0 LDA FN 274 ;STOCKE LE PTR 135 DEC P2ti 205 STA $BB 275 LDA $B8 136 LDX P1+1 206 LDA FN+i 276 STA TX 137 INX 207 STA $B9 277 LDA $B9 138 BNE >0 208 ;TEST TRANSFERT 278 STA TX+1 139 DEC P142 209 LDx #0 279 JMP <0 140 DEC P2+2 210 JSR CHRGOT 280 ;EMPILE RETOUR 141 *0 LDX P1+2 211 CMP ¢! 281 °3 BIT WRT 142 CPX #BAS 212 BNE >4 282 BIT WRT 143 BGE Pi 213 JSR CHRGET 283 LDA NV 144 MEMERR: BIT ROM 214 INX 284 JSR EMPILE 145 JMP $D410 215 *4 STX $1D 285 LDA $B8 146 216 ;POS VAR MUETTE 286 JSR EMPILE 147 217 JSR PTRGET 287 LOA $B9 148 218 STA $85 288 JSR EMPILE P| 149 219 STA $06 269 LDA $75 f 150 220 STY $86 290 JSR EMPILE 151 221 STY $07 291 LDA $76 152 222 ;SAUTE VIRGULE 292 JSR EMPILE 153 BGE MEMERR 223 JSR CHRGOT 293 LDA #sC2 | 154 P2 LDA HAUT*256 224 BEQ >1 294 JSR EMPILE 155 INC Pitt 225 JSR CHKCOM 295 BIT ROM 156 INC P2+1 226 *1 LDA $B8 294 ;EXECUTION SP 157 BNE 70 227 STA FN 297 LDA FN 158 INC Pit2 228 LDA $B9 298 STA $Ba 159 INC P2+2 229 STA FNtI 295 LDA FNti 160 230 ;EMPILE VAR MUETTE 300 STA $B9 161 231 BIT WRT 301 162 232 BIT WRT 302 163 233 LDY #4 302 164 234 *2 LDA (#06),¥ 304 ; 165 ADFN JSR CHRGET 235 JSR EMPILE 305 ADEND JSR CHRGET 166 ORA #90 236 DEY 306 BIT RAM 167 STA $14 237 BPL <2 307 JSR DEPILE 168 JSR FNGET 238 ;EMPILE POSITION 308 CMP #éC2 169 STA $84 239 LDA $06 307 BEQ >0 170 STY $8B 240 JSR EMPILE 310 BIT ROM 171 LY #1 241 LDA $07 3ii UMP RETERR 172 LDA <$8A?,Y 242 JSR EMPILE 312 *0 JSR DEPILE 173 STA FN 243 BIT ROM 313 STA $76 174 INY 244 ;RESTAURE TXTPTR 314 JSR DEPILE 175 LDA ($8A),Y 245 LDA TX 215 STA $75 176 STA FN+1 246 STA $88 316 JSR DEPILE 177 LDA “3 247 LDA TX+1 317 STA $B9 178 JSR SYNCHR 248 STA $B9 318 JSR DEPILE 179 ;VERIF NB VARIABLES 249 ;TEST Ese STA $88 180 LDA #1 250 LDA $1D 320 ;DEPILE NB VAR 181 STA NV 251 BNE >5 321 JSR DEPILE 182 ;EMPILE TXTPTR 252 ;CHARGE VAR MUETTE 322 STA NU 183 LDA $B8 253 STA $08 323 ;SI NUL ->RETOUR 184 STA TX 254 STA $09 324 *3 CMP #0 185 LDA $B9 255 JSR LET 325 BNE >1 186 STA TXti 256 LDA $09 326 BIT ROM 187 ;COMPTE LES VIRGULES 257 BEQ >6 327 RTS 198 71 JSR CHRGET 258 ;VAR A TRANSFERER 328 *1 JSR DEPILE 189 BEQ >2 259: 25: JSR PTRGET 329 STA $09 190 CMP *, 260 STA $08 330 JSR DEPILE 191 BNE <1 261 STY $09 331 STA $08 192 INC NV 262 ;EMPILE POS TRANSF 332 JSR DEPILE 193 BNE <1 263 76 BIT WRT 333 STA $07 194-2 Loy #0 264 BIT WRT 334 JSR DEPILE 195 LDA ($8A),Y 265 LDA $08 335 STA $06 196 CMP NV 266 JSR EMPILE 336 LDA $09 197 BEQ >O 267 LDA $09 337 BEQ >4 198 LOX #824 268 JSR EMPILE 338 ;STOCKAGE PROVISOIR 199 UMP $D412 269 BIT ROM 339 LDY #5 Pom's n° 14 MICRO- ORDINATEURS POUR JEUX VIDEO ET MD3 HITACHI PROMOTION DISQUETTE POUR FLOPPY | secle ca pecstimt 162 65 F 69F SUPER FLOPPY DRIVE PROMO «MONITOR BASE» pour APPLE 3 POUCES | SOGLE ORIENTABLE POUR MONITEURS NB ou COULEUR CARTE 80 COLONNES CARTE D’EXTENSION — 128 K RAM =) CARTE INTERFACE POUR 2 FLOPPY-DRIVE a écuipee 449") CARTE DE PROGRAMMATION 8716-2752-2764 7) CARTE DE CONNECTION série RS 232 C le Version KITS EN PROMOTION CARTE D'UNITE CENTRALE double processour 6802 ot Z 80. 64 K BAM 7 siots d'extensions. Fonct 3 OPIN IW 2° Version iblés. équipés) 3350° st: ASA? (sans ROM 2290 F CLAVIER ASC II 950 F 779 F yy 698 F Be catia 960 F ay a7ue-F 1690 ALIMENTATION 220 \ CARTE INTERFACE POUR 4 co! MP pr ENSEMBLE 4490 *}| terranes EW RATT: clair et pave nama [4490 *} lie umamsibiso Chaque Sener peur ached separ dent 4 GARTE «SPEETCH» ALBER XIV le moniteur couleur 14’’ de votre micro MONITEURS écran ver TABLE GRAPHIQUE 999 F List} ZENITH 12” 2990" pour Apple VENTILATEUR «FAN» Re. 495 F EFFACEUR D’EPROM EN KIT « 180°} ALIMENTATION A DECOUPAGE COMPATIBLE «APPLE» -5V-5A VOSA * APPLE est une marque déposée et appartient @ APPLE COMPUTER S.A. 42, rue de Chabrol, 75010 Paris. Tél. 770.28.31. 340 DEY 341 °5S LDA (#04),Y 342 PHA 343 DEY 344 BPL <S 345 ;RESTAURE VAR MUET 346 *4 LDY #0 347 *2 JSR DEPILE 348 STA ($06) ,Y 349 INY 350 CPY #5 3S1 BNE <2 352 ;TRANSFERT 353 LDA #09 354 BEG >7 355 LDY #0 356 *6 PLA 357 STA ($08),Y 3538 INY 359 cPY #5 360 BNE <6 361 ;TEST FIN 362 *7 DEC NV 363 LDA NV 364 BNE <1 365 BEQ <3 B66 Sssssss=== 367 END Si l'apprentissage du Basic ne me pose pas trop de problemes, I'unlisa- tion de l'assembleur ne me parait pas aussi évidente. En conséquence, un bon exercice consiste, selon moi, « décortiquer les routines publiées dans Pom’s pour les adapter a de nouvelles situations. Ainsi, j'ai pensé qu'une modification de la routine de disquette virtuelle 16K de Michel Haag (Pom’s 12) pourrait rendre quelques services aux Possesseurs de carte 80 colonnes “étendue” en transformant cette ré- serve d’octets en un pseudo-disque bien pratique Les deux programmes publiés ici permettent d'atteindre cet objectif : @ La routine RWAUX proprement dite, qui sera logée a la place du secteur $F du directory dans la carte langage, afin de la rendre in- dépendante des -commutateurs RAMRD et RAMWRT, et qui donne accés 4 la pseudo-dis- quette. @ La routine RWAUXINIT qui se charge de la mise en place de RWAUX, du VTOC, du directory Disque virtuel 64K et d'un patch du DOS qui permet Tappel du disque virluel. Pour plus de commodité, les deux routines sont regroupées dans un méme code objet AUTO RWAUXI- NIT. Aprés lexécution de ce pro- gramme par BRUN. tout appel au second lecteur D2 sera dirigé sur le disyue virtuel logé dans I’extension mémoire de la carte 80 colonnes étendue. Le disque ainsi constitué se compose de 11 pistes completes, dune piste de 12 secteurs et d'une piste affectée au catalogue et a la routine d’exploitation. Cette nouvelle version de pseudo- disquette n’est pas moins volatile que la précédente, bien str. Avant d'éteindre votre Apple, n’oubliez donc pas de transférer les inform tions stockées en RAM sur une véi table disquette dans le lecteur D1 Vous pouvez réaliser ce transfert di- rectement a partir de vos program- mes, en mode immédiat pour les Programmes et fichiers binaires, ou, Jacques Rey de fagon générale, au moyen du FID classique. Si vous possédez deux lecteurs de disquettes, vous pouvez reconnecter le second en D2 par POKE 48372,0. Un POKE 48372,2 redirigera tout appel a D2 sur la carte d’extension. Les pistes $11, $12 et $13 se trou vant dans la carte langage, il peut étre utile de verrouiller les huit der- niers secteurs de la piste $13 pour y loger une copie du moniteur, ce qui permet, par exemple, d’examiner le VTOC et le directory avec la commande "H” du monileur étendu. Pour ce faire, "bootez” avec une dis- quette contenant le fichier INTBASIC puis passez en moniteur et tapez CO8B N CU8B N DU84:00 00 Les secleurs $8 a $F de la piste $13 sont ainsi verrouillés et le moniteur ne sera pas écrasé par les informa tions chargées dans le pseudo-dis- que. 3H 3 9 EE 9 HE a a GE eae ae a aaa LISA 1.5 jMISE A ZERO DU VIOC ET DU DIR 1 2 5% 3 3% RWAUX INIT * 4 3% * Sys J. REY (JUIN 84) * 6 3% * 7 4% (D’APRES M.HAAG) * B 5* * D5 FEIT IIE HEE TE SEE EE 10 ; AD 4 12 ORG $4F00 13 5 14 PTR EPZ $2A 15 § 16 INIT LDA #co8e jVALIDATION DU 1ER BANC 17 LDA $CO8B 18 LDA #$00 19 STA PTR 20 LDA #$D0 21 STA PTRII 22 Bi LDA #800 23 LDY $00 24 B2 STA (PTR? ,Y Pom's n° 14 19 B2 PTRti PTRtL H#SE0 BL NITIALISATION DU VTOC #6D0 PTR+1 #S06 UTBL1,Y (PTR? ,Y jINIT DES OCTETS $0 A $37 DU YTOC 83 #870 $0027 #80D $D030 #¢23 $0034 #510 D035 #S01 $D037 #SCC $0047 ;INHIBE LES SECTEURS 0,1,4,5 DE LA PISTE $04 #SFF S17 UTBL2,X ;LIBERATION DES PISTES $5,8,9,A,B,C,D,E,F,12 ET13 PTR) ,¥ j7PAR MISE A $FF DES OCTETS CORRESPONDANTS 3DU VTOC B4 #$D2 sINITIALISATION DES OCTETS DE PTRt1 ;CHAINAGE DES PAGES DU DIRECTORY #801 agit (PTR) ,Y PTR+1 PTR 4S0F 85 PTR+1 #802 #$0D (PTR? ,¥ PTR+1 Bé CHARGEMENT DE LA ROUTINE RWAUX A LA PLACE DU SECTEUR $F DU DIR H#SDF PTR+1 #300 $5000,Y (PTR? ,¥ B? DECONNECTION DE LA CARTE LANGAGE $cos2 sCOsA 3 jMISE EN PLACE DU PATCH PERMETTANT L’APPEL DE RWAUX i 25 DEY 26 BNE 27 INC 28 LDA 29 cMP 30 BNE 3 32 33 34 LDA 35 STA 36 LDY 37 B3 LDA 38 STA 39 DEY 40 BPL =| O41 LDA 42 STA 43 LDA = 4 STA = 45 LDA = 46 STA = 47 LDA = 428 STA = 49 Lpa 50 STA 51 LDA 92 STA 53 ; 54 LDA 35 LDx 56 B4 LDY S7 STA 58 DEX 59 BPL 60 j 61 LDA 62 STA 63 Loy 64 B5 LDA 65 STA 66 INC 6? LDA 68 CMP 6? BNE 70 DEC 71 Loy 72 LDx 73 BS TXA 74 STA 75 DEC 76 DEX 77 BNE 78 ; 79 5 80 ; 81 Lpa 82 STA 83 LDY 84 B7 Loa 85 STA 86 DEY 87 BNE 88 5 89 ; 90 5 a CLE 92 LDA 93 LDA 94 95 96 AEB 20 Sbapagiiei sees aie sae SSeS aeSsEsS retro Pom's n° 14 AUTO RWAUXINIT.OBJ 97 LDY #918 98 Be LDA PATB,Y 99 STA $BCEB,Y 100 DEY 1o1 BPL BS 102 RTS 103 ; 104 ;TABLES 105 ; 106 VTBL1 HEX 04110E030000FE 107 VTBL2 HEX 31484C4D58595C506061 646568696C6D7071 74758081 8485EA 108 PATB HEX 84488549A002B1 48C90 2D00DADSBCOADABCO4C4EDF4CEBBCEA 109 END aFOO- AD 4F08- 85 4Fio- Ad 4F18- 28 ccrtctririccccetccecereerrss 4F20- 00 24% * 4F28- 91 33% RWAUX x 4F30- 27 i: : 8 ° i JACQUES REY (JUIN 84) : ee ee 4FSO- 9F 7 $® ADAPTATION DE L’IDEE DE * arss= 02 8 yx M. HAAG * 4F40- 2A ? 5% * 4F68- F4 LD 5 RHR HR EEE 4F70- 91 Lh vg 4F78- DF 12 ORG $DF67 aFe0- 91 13 OBJ $5067 Alege a 14; aF90- 4F 15 jEMULATEUR DE DISQUETTE SUR CARTE AUXILIAIRE sheen i 4FAO- 48 16 5 4FAB- 61 17 IOBP = EP2 $48 4FRO- 71 18 PTR EPZ $2A 4FBe- 84 19 BUFPTR EPZ $3E 4FCO- ce 20 SECT PZ $2D 4FC8- 8B 21 TRACK EPZ $2E 4FDO- EA 22 ; 4FD8- EA 23 TRK EQU $4 area” eS 24 SEC EQU $5 an: ce 25 BUF EQU #28 4FF8— GA 26 CMD EQu $0C S000- 00 27 DRY EQU $02 5008- AD 28; 5010- AG 29 TBI HEX 100706 :PISTES INTERDITES 5018- Ad 30 TB2 HEX 00010405 ;SECTEURS INTERDITS S020- 00 a1 3 5028- AF 32 ;TRANSFERT DES POINTEURS Boser ae 33 5 s040- 00 34 RWAUX LDY BUF 5048- ao 35 LDA (IOBP) ,Y SOSO- AG 36 STA BUFPTR 5058- Al 37 INY 5060- 00 38 LDA (IOBP),Y 5068- 07 39 STA BUFPTR#I pa a 40 LDY "SEC a 41 LDA (TORP) ,Y Sree ae 42 STA SECT S090 47 43 LDY #TRK 5098- 88 4a LDA CIOBP),Y SOAG- 2E 45 STA TRACK S0A8- 65 463 50B0- OF 47 ;DETERMINATION DES PISTES ET SECTEURS S0B8- OF 48 ; soco- cy 49 CMP H$14 ;ERREUR SI PISTE > $12 50Ce- Ao 50 BPL ERR ob ce Sope- 38 Si CMP #911 }BRANCHE SUR VTOC OU DIR S0EO- €a 52 BEQ DIR S0E8- 2A 53 CMP #s04 ;ERREUR SI PISTE ¢ $04 SOFO- £8 34 BMI ERR SOFS- 91 = Pom’s n° 14 eB 2A oo AS 85 co Ar v1 2B 2B 88 ay 34 o1 DO ai 268 2B 2B cé 28 88 8A ee OE 4D 65 75 8s Do 4c EA AD bo 2A cy aa 16 oD Do 8D ao 2A au AS Ao 2B AO bo co Bc 03 58 68 80 49 oD 6E EA EA EA EA EA EA os D7 Ad ao ce AE AG Ao ca BS AO AO oo o1 SE B81 85 FO oe ar 04 2B 8B 8s Bs £0 06 Fe 8D a9 37 FF cA o1 2B 02 ca oo Fs a0 se oo 37 69 at Ao AD OF EA EA EA EA EA EA D4 C1 AD an ci o2 ag Ad oS 84 AD A a0 04 ce 48 2E 2c 6? 00 0A aa 10 2A 6? cy co ep 8c Do 05 FS co 2B bo DO Bo A? 30 10 bo A2 10 asa ce A2 dO By 18 18 10 00 Sc 6c e4 o2 4c EA ae AP FB EF 98 7A bo 8D ar 17 Fe 11 DF oD FS vo AD Bo F? FE SD 6D 85 Bi co EB EA EA EA 00 oo ES ag 4aF ap ay 35 cc gc ag aA Do Es Ay su 82 BS 60 31 60 70 EA 48 AD BC FA EA EA EA EA EA cs 00 Ad a0 a0 oo AO a0 ao 00 A0 AO 10 os 85 a0 10 30 40 AS oA aA ce 20 2B 09 19 AD 81 90 3e 22 5S 36 57 58 sv 60 é1 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 a 78 7? 80 61 82 83 84 a5 86 87 se BF 90 ai ee 93 94 7S 98 97 98 99 100 101 102 103 104 105 106 107 108 109 110 1ii 112 113 114 115 116 117 118 119 120 121 122 123 124 LDY VERIF1 CMP BEQ DEY BPL LDA STA LDA SEC sBc ASL ASL ASL ASL ADC STA LDY VERIF2 CMP BEQ DEY BPL JMP j DIRECTORY DIR LDA STA cLce LOA CMP BEQ ADC STA 3 j3EXECUTION i —xa LDY LDA cMP BEQ CMP BEQ CMP BEG 3 ERR SEC RET STA STA LDA 3 READ LDY STY BRI LDA STA DEY BNE cLC Bcc H WRITE LDY STY Bul LDA STA DEY cLCe BCC OcM END #02 TB1,Y ERR VERIFI #00 PTR TRACK #$04 SECT PTRti #303 TB2,Y ERR VERIF2 Ex@ #200 PTR SECT #S0F ERR #300 PTRt1 DE LA COMMANDE "cMD (IOBP> ,¥ #900 RET #301 READ #302 WRITE $co02 C0049 $C08A #300 $c003 (PTR) 5¥ (BUFPTR) sY BRI RET #$00 #c005 (BUFPTR) ,Y (PTR) ,Y BUI RET ;ERREUR SI PISTE = $06,%07 OU $10 3; (PAGE GRAPHIQUE ET PORTS) PAGE MEMOIRE= $10%(TRACK-4) PLUS SECT jERREUR SI PISTE $04 SECTEURS 40,4#1,%4,¢5 ;(PAGES 0,1 ET TEXTE 80COL) i ;CALCUL DE LA PAGE DU CATALOGUE ;ERREUR SI SECTEUR $0F 3 (EMPLACEMENT DE LA ROUTINE? ;PROVOQUE 1/0 ERROR ;REMET LES COMMUTATEURS EN POSITION ECT/ECRIT EN MEMOIRE PRINCIPALE ;COMMUTE LA MEM EN $DFEZ QUI CONTIENT RTS y;MEM AUX EN LECTURE j;MEM AUX EN ECRITURE " BSAVERWALX . OBJ ,A$5000 ,L$100" Pom's n° 14 Premier contact Conception du logiciel Appleworks est un logiciel présenté comme "intégré”. Il comporte : ® un traitement de texte. parent d’Applewriter ; @ un gestionnaire de fichier, tes proche de Quick File : © un tableur, compromis entre Visi- calc (ou plut6t Magicalc) et Multi- plan. Il nest en fait que partiellement inté- gré. En effet - 1 - lest possible de “couper/coller” 4 l'intérieur d'un document, ou entre 2 documents DE MEME TYPE (2 ta- bleaux par exemple), mais non entre documents de types différents (on ne peut effectuer de calculs par le ta- bleur sur les données d'un fichier, sauf, et uniquement au moment dune création de document_nou- veau, a transiter par un fichier DIF !). 2 - Il est également possible. mais moins direct, de passer d’un tableau ou d'un élal composé a partir d'un fichier, vers le traitement de texte (on utilise alors une sous option "clip board” de l'option d'impression). La gestion du “clip board” n'est pas tres simple. Par la pratique, nous avons cru comprendre que les ex- traits DE -MEME NATURE s‘entas- saient et étaient ensuite repris en bloc, alors qu'un extrait d'un autre Ue vidait le clip board. ‘out a été fait pour faciliter 'appren- tissage : nombreuses fonctions “help” a différents niveaux, identité des commandes dans _ les _ diverses composantes, utilisation relativement aisée de toutes les commandes de lApple //e (les 4 fléches de direction et les "pommes”), Le traitement de texte Forces Option "couper/coller” puissante et commode (mais avec deux modes utilisation différents selon qu'on travaille entre textes, ou bien entre fi- chier ou tableau et texte). Désignation pratique des zones a supprimer, déplacer, dupliquer. “cou- per/coller™ Nombreuses options d’impression, trés puissantes quand on en a bien acquis le mécanisme. Possibilite d’in- tervention au clavier en cours d’im- pression. Faiblesses Absence d'une fonction Glossaire. Pas de notion de paragraphes (mais il existe un systeme de "mar queurs”) Quelques problémes de justification (il n’existe pas de justification gauche Pom's n° 14 Appleworks a l’essai ou droite, et les options d'impression perturbent la justification totale). Synthése Sil ne s‘aqissait que d'un nouveau traitement de texte, il n'y aurait pas de quoi déclencher I'enthousiasme. Il faut donc voir celui-ci uniquement dans le cadre de I'intégration avec ta- bleur et gestionnaire de fichier. Alors, on ne peut qu’étre séduit par le fonc- tionnement du "couper/coller” direct (entre textes), ou indirect, par l’inter- médiaire de Toption dimpression (entre état ou tableau et texte). Le gestionnaire de fichier Forces Ce sont essentiellement celles de Quick File (simplicité et souplesse, travail tres commode 4_ | écran. confection aisée d’états et d’étiquet tes...). A ces avantages, il convient d'ajouter bien entendu la fonction "“cou- per/coller” dans un fichier ou entre deux fichiers et la fonction impres- sion sur "clip board” a destination du traitement de texte. Faiblesses Comme les avantages, les inconvé- nients sont essentiellement ceux de Quick File (insuffisance de contréles dentrée. quelques difficultés de ma- nipulation du curseur, capacité assez limitée). Attention aux "sorties du systéme” dans le cas de certaines options im primante non admises. Synthese Plus encore que dans le cas du trai- tement de texte, on pourrait étre tenlé de dire que ce nouveau ges- tionnaire de fichiers est un de trop: Quick File suffisait. Bien entendu, c’est encore dans l'in- tégration (entre fichiers, et avec le traitement de texte) qu'il faut en re- chercher la justification. On peut alors regretter qu'il n'y ait pas une communication directe pos- sible avec le logiciel tableur pour ef- fectuer facilement des calculs a partir d’éléments puisés dans un fichier et retourner les résultats vers le fichier. Le tableur Forces Maniement commode de groupes de rangées, colonnes ou cases. Guy Lapautre Possibilité de faire apparaitre et d’im primer le tableau des formules de calcul, de trier en ordre alphanuméri- que ou numérique dans une co- lonne, de rechercher une case par son contenu (alphabétique) Et bien entendu, fonctions “cou per/coller” et impression sur “clip board”, ainsi que possibilité d'utiliser un format DIF (en entrée et en sor- tie). Faiblesses Pas de ligne de rappel des comman- des disponibles (il faut passer par “help”) et pas de “help” pour les fonctions de calcul. Dans la duplication des formules, “no change” en option par défaut (chacun sait qu'on utilise beaucoup plus souvent "relative”). Pas de fonction de consolidation de plusieurs tableaux. Synthése Un nouveau tableur, qui a pris beau- coup des fonctionnalités apparues progressivement dans ce domaine depuis "l'ancétre” Visicalc. Il est tou- tefois fort regrettable que les auteurs naient pas cru devoir y adjoindre une fonction de consolidation. Par ailleurs, mémes observations que pour le gestionnaire de fichiers en ce qui concerne I’aspect d’intégration. En resumé Appleworks est probablement proche de ce qu’on peut faire de mieux en matizre de logiciel intégré, compte tenu de la capacité et des performan- ces de l'Apple //e, méme si quelques détails irritent. ll serait intéressant de le comparer de facon détaillée 4 Jane, autre logiciel inlégré pour la méme machine, for tionnant selon le principe, cher 4 Apple, de la souris graphique exploi- tant un jeu d'icénes, Jane posséde en outre une gestion multifenétres. Forces Avant tout, d’honnétes possibilités dintégration entre trois _ logiciels : passage trés simple entre des taches de méme type, assez simple entre ta- bleur ou gestionnaire de fichiers et traitement de texte, un peu plus compliqué et moins complet entre gestionnaire de fichiers et tableur. Fonctions communes (gestion de dis- que et de fichiers. hard copy, help”... ) pratiques et efficaces. onne standardisation des commandes des diverses composan- tes. 24 Svagissant de chacun des logiciels : Traitement de texte assez classique, avec de bonnes facilités pour dési- gner des zones de travail et de nom- breuses options d'impression. Gestionnaire_ de fichiers presque identique 4 Quick File, simple d’em ploi, souple et efficace, avec confec- tion d’états aisée. Tableur proposant une bonne syn- thése des réalisations dans ce do- maine, avec une gestion commode par groupes de lignes, colonnes ou cases. Faiblesses On peul regretter (mais I'Apple //e est ce qu'il est). qu'il n'y ait pas une option “coupericoller” généralisée entre les trois logiciels qui composent Appleworks. On peut également re- gretter qu'il n'y ait pas un quatriéme logiciel, un éditeur graphique. Notons toutefois que le format DIF permet théoriquement d’utiliser Visicale. Mais e, dernier fonctionne sous DOS Nous avons connu A plusieurs repri- ses des problémes de sortie irrémé- diable du logiciel, avec perte du der- nier travail exécuté, lors de l'utili- sation de certaines options d'impres- sion. Pour chacun des logiciels pris indivi- duellement : Traitement de texte dans lequel on aurait aimé retrouver le glossaire d’Applewriter. La justification des textes est traitée de fagon un peu sommaire. Gestionnaire de fichiers un peu limité (comme Quick File) dans la structure des enregistrements, et sans contréle dentrées, Tableur auquel manque essentielle- ment la fonction de consolidation entre divers tableaux. De ce cété, pas de progrés par rapport & Visicale. En synthése Une note BIEN, mais il manque rela- tivement peu de choses pour en faire une note TRES BIEN. Jane : la sauce Macintosh Jean-Michel Gourévitch Un traitement de texte. un tableur et une base de données réunis dans le méme programme, sur la méme dis- quette. avec des ponts permettant de passer d'une application a l'autre. Une des premieres applications de la "souris”, utilisable sur Apple Il. Il+. Je et //c, voici Jane, un logiciel & la présentation géniale, mais dont le ra- mage n’égale pas tout a fait. hélas. le plumage. Il a été écrit par deux petits génies de 21 ans dont l'un, Howard Marks fit ses études secondaires chez nous. au Lycée Janson de Sailly de Paris. Ce détail n'est pas inutile: il explique pourquoi ce programme dé- veloppé aux Etats Unis (la société distributrice a été créée avec les fonds d'une société d’exploitation de casinos) est aussi parfaitement fran- cisé. Ce n’est pas la moindre des qualités d'un logiciel parfaitement “bluffant D‘abord un mot sur son aspect phy- sique Avouons-le tout de suite, cette Jane-la est diablement séduisante. Aprés une demonstration bien menée, il est difficile de ne pas cra- quer pour la belle... Le manuel représenterait ce qu'on peut attendre de mieux d'un manuel (clair. illustré d'exemples et de des- sins) s'il n'était parfaitement inutile Jane est en effet livré en quatre dis- quettes. Lune est une auto-démons- tration parfaitement menée et qui donne envie de prendre de suite la souris en main. La seconde (de cou- leur grise) est la disquette systéme. Le coeur du logiciel. La troisiéme (noire) est une disquette de données. qui contient aussi des exemples et des utilitaires, La derniére (jaune) est la _disquette d'aide. A chaque fois qu'il en est besoin, le programme de- mande diinsérer la disquette néces- saire dans le second drive en la dési- gnant par sa couleur (avis aux pirates). Si ce n’est pas la bonne. il insiste.. Mais, c'est une fois la disquette sys téme dans le lecteur et Apple sous tension que le feu diartifice commence. Jane utilise icénes et souris comme Macintosh; a propos de souris. un détail important: la derniére version de Jane fonctionne avec la souris d’Apple, et méme, pour ceux qui en sont encore dému- nis -les possesseurs d’Apple Il, Il+ et /e apprécieront-, avec un simple joystick (il faut alors reconfigurer la disquette grise). Les icénes, confor mes 4 ce nouveau langage dont raf- folent les habitués des aéroports in- ternationaux, sont plutét bien réussies et different selon les applica- tions (celles de la base de données sont les moins claires). On trouve, comme dans le Mac, une poubelle pour la destruction de fichiers. Et. comme avec le Lisa, une petite mon tre vous fail patienter lors des accés du logiciel a la disquette. Le premier probleme cest. hélas. que cette montre est bien nécessaire Les accés disquettes sont fréquents et lents. Une fois qu’on désigne un dos- sier 4 ouvrir en cliquant la souris. il faut par exemple une bonne dizaine de secondes avant d'y avoir acces. Cest le prix 4 payer pour voir s affi- cher sur le moniteur d'un Apple // la réplique de l'écran de Mac tout en vert (ou presque). A partir de la. on déplace sa fenétre sur l'écran. on ouvre de nouveaux dossiers ou de nouvelles applications (on peut en- tasser jusqu’a quatre dosssiers sur le “bureau”). On peut trimbaler un éie- ment d'une application vers une autre. insérer par exemple une liste de chiffres du tableur dans le tra ment de texte (grace aux icAnes seaux", “caméra” et “pot de colle”) plus facilement, il faut le reconnaitre. que dans Appleworks. l'autre pro- gramme “‘intégré” vendu. quant & lui, par Apple. On laura compns. tous ceux qui ne se sont jamais servis d'un tableur, d'un gestionnaire de fi- chiers ou d'un traitement de textes (beaucoup de nouveaux possesseurs d’Apple //c se reconnaitront dans ce portrait) seront a la féte. Avec toute- fois une nuance: la fréquence des accés disquette nécessite plus que pour tout autre logiciel un second drive. Pour les autres. les vétérans d’Ap- plewriter, les Multiplanistes _(-pla- neurs ?) chevronnés et les CX-Multi- gestionnaires confirmés, Jane reld- vera plus du jeu de société que de loutil de travail. Résumons en vrac : un traitement de texte ne pouvant af- ficher (& condition d’avoir choisi les plus petits caractéres écran) que 70 colonnes, “l'oubli” d'un glossaire, et un choix de codes d'impression étri- qué: un gestionnaire de fichiers dont les rubriques sont limitées A 25 ca- ractéres et le total des informations par saisie (rubriques comprises) a 250 caractéres: tn tableur qui ne permet guére que de calculer un budget familial, sans pouvoir bien stir lier des feuilles entre elles. sans nu- mérotation des colonnes et avec un choix d'opérations “riquiqui™. Pas besoin d'épiloquer, les créateurs de Jane le reconnaissent eux-mémes. leur programme ne vise pas les “pros”. Ceux qui passeraient outre risquent la déception, et accuseront ce programme “bluffant™ de tricherie. Ils n’auront pas tout 4 fait raison, Car le mérite de Jane. c'est douvrir ce bon vieil Apple II aux techniques “davant-garde™ de | intéaration. des souris et des fenétres. En fait de fe- nétre. celle qu’ouvre Jane sur l'ave- nir est un apéritif tentateur. On se prend a réver d'un logiciel de méme principe tournant sur un Apple Il muni d'un nouveau processeur 16 bits (le 65816, par exemple. sur le- quel travaille Steve Wozniak . voit la rubrique Micro-intormations} et d'une mémoire portée 4 512 K. Il n’aurait guére a envier 4 Lotus 1-2-3 “le ma- qnifique . Et si c était pour demain 7 Pom's 1 14 L’Applesoft est pauvre, c'est en- tendu, mais si l'on en juge par toutes les greffes qui lui ont déja été faites par le biais de l'ampersand (&), il semble bien que, finalement, on ne préte pas qu’aux riches... ICARE est un amper-interpréteur assez complet, dont lidée m’a été inspirée par le programme "Print Using & Friend” de CALL A.P.P.L.E., et par le fameux “Haifa” publié dans Pom’s numéro 5. J'ai ainsi voulu réunir dans un seul et méme programme de nombreuses routines, dont certaines ont été em- pruntées a l'article de CALL A.P.P.L.E. deja mentionné, d'autres a Pom's, ou que j’avais développées pour mes propres besoins. On dis- pose de cette facon de multiples ins- fructions nouvelles en Applesoft, en méme temps et avec un puitt d’en- trée unique. Il n'est donc plus néces- saire de se préoccuper des proble- mes de compatibilité entre les différentes routines, ni de jongler avec les disquettes et les fichiers pour charger en mémoire celles dont on a besoin. Nous examinerons d’abord les diffé- rentes instructions disponibles et leur syntaxe, avant de voir comment met- tre en oeuvre ICAKE. Les instructions @ICARE PRINT USNG > & PRINT USNG > chaine;exp (exp désigne une expression numén- que) Exemple : Si A = 1234.56, & PRINT USNG > 00": donne 1234.56 & PRINT USNG >"000000.00”, donne 001234.56 & PRINT USNG >”, .00”; donne 1,234.56 & PRINT USNG >"$ 00”, donne $1234.56 & PRINT USNG >"Total ; $00"; A donne: Total $1,234.56 Si A = 9506789, & PRINT USNG >"Martin ”, A donne . Martin : 950-67-89 Auteur: Craig Peterson CALL A.P.P.L.E. NOISE & NOISE expl,exp2 Produit un son dont la durée et la > > > S Pom's n° 14 Amper-interpréteur ICARE hauteur sont données par expl et exp2, l'une et l'autre devant étre comprises entre 0 et 255, Auteur: Craig Peterson AP.P.LE. WAIT & WAIT exp Attend "exp" dixiémes de seconde. Craig Peterson CALL CALL Auteur = AP.P.L.E SWAP > & SWAP > variable1,variable2 Echange les contenus des variables “variablel” et “variable2”, qui doi- vent étre de méme type. Par exem- ple : & SWAP > A$,B$ Auteur: Craig Peterson A.P.P.L.E GOTO caiculé & GOTO exp CALL Exécute un GOTO 4 la ligne dont le numéro est donné par le calcul de “exp”. Par exemple, si A=100, & GOTO A’2 est équivalent 4 GOTO 50 (voir INTEGER BASIC) GOSUB calculé & GOSUB exp Exécute un GOSUB selon les mémes régles que pour le GOTO calculé (voir INTEGER BASIC) DEL ARRAY > & DEL ARRAY > nom de tableau Efface en mémoire le tableau dont le nom est précisé dans instruction (par exemple, & DEL ARRAY >A$ detruit le tableau A$). Le tableau peut étre de n'importe quel type, mais il doit absolument exister. Auteur: Craig Peterson APPLE. CALL Pascal Cantot BELL & BELL exp Produit un son de cloche dont la durée est donnée par la valeur de “exp”, qui doit étre comprise entre 0 et 255. RPT PRINT & RPT PRINT chaine.exp ny it i Er Affiche “exp” fois la chaine (la valeur ie de exp doit étre comprise entre 0 et & 255). = E PLAY & = & PLAY expl,exp2 = Joue une note de hauteur “exp1™ et ny de durée “exp2”. Il est possible de = donner plusieurs notes, mais il faut alors séparer les couples note/durée par des ”;”. Par exemple : & PLAY 192.0 ; 172,0 ; 152,0 ; 144,0 ; 128,0 ; 115,0 ; 102,0 ; 96,0 joue l'octave 1. Pour les octaves plus aigués, il suffit de diviser par 2 4 chaque octave, et pour obtenir les diéses, il faut faire la moyenne des deux notes adjacentes. REG & REG Affiche le contenu des registres du 6502. BKGND & BKGNDexp Met tous les octets de la page HGR courante a “exp”. Par exemple, & BKGND255 blanchit la page cou rante (page 1 par défaut). HINV & HINV Inverse la page HGR courante (page 1 par détaut). SYS & SYS Passage en mode moniteur (équiva- lent a CALL —151). MOVE & MOVE expl,exp2 TO exp3 Fait exécuter la commande MOVE du moniteur et déplace a l'adresse “exp3” la zone de mémoire comprise entre les adresses "exp1” et "exp2”. Accés direct a la disquette & BUFFER = exp Sélectionne la page du buffer qui sera utilisé par RWTS dans les commandes de lecture / écriture. Par SS a ee 26 exemple, avec & BUFFER = 32, le buffer commence en 32 * 256 = 8192. La valeur par défaut est $96, soit le premier buffer du DOS avec MAXFILES 3. & READ P,S Lit le secteur $ de la piste P dans le buffer. Le lecteur utilisé est le dernier lecteur sélectionné par une com- mande DOS. & WRITE P,S Recopie le contenu du buffer sur le secteur S de la piste P. Méme remar- que que ci-dessus en ce qui concerne le lecteur utilisé. RESTORE & RESTORE exp Ajuste le pointeur de DATA au début de la ligne dont le numéro est donné par “exp” Un message d’erreur est envoyé si la ligne n’existe pas ou ne contient pas de DATA. SUPER PRINT ICARE réserve une place pour |’im- plantation de la routine de SUPER PRINT de Denis Sureau publiée dans le Pom’s 9. Vous trouverez dans la deuxiéme partie de l'article la procé dure a suivre pour joindre cette rou- tine aux autres. Si elle est implantée, la syntaxe de linstruction est & SUPER PRINT:A$,X,Y +Z,chaine PRINT AT & PRINT chaine AT H,V Affiche le contenu de la chaine a la colonne H de la ligne V (H de 1a 40 et V de 1 24). Cette instruction ne modifie pas la position du cur seur. GET & GET X Remet le clavier a zéro, attend qu'une touche soit pressée et met son code (inférieur 4 128 — bit 7 a 0) dans X. Peut étre utilisé en mode di- rect. TORTUE ICARE réserve également la possibi- lité d'implanter la Tortue de Jacques Duma publiée dans le Pom’s 6 (voir seconde partie pour le mode opéra- toire). La syntaxe de cette commande est alors : & DO [ instruction | Pour la description des instructions de la Tortue, se reporter au Pom's 6 ou au Recueil 2. Touches de fonction & XFUNCT Initialise le programme de touches de fonction qui dévie la routine d’entrée de caractéres. Pour obtenir ensuite les fonctions, il faut appuyer simulta- nément sur "Pomme Quverte” (Apple //e ou //c) ou sur un bouton de manette de jeu (Apple Il+), et sur la touche concernée. En cas de Reset, le programme est déconnecté. Chaque touche “pom- mée” est accompagnée d'un “bip”’. Attention, 'instruction & XFUNCT déconnecte la routine HCURSOR qui permet d’avoir un curseur visible en HGR (voir plus loin). Les touches de fonction disponibles sont les suivantes : © Sil s'agit d'un chiffre n, le pro- gramme va adresser le commuta- teur dlaffichage situé a |’adresse $C050 + n. ® CTRL-1: envoie 8 espaces. e@ #: envoie N ED24G "RETURN” (conversion hexadécimal / déci- mal). @ %: fait afficher la valeur de LOMEM. e : fait afficher la valeur de HIMEM. @ «: fait entrer en mode moniteur. @ /: exécute TEXT:HOME "RE- TURN” @ =: affiche COLOR = ® C: envoie CATALOG G: envoie GR : fait afficher INPUT L: fait afficher LOAD @ N:: fait afficher NEXT @ R: fait afficher RUN @ T: fait afficher & DO[ e e W: fait afficher & WAIT Z: fait afficher &CIRCLE = ]: fait afficher &NOISE Del: recule le curseur en effacant le caractére précédent. !: execute TEXT: NORMAL fait afficher CHR$( . + affiche HPLOT <: affiche PEEK( >: affiche POKE B: affiche BRUN E: affiche HOME : POKE 33,28 LIST = : envoie HGR K: affiche POKE —16368,0 M: affiche MID$( P:: affiche PRINT S: affiche SAVE U x [: : affiche & PRINT USNG > : affiche & XCIRCLE = affiche & PLAY CIRCLE & CIRCLE = X.Y.R Trace un cercle de rayon R et de centre de coordonnées X et Y. Les points en dehors de lécran sont ignorés. La valeur de R doit étre ab- solument positive Auteur - Dominique Bernardi - Pom’s 12 XCIRCLE & XCIRCLE = X,Y,R Comme preécedemment, mais le cer- cle est rempli avec la couleur cou- rante. Le tracé de points en dehors de l’écran donne un résultat bizarre... Hard-Copy & HARDCOPY Recopie l'écran texte sur imprimante. Les caractéres en INVERSE et FLASH sont recodés. La routine ne fonctionne toutefois _correctement que sur une Epson équipée d'une in- terface Epson. PLOT AT & PLOT exp AT X,Y Envoie sur l’écran texte le caractére dont le code-écran est donné par “exp”, et ce A la position X-Y (X de 0439 et Y de 0 23). HGR PRINT & HGR PRINT Connecte la routine de sortie de ca- ractéres HGR qui permet d’écrire en page HGR avec des caractéres gra- phiques comme on écrit en page TEXT. Il faut utiliser une table de 96 caractéres graphiques (une table de Haifa, par exemple) dont l'adresse de début doit étre placée en 206-207 (ce qui permet de placer la table elle- méme n’importe ot en RAM). La table étant chargée, il suffit de faire HGR ou HGR2 aprés & HGR PRINT pour écrire en graphique, sans perdre pour autant “le contact” avec le moniteur et l'Applesoft : les commandes sont toujours interpré tées et vous pouvez, si vous le dési- rez, programmer en Gothique ou en Hébreu... NORMAL PRINT & NORMAL PRINT Déconnecte HGR PRINT. TYPE & TYPE exp Définit la facon dont les octets sont envoyés vers la page graphique. Si on désigne par T un octet de la table de caractéres et par E l'octet de l'écran qui se trouve a la position ot Ton va écrire T. les différentes va- leurs possibles pour “exp” corres pondent a 0: affiche T 1: affiche T ORA E (DRAW) 2: affiche T AND E 3> affiche T FOR F (XDRAW) 4: laisse E (pas d’affichage) SCROLL & SCROLL expl.exp2 Scrolling HGR dans les limites de la fenétre. “exp1" détermine la direc- Pom’s n° 14 tion et “exp2” le code des octets qui vont combler le vide. Les valeurs possibles pour "exp1” sont : 1: gauche 2° droite 3: bas 4: haut HOME & HOME Efface la page HGR courante dans les limites de la fenétre et positionne le curseur en haut 4 gauche. Définition de caractéres graphiques & DEF CHR$ (X) # expl. exp2 exp8 Redéfinit le caractére dont le code ASCII est X (65 pour "A", par exem- ple) avec, dans I'ordre, les valeurs “expl” ... “exp8”. Il est possible de donner moins de 8 valeurs (le carac- lere ne sera alors pas entiérement défini) ou plus de & (les caractéres suivants dans la table seront alors également modifiés). Cette commande est A utiliser dans le mode HGR PRINT et les nouveaux caractéres seront directement implan- tés dans la table courante USER & USER Exécute un “JMP $300” (CALL 768) et permet a l'utilisateur ne pos sédant pas d’assernbleur d’ajouter des commandes a ICARE en implan- tant directement un code objet a par- tir de l'adresse $300. POKE & POKE adresse,exp Permet de POKEr une adresse sur deux octets. Par exemple, & POKE 206,16384 met en 206-207 I'adresse de début d'une table de caractéres graphiques située en $4000 (16384 en décimal). PEEK & PEEK Revectorise la fonction USR vers une routine permettant de lire un PEEK sur deux octets. Par exemple, “PRINT USR(206)” aprés initialisa- tion par & PEEK permet de connai- tre l'adresse de la table de caractéres graphiques courante. Utilisation de la routine S.H.LAM & EXEC * “commande moniteur™ Permet de faire exécuter des instruc- tions moniteur a partr de I'Applesoft, et par le biais de la routine S.H.LAM, plus facilement que pat lecture de DATA, suivie de POKEs et d'un CALL —144. Par exemple, & EXEC *"300<8000. Pom's n° 14 8040M” provoquera un MOVE de la portion de mémoire comprise entre les adresses $8000 et $8040 a Tadresse $300. Utilisation de ICARE Pour initialiser ICARE, il suffit de faire un BRUN du code objet, ou de charger ce dernier en memoire et de faire "CALL 32768”. Aprés initialisa- tion du vecteur ampersand et de divers registres, la main vous est ren- due au niveau de l'Applesoft en mode direct. ICARE se charge @ par- tir de l'adresse $8000 et place lui- méme le HIMEM en dessous de cette valeur. est réservé a l'implantation éven- tuelle du code de la routine de SUPER PRINT. © De $86FD a $886D prendre tel quel. © Le trou entre $886E et $8C74 est réservé A l'implantation du code de la TORTUE. Une partie de ce code doit toutefois étre obligatoire- ment entrée en machine car elle est utilisée par d'autres instructions de ICARE. Le code correspondant est a placer aux adresses $8AN1 A 8AE3. Ces adresses sont identi- ques a celles qu’occuperait la rou- tine concemée si l'ensemble du code de la TORTUE était implanté dans ICARE. code A re- Compte tenu de ses dimensions, il n'est pas possible de lister dans la revue J'intégralité du programme source (réalisé en assembleur BIG MAC - MERLIN, version 64K). Vous trouverez toutefois ci-aprés la liste de deux routines importantes dont je pense pouvoir affirmer le ca- ractére original, HGR PRINT et la routine de touches de fonction. Sur la disquette de ce numéro de Pom's, ces deux routines se trouvent dans le fichier source ICARE Il. Le tronc-commun de I'assemblage, qui contient la définition des étiquet- tes generales et appelle les deux autres parties du source, est égale- ment listé. Il se nomme ICARE 3.1.S sur la disquette. En ce qui concerne le code-objet, Yensemble de la récapitulation vous est donnée, a l'exception des routi- nes déja_publiées dans Pom’s (SUPER PRINT de Denis Sureau et TORTUE de Jacques Duma). Comme il se divise en plusieurs blocs, quelques précisions peuvent étre utiles 4 sa bonne exploitation, si vous souhaitez le rentrer en machine 4 la main © De $8000 a $8645: code A re- prendre tel quel. e Le “trou” entre $8646 et $86FC © De $8C75 4 $90D2: code a re- prendre tel quel. e Le trou entre $90D3 et $9252 correspond 4 une table utilisée par ICARE; la valeur initiale des adres- ses de cette table n’a pas d'impor- tance et vous pouvez donc sauter directement 4 la suite du code. © De $9253 a $94F5: code a re- prendre tel quel. Implantation de SUPER PRINT Il suffit de mettre en mémoire a partir de l'adresse $8646 les codes corres- pondant aux lignes 55 a4 181 du pro- gramme source publié dans Pom's 9 (SUPER PRINT est relogeable) Implantation de la TORTUE Le programme original a été publié dans le Pom’s 6 et dans le Recueil 2. Il faut vous y reporter et lui apporter les adaptations suivantes © Remplacer la dernidre _ partie "Suite de linstruction &” pat le rogramme “Suite instructions” isté ci-aprés © Supprimer les lignes 65 a 90 du source original © Mettre "ORG $886E” et assem- bler le nouveau source ainsi cons- tue. 27 MMM Le code objet résultant de ces adap- tations doit ensuite étre placé aux adresses $886E a $8C74. Les fichiers ICARE sur la disquette Pom’s Fichiers Source — ICARE 3.1.5 : tronc commun (voir listing), appelle ICARE I et ICARE Il. — ICARE I: regroupe toutes les rou- tines autres que HGR PRINT et les touches de fonction, Ce fichier contient des instructions “DS” pour réserver la place de SUPER PRINT et TORTUE lors de assemblage. Vous pouvez bien sar remplacer cela le les sources de ces deux routines : lignes 55 a 181 du source original pour SUPER PRINT, et a partir de la ligne 91 pour TORTUE (avec toute fois la modification déja_ signalée pour la derniére partie “Suite instruc- tions”). Si vous désirez effectivement remet- tre ces deux sources. veillez cepen- dant & redonner aux étiquettes utili sées dans les originaux les noms des 6tiquettes générales définies_ dans ICARE 3.1 lorsque ces noms diffe- rent. ICARE Il: reprend HGR PRINT et les touches de fonction. Pour assembler ICARE avec BIG MAC version 64K, les étapes sont les suivantes : — L)oad de ICARE 3.1 — Une fois dans I’éditeur/assembleur, tapez ASM et répondez "N” a la question "UPDATE SOURCE — L’assembleur chargera a partir de la disquette les fichiers TEXT ICARE 1 et ICARE I en fonction de ses be- soins. L’assemblage complet dure 4 45 minutes. Fichier Objet ICARE 3.1 correspond a !'assem- blage des trois fichiers source et au code listé dans la revue (les "trous” sont blen sr occupés, mais ne contiennent pas de codes significa- tifs). Pour rajouter SUPER PRINT et TORTUE a ICARE, vous pouvez donc, soit remettre directement les codes correspondant dans le code abiet, soit remettre les fichiers sour- ces adaptés de ces deux routines dans le source de ICARE (voir ci- dessus) et ré-assembler le tout Le programme de démonstration également listé ici vous donnera une vue synthétique de l'utilisation de ICARE (il doit étre lancé aprés initia- lisation du systéme). Pour l'exploiter dans la version réduite. vous devrez supprimer les appels a la Tortue (& DO[) et a SUPER PRINT. En parti- culier, vous pouvez remplacer la ligne 12 par "12 HGR2”, enlever tous les autres "& DO[” et rajouter une ligne “280 END”. Le code POM'S.CHARSET correspond au contenu d'une table de caractéres graphiques utiliseée dans le pro- gramme de démonstration et que vous pouvez prendre comme base, par exemple, pour définir d'autres caractéres par DEF CHR$. Programme DEMO ICARE 70 & POKE 206,30720: VTAB 12 72 AS = " ICARE - Amper-interpreteur App S TEXT : HOME lesoft": GOSUB 500 8 HIMEM: 30719 75 & TYPE = 3: FOR I = 1 TO 10: VTAB 12 9 LOMEM: 24577 : HTAB PRINT “ 10 DS = CHRS (4): PRINT DS"BLOADCHARSET »437800": PRINT DS"“BLOADPON’S.CHA 96,255: NEXT RSET ,AS7BOO" 77 = & TYPE = 12 & DO'IIS: & DO*I25 80 AS =" eueeeeee Par Pascal CANTOT 15 & POKE 206,31488 =: GOSUB S00 17 & HGR PRINT 82 AS =" #wunenne PROGRAMME DE DEMON 18 & TYPE = 0 STRATION": GOSUB 500 20 FOR I=17012: & PRINT “ICARE 84 & WAIT 20: & NOISEO,O: & HOME : PR «AT 45,2 INT “ Ce court programme va vou 25 & PLAYI * 10,32 S donner un apercu des possibili 27 & WAIT 2 tes d’ICARE..." 30 & PRINT " “ AT 15,1: NEXT 86 & WAIT 20 35 \VTAB 13: HTAB 15: PRINT “I C A RE“: 100 POKE 34,0: POKE 35,24: POKE 32,0: P PRINT : HCOLOR= 3 OKE 33,40 37 HPLOT 92,92 TO 172,92 TO 172,108 TO 105 & DO*I3§: HCOLOR= 3: VTAB 24: & PO 92,108 TO 92,92 KE 206,31488: HTAB 12: PRINT "CIR 38 HPLOT 93,93 TO 171,93 TO 171,107 TO CLE et XCIRCLE" 93,107 TO 93,93 108 FOR J = 3 TO 4: HCOLOR= J 40 & DO*P116,100,0;B35 110 X = 5: FOR I = 3 TO 57 STEP 3: & CIR 45 & WAIT 10; & HINV: & NOISEO,O: & HI CLE = X,96,1:X = X + I / 3: NEXT NV 115° & WAIT 10: NEXT 46 FOR I = 3 TO 4: HCOLOR= I: FOR J = 4 120 POKE 35,22: & WAIT 10: & HOME 5 TO 90 STEP 5: & CIRCLE = 132,10 125 I = 50; FOR J = 7 TO 0 STEP - i: HC 0,J: & NOISESO,SO: NEXT : NEXT QLOR= J: & XCIRCLE = 140,90,1:I = SO & WAIT 5S: FOR I = 1 TO S: & SCROLL4 Io* .75: NEXT 20 127 & WAIT 10 Sl & PLAY64,64 130 & XCIRCLE = 140,90,51: HCOLOR= 3 52 NEXT 132 & XCIRCLE 140,90,50: HCOLOR= 0; & 53. & WAIT S XCIRCLE 155,90,40 SS & BKGND171: & PRINT “ = 135 POKE 35,24: & WAIT 10 AT 14,8: & TYPE = 3: FOR I = 1 TO 141 & WAIT 1 8: & PRINT “I C A RE” AT 15,8: 142 & PLAY128,64;108,64;115,64;115,64;1 & PLAY32,64; NEXT 28,0 60 & TYPE = 0 150 & DO°13;B3§ 65 POKE 34,10: POKE 35,13: POKE 32,1: P 155 VTAB 24: HTAB 10: PRINT “TORTUE AMP OKE 33,38: & HOME -gseenErs _ FS ee 28 HOME : POKE 35,22 Pom’s n° 14 i158 160 162 163 165 169 170 172 173 175 180 184 185 130 195 197 200 210 212 215 220 230 232 235 240 242 244 250 255 260 270 297 300 30S 307 310 312 315 320 325 330 335, FOR K = 35 TO 20 STEP - 15 FOR I 1 TO 30; FOR J = 1706: & DO*AK;T60S: NEXT : & DO'T12§: NEX T NEXT & MOVE8192,16383 TO 16384 & WAIT 20;I = FRE (0): FORI=1 TO 31: & HINV: & BELL20: NEXT T = FRE (0):T = 0 & WAIT 10; FOR I = 1 TO 700: POKE - 16299,0:T = T + T * T: POKE - 16300, = 7 + T * Tz NEXT & TYPE = VTAB 24: HTAB 10: # SCROLLINGS 3s 0,64: HTAB 10: PRINT “ INGS “;: POKE 230,32 & TYPE = 0 & HINV: FOR I = 1 TO 25: & SCROLL2, 255: & SCROLL3,255: & PLAY16,16: NEXT POKE - 16299,0: POKE 230,64: & IT 10 J = 20 FOR I = 1 TO 20: POKE 32,0: POKE 33 yJi & SCROLL1,0: POKE 32,20: POKE 33,20: & SCROLL2,0: & PLAY16,16: 8:3 + Ls: NEXT POKE 32,0: POKE 33,40: POKE 34,0: P OKE 35,24: HOME & NORMAL PRINT PRINT POKE 23 SCROLL WA VTAB 8 INVERSE : & RPT PRINT “+++++",8; VT AB 18: & RPT PRINT “+++++",8: NOR MAL : FOR I = 8 T0 17: & PLOT 43 AT O,I: & PLOT 43 AT 39,1: NEXT & RESTORE 9000 FOR I = 9 TO 15: READ AS: FOR J = 1 TO LEN (AS): IF VAL ( MIDS (AS oJ,1)) THEN & PLOT 32 AT J + 5, i NEXT : NEXT POKE - 16300,0: POKE - 16303,0 FOR I = 1 TO 3: & RESTORE 9100 & WAIT S FOR J = 1 TO 69: READ N,D D=D* 1.5: IF D > 255 THEN D = 0 IF I = 2 THEN N = Nw 175 IF I = 1. THEN N = N # 1.25 & PLAYN,D FOR P = 1 TO 40: NEXT NEXT NEXT & HGR PRINT : & POKE 206,30720 & DO*I3§: HCOLOR= 3: HPLOT 0,0 TO 2 79,0 TO 279,184 TO 0,184 TO 0,0 HPLOT 6,7 TO 273,7 TO 273,177 TO 6, 177 TO 6,7 & TYPE = 1: FOR J = 1 TO 2 FOR I = 1 TO 40: & PRINT “+" AT I, 1; & PRINT "+" AT I,23: NEXT : F OR IT = 2 TO 22: & PRINT “+" AT 12 I: & PRINT AT 40,1; NEXT & WAIT S & TYPE = 0: INVERSE : NEXT NORMAL I = FRE (0) POKE 32,1: POKE 33,38: POKE 34,1: P OKE 35,22 & POKE 206,21488: RE” AT 15,3: & & PRINT "ICA POKE 206,30720 Pom's n° 14 340 341 342 345 350 355, 360 365 370 375 377 400 405 407 410 420 430 S00 505 Sio 312 530 540 9000 3002 9004 9006 9008 9010 9012 9100 9110 9120 9130 9140 9150 9160 VTAB 4: PRINT : & SUPER PRINT ; Ceci n’etait qu’

Showing the first 100000 of 283409 characters.

mp.ls