Skip to main content

magazine poms18

  • PublicationApple Periodicals
  • Pages80
  • Sourcemagazine_poms18.pdf
← Magazines magazine poms18
/ 80
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
Text content (OCR)
eH M2366-18-40 F La revue francophone des utilisateurs de PApple Disquette mixte DOS/ProDOS Gestion de fenétres Aldo Reset a la parole... Hard Copy de la page HGR étendue’ Rendez le DOS transparent Cahier Macintosh if een Fs esis ! NUMERO 18 © PRIX 40 F ISSN : 0294-6068 PRECISION ': LES DISQUES SOUPLES XIDE. UNE NOUVELLE GAMME DE DISQUETTES 8” ET 5”1/4 SPECIALEMENT DEVELOPPEE POUR LES APPLICATIONS HAUTE DENSITE UN NIVEAU_DE CERTIFICATION ELEVE (65%) r RESEAU DE DISTRIBUTION REGIONAL EN COURS DE CONSTITUTION XGDEX : 537 RUE HELENE BOUCHER - ZI 78530 BUC. TEL. : (3) 956.22.23 MAI-JUIN 1985, Sommaire Page Langage* Matériel Editorial par Hervé Thiriez 5 Disquette mixte DOS/ProDOS par Francois Sermier 7 BA || +, He, Ue Saisie de variables par écran par Gérard Michel 12 BA He, lic Le porte-parole par Olivier Herz 20 Gestion de fenétres par Georges Zwingelstein 24 BA || +, Ve-/lc Graphiques aléatoires par Thierry Han 30 BA | +, He-/e Récupérez les incénes du systéme par Marianne Sutz 35 BA Macintosh Modifications des informations pour le Finder par Jean-Luc Bazanegue 37 BA Macintosh Les curseurs du systéme par Julien Thomas 45 B-A- Macintosh Micro-journal par Hervé Thiriez 46 Les pirates ont la parole... par Pom’s 47 Hard-copy de la page HGR étendue par Marc Debuigne 49 BA lle Les pointeurs, suite... par Olivier Herz 54 P || +, le, e-Mac Tirage au sort ! 55 Rendez le DOS transparent par Jean-Pierre Januel 59 B Me-le Recherche dans un tableau par Patrice Neveu 67 BA | 4. Helle Micro-informations par Jean-Michel Gourévitch 70 Bibliographie par Alexandre Duback 73 Sommaire des précédents numéros 74 Courrier des lecteurs par Olivier Herz 75 Langage : Blasic) A(ssembleur) Pascal) Les annonceurs Adefi : p 61 / Apple : p. 56—57 | Club Apple : p. 25 / Computer 3: p_70 | Controle X : p. 21 / Hello: p. 4 (IEF: p. 6/ List: p 58 MBDC : p. 69 PSI: p. 80 | Télécompo ; . 4 / Version Soft : p. 22—23 / Video Technologie : p. 79 / Xidex : p. 2 Apple, est une marque déposée de la société Apple Computer Inc. Editions MEV - 49, rue Lamartine - 78000 Versailles Directeur de la publication - Hervé Thiriez ES Pom’s n° 18 3 C'est pour pouvoir faire face @ une demande plus de dix fois pure i ce qui avait été prévu iw Hello a décidé de lancer unc nouvelle fabrication de 2.000) cartes Apple-Tell. Avantage de ia grande série : de tres sensibles ns de cout sur le prix des composants LSI et VLSI, permettant de faire chuter de plus de 20% le prix de la carte Apple-Tell. Le modem vedette de votre Apple, {éja couronné Pomme d'Or 1983, 1 suiscité en 1984 trois nouvelles Pornies (Or, récornpensant trois des (tres nombreux) logiciels que ses utilisateurs ont deja dedies 4 Apple-Tell > MICRO-KIDS : serveur monovoie pour les lablissernents d'enseignement => VASA : outil de composition de pages vidéotex incluant un serveur arborescent complet. > TELEBASIC : Basic télécom et vidéotex, destiné & la création de serveurs et de terminaux automatiques. Parmi les autres logiciels créés pour Apple-Tell => TELEPOM : enrichissement du Basic (60) instructions nouvelles) permettant de créer soi-méme les yerveury (Ascii et vidéotex) Jes messageries ou toutes applications télematiques > ASCII EXPRESS : outil général de télécom destiné a permettre impression et le stockage des do recues, incluant un émulateur universel de terminaux > PROTEXT : éditeur-souris. permettant la composition (texte et lessins) de pages Télétel destinées, i des serve > FARR eur Ascii (messagerie Glectronique intégréc incluant panneau d'annonces. unnuaire des abonnés téléchargement. horloge temps réel mats de passe, console opérateur se => DISCOBOLE : copie de disquettes par téphone (Dos, MemDos, Pascal STEXT ; convertisseur rans (Haute Resolution Télétel) SD BAST: module-systirne rermettant La commande du modem Jepuis le Basic. sous ProDos => PROSPECTOR detiquet adresses par consult jutomatique de l'annuaire ronique des choix socioprofessionnels et geographiques. => CALV-KIT consultation automtatisée du centre serveur Calvados’ > PELAGIE : serveur specialise permettant la consultation d'un Apple a partir d'un réseau de minitels, (Deux versions : Basic Dos 4.3 et MemDos.) > YESTORA : serveur a QUATRE ACCES SIMULTANES, disqui 10 Mo, gestion automatique touches de fonctions dit minitel arborescence et me > NESTORI ; si dlés intégrés. rveur monoy (meme caracté Ne Les serveurs sont servis! inal Asc ntegre) incluant un decodeur ‘Tele © 111 logiciel d’émulation de terminal Minitel enrichi des fameeuses trois fonctions de nee est ue tage uotidienne tilisateurs ie Téletel MPRESSION (sur Linyprimante STOCKAGE sur disquertes des pe consultées (formats Telétel ou Ascii AUTOMATISME vgation 1 hal (3 automanque des serveurs (appel ‘ nt La creat téléphonique, orientation Transpad identification, choix: successifs Pah Shenae 1 ? enregistrement des données consultees aces. des données dans ! application ste Wk sf (Ces procédures d interrogation son set , sans aucun ota totale sis af B tion, grace a APPRENTISSAGE df Apple: Tell.) surtout, tine jonction est HELLO ormatique Enfin possible avec les outils de trav vabituels (App Multipkan, PFS. Quic orryptay facturation ede M S010 PARIS Visicale Telex : FLASH 210 500 Editorial Vous étes nombreux, déja plusieurs centaines, 4 avoir répondu au questionnaire publié dans le numéro 17 de Pom’s. La liste des gagnants se trouve en page 55. Les lecteurs qui ne I'ont pas encore rempli peuvent toujours le faire. En effet, une revue comme la nétre est en permanence 4 I'écoute de son lectorat, et ce sondage est le meilleur moyen de connaitre vos besoins. Nous ne Pourrons pas, bien entendu, satisfaire toutes vos requétes, dans la mesure ov certaines d’entre elles sont contradictoires, mais nous tiendrons compte de toutes les remarques. Les résultats détailllés de ce sondage paraitront dans le numéro 19. Nous tenons 4 rendre hommage 4 la revue Golden pour son bon gout: elle apprécie tellement Pom's qu'elle a publié dans un récent numéro, sous la plume de Joél Bernard, la transposition en assembleur du programme "Un analyseur de syntaxe” écrit par Olivier Herz et publié dans Pom's 6, En désassem- blant cette contribution “originale”, on retrouve I'algorithme d’Olivier, avec A peine quelques petites améliorations. Pour ne pas priver les fidéles lecteurs de Pom 's, nous leurs offrirons dans le prochain numéro une version en assernbleur de ce programme par Carlos Sacré ; celle-ci permet, en outre, analyser de facon automatique tous les fichiers Basic d'une disquette. Puisque nous parlons de contributions, rappelons que nous demandons aux auteurs de nous envoyer sur une disquette les fichiers programme et le texte de l'article sous forme de fichier TEXT (de préfé- rence AppleWriter ou fichier ASCII sur Macintosh, mais ce n'est pas tres important). Nous souhaitons que, de facon générale, les articles suivent le plan suivant : objet du programme, mode d'emploi, expli- cations techniques. Nous essayons de généraliser ce plan dans les articles de Pom’s, afin de faciliter au lecteur non spécialiste I'utilisation des merveilleux programmes de votre revue préférée. Dans la méme ligne d'idée, vous verrez avant la fin de l'année un livre regroupant les objets et modes d'emploi de tous les programmes de Pom's depuis le péché de gourmandise d'Adam. Dans ce numéro, vous trouverez, comme 4 I'habitude les rubriques Courrier des Jecteurs, Micro-infor- mations et Bibliographie que nous devons 4 Olivier Herz, Jean-Michel Gourévitch, et Alexandre Duback. Un sommaire des anciens numéros de Pom's vous est proposé, il vous permettra de trouver rapidement l'article qui vous intéresse, afin de completer votre collection. Pom's a rencontré le célébre pirateur de logiciel Aldo Reset... Frangois Sermier nous offre la possibi- lité de sauver, sur la méme disquette, des fichiers DOS 3.3 et ProDOS, tandis que Gérard Michel nous propose une saisie de variables par écran. Olivier Herz teste pour vous le logiciel Porte-Parole et illustre, grace a un programme de Régis Lardennois , l'article sur les pointeurs en Pascal UCSD publié dans le précédent numéro. Les fenétres du Macintosh ont inspiré Georges Zwingelstein ; il a écrit un Programme de gestion de fenétres pour les Apple //. Dans chaque numéro de Pom’s (ou presque), plusieurs Pages sont consacrées au graphisme , ainsi, Thierry Han nous propose des "Graphiques Aléatoires” et Marc Debuigne une hard copy de la page HGR étendue. Jean-Pierre Januel nous offre la possibilité d'utiliser le DOS de facon tout 4 fait transparente, tandis que Patrice Neveu recherche et trouve instantanément des mots ou groupe de mots dans un tableau de chafnes alphanumériques. Dans le Cahier Mac, Marianne Sutz explique comment récupérer les icénes du systéme depuis un programme Basic, tandis que Jean-Luc Bazanequemodifie les informa- tions pour le Finder. Enfin, Julien Thomas analyse les curseurs du systéme. Nous nous retrouverons enfin tous lors du grand deélire d’Apple Expo, du 14 au 16 juin od, outre le stand de Pom’s, vous pourrez apprécier de nombreuses manifestations. Nous recommandons tout parti- culiérement le _débat passionnant que notre collégue Jean-Louis Courleux (France Inter) organise le dimanche aprés-midi, mettant face a face des auteurs de logiciels bestsellers et les plus prestigieux birateurs de logiciel francais. Il est important de préciser que l'entrée 4 Apple Expo est gratuite pour les membres du Club Apple. Les lecteurs de Pom'’s, quant a eux, bénéficieront d'une remise de 5U% sur Présentation du dernier nu- mero. Hervé Thiriez Ont collaboré & ce numéro; Joan Luc Bazanegue — Alexandre Duback — Mare Debuigne — Jean-Michel Gourévitch — Thierry Han =_Dlivier Herz — Jean-Piorre Januel — Régis Lardennois — Gérard Michel — Patrice Neveu — Franyois Sermier — Marianne Sutz — Hervé Thiriez — Julien Thomas — Georges Zuingelstein. Rédacteurs : Alexandre Avraie — Olivier Here — Laurence Tichkowsky, Directeur de la publication, rédacteur en chef : Hervé Thiriez. Dessins ; Laurent Bidot Slége social : Editions MEV —_ 64/70 rue des Chantiers — 78000 Versailles — Tel, - (3) 951.24.43. Publicité : Consultor les Editions MEV, Diffusion N.M.P.P_ : Consulter les Editions MEV. Composition : Telécompo — 13/15 avenue du Petit Parc — 94300 Vincennes — Tél. ; 328.18.63. Impression : Rosay — 47 avenue de Paris — 94300 Vincennes — Tel. - 328.18.63 CC EE Pom’'s n° 18 5 l'Aérospatiale,le club Thomson,etc... DRIVE CHINON > 5 1/4 COMPATIBLE APPLE II +, Ile, IIc NOUVEAU: Cable pour IIc - 1/2 HAUTEUR ~ 40 PISTES (48 T.P.!) ~143 Ko SOUS DOS 3.3 ~ 160 Ko SOUS DOS MODIFIE - DETECTION DE PISTE 0 ET PROTECTION - ECRITURE PAR OPTO-ELECTRONIQUE -MOTEUR A ENTRAINEMENT DIRECT - SYSTEME DE FERMETURE BREVETE LE MEILLEUR RAPPORT QUALITE/PRIX DU MARCHE Floppy simple 1 256 Frs H.T 1 490 Frs T.T.C PROMOTION Floppy double 2 521 Frs H.T 2.990 Frs T.T.C (prix par quantité sur demande) Ce lecteur de disquette a été homologué par la FRAMIF, -HAUTE FIABILITE ~ SILENCIEUX -FAIBLE CONSOMMATION -GARANTIE 1 AN CE MODELE FAIT PARTIE D'UNE GAMME COMPLETE DE LECTEURS 5°1/4 & 31/2 AVEC INTERFACE SASI. Autres modéles disponibles pour tous micros (nous contacter) -Carte 80 colonnes étendue 990T.T.C G| -Disquettes 51/4 11,90 Frs H.T par boite de 10.(13,90 Frs T.T.C) &! _Moniteurs 12” haute résolution vert ou orange 990 Frs T.T.C MO MICRO-DISPO, Tél.: 566 57 17 P.LE.D Tel.: 249 16 50 §8,rueBlomet 75015 PARIS s 42, bd Magenta 75010 PARIS NOM: PRENOM: ADRESSE:.. SOCIETE: Veuillez m’envoyer une documentation sur vos produits. Je suis interessé 4 titre personnel..... DD exces professionnel oO Pom’s n° 18 Disquette mixte ProDOS/DOS 3.3 Principe Vous venez de découvrir ProDOS, particuliérement la grande facilite de Vaccés disque au niveau du bloc a partir du Basic (nous allons y reve- nir...), mais vous aimez bien DOS 3.3 et d’ailleurs beaucoup de vos Programmes style ZAP ne sont pas compatibles ProDOS. Ou encore, vous échangez des dis- quettes de programmes avec des amis et il vous faut toujours 2 dis- quettes différentes (ou 2 faces), une pour DOS 3.3, une pour ProDOS. cela finit par poser des problemes (exemple : disquette Pom’s) Vous aimeriez bien avoir tout cela sur une méme disquette. Et bien cst dorénavant possible avec le jeu de programmes présentés ici. La démarche 4 suivre est (relative- ment) naturelle : © Initialiser une disquette ProDOS a Taide du FILER ® Modifier & la main, a l'aide d'un utilitaire de type ZAP, le Volume Bit Map (équivalent ProDOS du VTOC 3.3), pour limiter la partie utilisée par ProDOS © Créer a la main une piste CATA- LOG 3.3 et un VTOC s‘attribuant la partie non ProDOS. Le programme INITPRO3.3 ci-aprés se charge automatiquement des deux derniéres étapes. Il vous demande seulement a partir de quelle piste vous désirez que commence la partie DOS 3.3 (par défaut, il coupera la disquette en 2, parties égales, au mi- lieu de la piste 17). Il vous demande également si vous désirez raccourcir le Directory ProDOS . comme la dis- quette contient moins de blocs, vous pouvez ramener le Directory de 4 a 2 blocs et récupérer ainsi 1K octets de memoire disque (cela vous laisse tout de méme 25 entrées, dont d'éventuels SubDirectory au CATA- LOG, au lieu de 51). Méme pro- bléme pour la partie DOS 3.3, 02 la taille du CATALOG peut étre fixée de 4 secteurs minimum 4 15 maxi- mum. Remarque importante normale- ment, tronquer le répertoire est sans danger... mais, on peut avoir des sur- prises : ainsi, CONVERT lit d’autorité les 15 secteurs de la piste 17 sans s'occuper de leur chainage ni s’arré- ter 4 la premiére entrée vide, il si- gnale une erreur mais on peut pour- suivre et transférer tous les fichiers que l'on veut. Pire encore, la dis- Pom’'s n° 18 quette “Utilitaires //c’” refuse de re- connaitre un volume ProDOS dont le répertoire est tronque pour l’opé- ration Identifier ‘ Lister Volume, mais accepte tout autre operation (copier fichier, transferer) bizarre ! Notez également qu'elle refuse obstinément de reconnaitre la partie DOS 3.3 d'une disquette mixte; on ne peut donc pas convertir sur la méme dis- quette avec Utilitaires //c. Par contre, cela est parfaitement possible avec CONVERT. La disquette produite par INIT- PRO3.3 est lisible par ProDOS et DOS 3.3. Attention, un méme pro- gramme ou fichier ne peut étre lu que par l'un des deux DOS; il faut toujours recourir 4 CONVERT si l'on veut le faire passer d'une moitié a lautre. Par contre la disquette n'est pas bootable ni en ProDOS ni en DOS 33. Ceci est normal en ProDOS oi il faut la rendre explicite- ment bootable en y_ transférant PRODOS et BASIC.SYSTEM (ou tout autre programme de SYS- TEM). On Lot gaat tena boat DOS 3.3 en copiant DOS 3.3 sur la partie ProDOS et en appelant HELLO.OBJ qui se charge du reste Ceci n'est que le premier pas vers un systéme totalement mixte ot le Basic Applesoft pourra au choix utiliser DOS ou ProDOS permettant de CONVERTir trés élégamment ces programmes Basic ou binaire. Mais n’anticipons pas. Secteurs, Blocs et MLI L’ensemble de l'opération est réalisa- ble car tous les syst@mes d’exploita- tion (y compris CP/M et Pascal UCSD, voir programme INITPAS3.3 dans le prochain numéro) utilisant le DISK Il d'Apple s'appuient sur une méme sectorisation physique de la disquette. Les différences viennent du fait que, pour diverses raisons, la sectorisation logique de la disquette n'est pas identique. c'est ce qu'on appelle l'entrelacement (interleaving). De plus en ProDOS, I’acces disque le plus élémentaire s'effectue non plus secteur par secteur mais par groupe de 2 secteurs appele bloc. A noter que l'idée de piste n'existe plus en ProDOS, Les deux tables suivantes permettent de voir la correspondance entre les différentes notions de sectorisation pour la piste 0. Francois Sermier TABLE 1 emplacement physique 0123456789ABCDE secteur logique DOS 3 3 O7E6D5C4B3A2918 bloc logique ProDOS OA 4A OB 4B 1A 5A 1B 5B 2A 6A 2B 6B 3A 7A 3B 7B TABLE 2 blocs ProDOS 01234567 secteurs DOS 0-F D-C B-A 9-8 7-6 5-4 3-2 1-F Pour les autres pistes, ces tables res tent valables et relient le reste de la division par 8 du numéro de bloc et les secteurs DOS correspondants. Le numéro de piste est le quotient de la division par 8 du numéro de bloc Exemple piste 17, secteur 7: début du bloc numéro 8*17+4 soit 140 réciproquement, bloc 100 = piste numéro (100/8) soit 12, reste 4 donc secteurs 7 et 6. On pounait réaliser la conversion par les routines Basic suivantes ; BLOC --> PISTESECTEUR PISTE = INT (BLOC / 8) RESTE = BLOC -8 * Ge -1 OR S1=15 THEN $1=15-S1 PISTESECTEUR --> BLOC IF S=0 OR S=15 THEN S=15-S RANG = 0: IF S =2 « INT(S/2) THEN RANG = 1 (ou simplement RANG =(S = 2 » INT(S / 2)) BLOC= 8*PISTE +(7—INT(S/2)) L’aceds disque au niveau du bloc est extrémement simple par I'intermé- diaire de MLI (Machine Lanquage In- terface) qui regroupe un ensemble de 26 subroutines ProDOS repérées par un code et appelées de maniére standardisée MLICALL __ montre comment utiliser cet appel MLI (voir listing MLICALL.SCE): l'appel de MLI doit étre suivi du code de la fonction appelée et de l'adresse de la table des paramétres de la fonction Le retour de MLI se fait en sautant ces 3 octets. L'indicateur de retenue (Carry) est mis a 1 s'il s'est produit une erreur: le code de l'erreur est contenu dans l'accumulateur. On peut alors faire un traitement d’er- reur Cependant, il y a beaucoup d'erreurs possibles (29), aussi le plus efficace consiste a utiliser celui qui est fourni par le Basic : JSR BADCALL ($BE8B) analyse les 29 erreurs MLI en 19 erreurs reconnues par I'inter- préteur Basic (BI) et JSK ERROUT ($BE09) entre dans le traitement d'erreur Basic (cette méthode tres simple n'est pas trés documentée). La liste des paramétres dépend de la fonction appelée et est extrémement ah documentée (voir la bibliogra- phie La structure d’un volume ProDOS Un volume ProDOS est donc simple- ment une succession de blocs, nor- malement 280, sur une disquette 35 pistes. Cependant tous ne sont pas disponibles, en effet le début du vo- lume est occupé par 7 blocs spéciaux que nous allons analyser. © blocs 0-1: Programme en langage machine exécuté automatiquement lors du boot. Il cherche sur la disquette un fichier du nom de PRODOS; s’il ne le trouve pas, il affiche UNA- BLE TO LOAD PRODOS et se plante (cas d'une disquette de données), sinon il le charge en $2000 puis saute en $2000. Voir la suite des aventures de ProDOS lors du boot dans Beneath Apple ProDOS per exemple. ® blocs 2-5 Répertoire (directory) du volume. Chacun des 4 blocs est composé des éléments suivants — 2 octets réalisant le chainage amiére des blocs du répertoire. Ils contiennent le numéro du bloc précédent ou 0 s'il n'y a pas de précédent. — 2 octets réalisant le chainage avant numéro du bloc suivant ou 0 si. — 13 groupes de 39 octets. cha- que groupe décrivant un fichier du volume sauf le tout premier des 52 qui décrit le Volume lui-méme. Le bloc 2 qui contient ce groupe crucial pour l'accés au disque a recu le nom de bloc clé ® bloc 6 Image logique de l'occupation de la disquette (Volume Bit Map). A chaque bloc du volume est associé un bit dans ce secteur; si le bloc est utilisé. le bit correspondant est 4 0, s'il est libre, le bit est mis a 1 Le premier octet _décrit l'utilisation des blocs 0 4 7. Pour une dis- quette fraichement initialisée (pas d'autre opération), il doit valoir 1 En effet. on vient de voir que les blocs 0 a 6 sont occupés, d’ot en représentant cet octet sur les 8 bits (voir schéma) Remarquez que seuls les blocs 0 a 2 sont 4 un emplacement rigide, puisque l'accés aux autres se fait par l'intermédiaire du bloc 2 (chai- nage des blocs du répertoire et pointeur sur le bloc VBM). On peut donc déplacer les autres ou méme les supprimer (sauf évidem- ment le VBM !!!). (voir tableau 3) Le programme INIT PRO3.3 Sa structure est trés simple, elle est purement linéaire. On a essaye de rendre aussi lisible que possible les lectures / écritures de blocs et d’ac- cepter les options par defaut par un simple RETURN. Lignes 10 4 70. initialisation et vérifi- cation du volume. On pourrait tester si l'opération de mixtage n'a pas déja été effectuée en testant DOS=1 en ligne 80. Ce morceau appelle un sous programme en 3000 qui assure diverses taches d'intendance : le Bip ProDOS tel qu'il est décrit par Apple (ProDOS Tech. Man.), mise en place de MLICALL (notez que les lignes 3090 a 3110 mettent en évidence la structure d’un appel MLI et permet- tent en modifiant les lignes 3040-3050 de placer le bout de code machine n'importe ow ailleurs que dans !'archi-usée page 3...) Lignes 100 4 130: lecture du bloc clé (premier bloc du Directory). On y trouve successivement @ le nom du volume (reconstitué par le sous programme en 900), © le pointeur vers le Volume Bit Map (VBM, normalement = 6 sauf si l'on a déja tronqué le Di- rectory auquel cas VBM=4). @ le nombre de blocs du volume (NB, normalement = 280 sauf si la disquette a déja eté trafiquée auquel cas la valeur de NB est im- prévisible..), on en déduit le nu- mero de la derniére piste ProDOS (PM, normalement = 34 Remarquez que le volume a modi- fier doit se trouver dans le lecteur 2. on peut le mettre ailleurs mais il faut modifier la valeur de UNIT en ligne 3040. Lignes 140 4 230. vous entrez vos options. Par defaut. le roi Salomon tranche au milieu de la disquette. Si le Directory est déja tronqué, vous navez pas le choix. il le restera. Lignes 240 4 360: mise a jour du Volume Bit Map. Si l'on rajoute de la place ProDOS sur une disquette déja mixte. on libére les blocs correspon dants (il se peut que lon perde des fichiers DOS 3.3)(ligne 260). En 270-280. on verifie que la place consacrée au DOS 3.3 (cest-a-dire i 8 les pistes de P1 a P2 plus la piste ré- pertoire) n'est pas déja occupée par du ProDOS. Le sous-programme en 800 examine l'occupation de chaque piste par ProDOS; a la premiere qu'il trouve non vide, il vous le signale et vous laisse la possibilite de ne tou- cher a rien. Si vous persistez, en 840, on marque la piste comme oc- cupée. C'est indispensable, bien sir pour la piste 17, mais aussi pour les pistes situées dans la partie DOS, car leurs numéros de blocs dépassent la valeur maximale prévue dans le bloc clé du volume et si MLI y trouve un octet non nul (c'est-a-dire un bloc libre), il considére que le Volume Bit Map a été détérioré d’od erreur, tra- duite par BI en une inexplicable /O ERROR. Le test de la ligne 830, autorise a tenter l'expérience sur une disquette contenant déja des fichiers. Il n'y a aucune difficulté si aucun bloc n'est occupé aprés le bloc numéro 135. Mais si des fichiers existaient sur la partie détruite, ils seront détruits phy- siquement sur la disquette, mais pas dans le répertoire (il faudrait pour cela analyser lintéaralité du réper- toire et des listes de blocs des fi- chiers). De plus, si on essaie malgré tout d'y accéder, y compris pour les DELETEr, on provoquera une I/O ERROR, car le driver devra aller lire un bloc situé au-dela de son demier bloc. Il vaut mieux éviter de poursui- vre (option par défaut...). S'il faut tronquer le Directory, on libére 2 blocs en piste 0 (si ce n'est pas déja fait... ligne 290) et on réécrit VBM a son nouvel emplacement. Lignes 310 4 360: mise a jour du bloc clé, cest-a-dire du nombre de blocs. du pointeur sur VBM: et mise @ jour du chainage entre blocs du Di- rectory (ligne 360 si nécessaire) Lignes 500 a fin: écriture du Direc- tory 3.3. VIOC en $11/0. Catalog de $11/F a $11/1 au plus. On véri fiera que, quelle que soit la valeur de NSC<4 le programme créera un mi- nimum de 4 secteurs. Booter ProDOS et DOS 3.3 La disquette produite n'est qu'une disquette de données. elle ne peut hooter sous aucun systéme Booter en ProDOS est trés simple. il suffit_ de transferer sur la partie ProDOS les __ fichiers. ProDOS. BASIC.SYSTEM et. si l'on veut, un programme STARTUP 4 laide du FILER. On peut réaliser cela dés I'ini- tialisation de la disquette, puisque la transformation conserve les premiers blocs du volume. Ceci permet de di- minuer le nombre de manipulations en ne recourant quune fois au FILER Pom’s n° 18 Booter en DOS 3.3 est bien sir impossible stricto sensu, mais on peut le simuler. Pour cela, il est né- cessaire d’avoir un fichier ProDOS contenant l'image du DOS 3.3, Si cela est aisé 4 l'écriture, on congoit aiseément que cela |’est moins 4 la re- lecture. Il faut donc le transférer 4 un autre emplacement mémoire; d’ou les opérations suivantes © Booter une disquette DOS 33 normale, @ CALL-151 © 3000<9D00.BFFFM DOS) ® 3D0G (ou CTRL—C pour revenir en Basic) BSAVE DOS 3.3,A$3000,L$2300 (sur la disquette DOS 3.3) Employer 'utilitaire CONVERT pour transférer DOS 3.3 sur la dis- quette ProDOS © Faire les opérations inverses sous ProDOS n'est pas possible directe- ment (la machine se plante car on n'entre 4 aucun moment dans le DOS 3.3 et la page 3 ($3D0 a 33FF) n'est pas en place. Il faut (déplace le utiliser le petit utilitaire HELLO.OBJ (a implanter sur la partie ProDOS). Sous ProDOS : BLOAD DOS 3.3 ¢ Puis BRUN HELLO.OBJ et nous y sommes ! Voyons le programme HELI.0 OBJ — de $300 4 $317: retransfert du DOS 4 sa position initiale en $9D00. Ces lignes sont eéquivalentes a la commande moniteur *9D00<3000.5300M — en $318 et $31A : on suppnme le mode TRACE mis discrétement par ProDOS pour ses besoins internes — $31C a $325: on implante la chaine de caractéres HELLO dans le tampon contenant les paramétres des commandes DOS. — $327 et fin : on rentre a froid dans le DOS (DOS coldstart), aprés lui avoir fait croire que la derniere commande exécutée (en $AA5F) par lui était INIT ce qui est son “état nor- mal lorsqu’il vient d'une disquette normalement initialisée Ayant vérifié la chose. le démarrage a froid du DOS met en place les vecteurs de la page 3 et cherche a exécuter un pro- gramme du nom de HELLO (pro- gramme situé évidemment sur la par- tie DOS 3.3 de la disquette). S'il n'y a pas de HELLO, on obtient le clas- sique FILE NOT FOUND, mais on est quand méme en DOS 3.3. On pourra trouver un exemple de boot DOS 3.3 dans le court pro gramme (ProDOS) HELLO joint Bibliographie Pour la description des formats des secteurs (respectivement blocs) des Pom’s n°’ 18 Source Toolkit Programme MLICALL.SCE SOURCE FILE: MLICALL.SCE 0000: 1 LST NOA 0000; 2 Hesse 0000: 3% Routine d’appel de MLI & partir du BASIC 0000: 4 23H ———— NEXT OBJECT FILE NAME IS MLICALL.SCE.0BJ0 0300: 5 ORG $300 0300: ét 0080; 7 UIT EQU $80 0081: SB ECRIT EQU $81 0300; 94 0003; 10 LEN EU $3 O0E0: 11 WIT = EQU $£0 (drive 2; pour drive 1:$40) 2000; 12 BUFFER EQU $2000 0002: 13 BLOC §=6EQU $2 BEBB: 14 BADCALL EQU $BEBB BEO?: 15 ERROUT EQU $BE0? BFOO: 16 MLI EQU $BF00 0300: 72 0300:20 00 BF 18 JSR MLI 0303:80 19 CODE = OFB CLIT 0304210 03 20 Ou PARLST 0306:90 06 a BCC OK 0308:20 88 BE = 22 JSR BADCALL 030B:20 09 BE 23 JSR ERROUT 030E:40 24 0K RTS 030F :00 ro} BRK 0310:03 26 PARLST DFB LEN 0311:E0 2 OFB WNIT 0312:00 20 28 Ou BUFFER 0314302 00 2 Ou BLOC #28 SUCCESSFUL ASSEMBLY: NO ERRORS Schéma octet n* Go 1 et les 33 suivants Jjusqu’au n"“34 inclus 0000 0001 PLLA: 129144 bit: 7654 3210 7654 3210 bloc: 0123 4567 89AB CDEF TABLE 3 TABLE 3: Contenu d’un groupe de 39 octets. rang de |’octet description d’un fichier dans le groupe d’un volume (Ler groupe bloc 2) Qo type de stockage, longueur du nom 1-15 nom de I’élément décrit 16 type du fichier I 17-18 bloc clé du fichier 1 inutilisé (8 fois 0) 19-20 nombre de blocs utilisées if 21-23 nombre d’octets dans fichier I 24-27 date-heure de création (cf. DATE ProDOS, POM’S) 28 ae Sion ProOOS utilisé lors de Ia création 2 a7 version ProO0S minimal requis pour ce fichier 30 acces autorisés (lecture, écriture, destruction? 3t f acresse ce chargement longueur des groupes (39) i 32 1 ou longueur denregistrement I nbe groupes par bioc(13) 33-34 Gate cerniere modification I nombre de groupes actifs 39-36 neure Gérniere modification 1 N* bloc VBM (normt 4) 37-38 Dioc clé du repertoire i nombre total de blocs Directories ou du VTOC (respective- Manuel du DOS (Apple) P_Lechner, QS) ment VBM), on se reportera aux ma- — ProDOS Technical Reference Manual —_ Beneath Apple ProDOS (D.Worth et nuels Apple ou a leurs compléments (Apple) P.Lechner, QS) de Quality Software Beneath Apple DOS (D.Worth et rT] Source Toolkit 0315:20 20 FE 28 JSR MOVE 0318: ws Programme HELLO 0318:a2 00 = 30 Lox £0 0310:86 F231 STX TRACE SOURCE FILE: HELLO.SCE O31C:8D 2F 02 32 LOOP LDA _HELLO,X 0000; 1 Lst Noa 031F:90 750A 33 STA NANE,X 0000: PRC 0322;E8 4 INK 0000: 3 ¥ coexistence de D0S3.3 et Pro-D0S 0323:C9 Ad 35 OMP £8A0 0000: Ptictrrrrittitccii itis! EE 36 BNE LOOP ——— NEXT OBJECT FILE NAME 1S HELLO.SCE.08J0 cA a oo 0300; 5 ORG $300 4 0300: is 29 JSR DOSBOOT v03c: 7Al = EQU $30 as i ‘a 003€: 8A2 QU $3E a a 0042: 9 Ad Fou $42 032F:C8 CSCC 42 HELLO ASC ‘HELLO 00F2: 10 TRACE EQU $F2 0332:C0 CF A0 0300: We DEA: 12 DOSBOUT EQU $90EA 445 SUCCESSFUL ASSEMBLY: NO ERRORS ASF: 13 CHD EQU $AASF AA75: 14 NAME = EQU $475 FE2C: 15 MOVE = EQU $FE2C 0300; 16 # 0300: 17 LOX £0 pola £ 18 sx Al Programme DEBUT 0304:86 42 19 STIX A4 0306:CA 20 DEX 100 Dé = CHR (4): PRINT D$;"BLOAD DOS3. 0307386 3E 2 STIX AZ 3° | 0309209 30 2 LOA £930 110 ONERR GOTO 200 a : 120 PRINT D&;"BRUN LLO. _ te Hee = ba “ py 200 IF PEEK (222) = 6 THEN PRINT CHRS / A952 (7): PRINT "Pas de programme HELL | 3 STA A241 ot 26 LOA £990 210 PRINT : PRINT "Vous etes en DOS 3.3° 2? STA Ad4+1 220 NEW Programme INITPRO3.3 100 102 REM 104 REM oe rS==—— Sees Lecture Key-Blo 10 HOME :00 = 256:FF = 00 - 1 ck 20 DEF FN HICX) = INT (X / 00): DEF F 110 POKE CODE,LIT: POKE BLOC,2: CALL MLI N LOOX) =X - 00 * INT (X / 00) 120 R = BU + 4: GOSUB 900:VOL$ = NS + "/* 30 DEF FN WKX) = PEEK (X) + 00 * PEEK 130 VBM = FN WCBU + 39):NB = FN WCBU + (xX + 1) 41):PmM = INT ((NB - 1) 7 8 40 DEF FN PISTE(X) = BU + 56+ 4 * X 140 PRINT : PRINT "Vous allez transforme 50 DIM TY$(2):TY$<(0) = *DOS3.3":TYS(1) = r *;YOLS "ProDOS* :TY$(2) = “Pascal” 150 PRINT * en mixte ProDOS-DOS 3.3" 40 GOSUB 3000: REM Initialisation 160 PRINT : PRINT "1 dre piste DOS 3.3 e 70 #.IF TYPE < > 1 THEN PRINT =: PRINT "C n nl: 17" ;: HTAB 27: INPUT R$:P1 = e n’est pas une disquette ProDOS*: VAL CRS): IF R& = °° THEN Pi = 1 CALL BELL: GOSUB 3120: GOTO 70 ? 10 Pom’'s n° 18 170 VTAB PEEK (37): HTAB 28: PRINT P1 670 POKE BU + 52,P2 + 1: POKE BU + 53,16 180 IF Pi <0 OR Pl > 34 THEN CALL BELL : POKE BU + 55,1 : PRINT "n£ piste hors limite !*": 680 FOR I = Pi TO P2 GOTO 1460 $90 POKE FN PISTE<(I),FF: POKE FN PIS 190 P2 = 34: IF PM > P2 THEN P2 = PM TEST) + 1,FF 200 IF VBM ¢ 6 THEN TR = 1: GOTO 220 700 NEXT 210 PRINT : PRINT "Tronquer le Directory 710 POKE FN PISTE¢17), FN HI<¢OC): POKE ProDOS ?N";: HTAB 31: GET R$: PRI FN PISTEC17) + 1, FN LOCOC) NT R$: IF R$ = "O" THEN TR = 1 720 POKE BLOC,136: CALL MLI 220 PRINT : PRINT “Nbe Secteurs Director 730 END y DOS 3.3: 15*;: HTAB 32: INPUT RS 799 REM o---- Bar de la dernidre chance :NSC = VAL (R$): IF R$ = ** THEN esis NSC = 15 e00 IF ¢ PEEK (BU + P>) = FF) OR OK THEN GOTO 840 230 VTAB PEEK (37): HTAB 33: PRINT NSC 810 :: PRINT +: PRINT : INVERSE +: PRINT "A 237 REM TTENTION*;: NORMAL : CALL BELL: PR 240 REM — Mise 2 Jour Vo} INT " Vous risquez de d(truire de ume-Bi t-Map s donn(es de ";VOL$: PRINT 250 POKE BLOC,VBM: CALL MLI PRINT "Voulez-yous continuer ?N*j: 260 IF PM < Pi THEN FOR P = PM TO Pi — HTAB 24: GET R$: PRINT R$ lr POKE BU + P,FF: NEXT 830 ::0K = 1: IF R& ¢ > "O* THEN END 270 FOR P = P1 TO P2: GOSUB 800: NEXT 640 POKE BU + P,O 280 P = 17: GOSUB 800 850 RETURN 290 IF TR THEN POKE BU, PEEK (BU) + 6 * | 599 REM = eNanup Nom CVBM = 6):UBM = 4 900 L = PEEK (R):ST = INT (L / 16):L = 300 POKE BLOC,VBM: POKE CODE,ECRIT: CALL L- 16% ST MLI 910 N$ = **: IF ST = 15 THEN NS = "/* 309 REM 920 FOR J = 1 TO L:N$ = NS + CHR ¢ PEE 310 REM ---------------- Mise @ Jour Key K (CR + J)): NEXT 320 POKE CODE LIT: POKE BLOC,2: caLL MLI | 720 RETURN 330 POKE BU +'39,VEM Coe 3000 REM - - Bip-Bip Probos ! -- 380 NB Dake bite uaee eu ices LOCNE? = | 3010 BELL = 816: FOR I = 0 TO 21: READ X: , 350 POKE CODE,ECRIT: CALL MLI POKE BELL + I,X: NEXT 360 :: IF TR THEN POKE BLOC, FN WCBU + 2 | 9020 DATA 162,32,149,2,32,168,252,141, >: POKE CODE,LIT: CALL MLI: POKE B 48,192,169,36,32,168,252,141,48,19 U + 2,0: POKE BU + 3,0: POKE CODE, 2,202, 208,237,96 ea ECRIT: CALL MLI 3030 REM Initialisati S500 REM — Directory DOS 3 on Appel MLI rman 3 — 3040 MLI = 768:BUFFER 8192:UNIT 224: REM Drive 1:96 --- Drive 2:224 S02 REM 3050 PA = 784:BLOC = PA + 4 59S (REM srS-S-SsSnseness= Ecriture secte | 3060 CODE = MLI + 3:LIT = 128:ECRIT = 129 urs Directory 3070 FOR I = 0 TO 21: READ X: POKE MLI + Si0 FOR I = 0 TO Sil: POKE BU + I,0: NEX 1,X: NEXT T 3080 DATA 32,0,191,128,16,3,144,6,32,139 520 POKE CODE,ECRIT 5190 ,32,9,190,96,0,3,224,0,32,2,0 S30 POKE BU + 257,17; POKE BU + 258,14: 3090 POKE MLI + 4, FN LO(PA): POKE MLI + POKE BLOC,143: CALL MLI 5, FN HI¢PA) 540 IMIN = 1:0C = O:F = 0 3100 POKE PA,3: POKE PA + 1,UNIT: POKE P SSO IF NS < 15 THEN IMIN = 7 -_ INT ¢<¢NS |, A+ 5,0 - 1) 7 2):0C = 1638: 12288 3110 POKE PA + 2, FN LOCBUFFER): POKE PA 560 1 = 6 TO IMIN STEP - 1 + 3, FN HI(BUFFER? 570 = OC= (Fir = FZ 4 3120 - Identification Dis 580 IN = (I ¢ = IMIN) AND (NSC ¢ 15) 590 1: POKE BU + 1,17: POKE BU + 257,17 * | 3130 PRINT “Disquette --> Drive 2. OK?*; NOT FIN : GET R$: PRINT * OK* 600 :: POKE BU + 2,2 * I: POKE BU + 258,¢ | 3140 POKE BLOC,136: CALL MLI 2 1-1) * NOT FIN 3150 DOS = (¢ PEEK (BU + 3) = 3) 610 ::; POKE BLOC,193 - I: CALL MLI 3160 POKE BLOC,2: CALL MLI 620 NEXT 3170 TYPE = <¢ PEEK (BU + 2) AND NOT PEE 630 REM == Cr€ation VTOC K (BU + 3)) * € NOT PEEK (BU + 4) 640 POKE BU + 2,15: POKE BU + 257,17: PO +1) KE BU + 258,13 3180 RETURN 650 POKE BU + 3,3: POKE BU + 6,FF - 1 660 POKE BU + 39,122: POKE BU + 48,16: P OKE BU + 49,1 EE Pom's n° 18 11 12 Saisie de variables par écran Gérard Michel La saisie de données reste souvent un sujet de préoccupation pour le programmeur, notamment en raison des insuffisances de l'instruction INPUT du Basic. Pom's vous a d’ail- leurs déja proposé, sous des formes plus ou moins completes et complexes, de nombreuses routines de saisie-clavier. Ces différentes routines, en Applesoft ou en assembleur, reposaient généra- lement sur un méme principe de fonctionnement : analyse et contréle des caractéres entrés au clavier, puis affectation au contenu d'une variable a lissue d'une session de frappe, Mmarquée, par exemple, par un RE- TURN. Elles pouvaient également comporter une gestion de la position du curseur a Técran, en fonction des variables 4 saisir, au moyen de HTAB et VTAB, ou de traitements équivalents en lan gage machine. La solution présentée ici procéde d'une autre démarche, articulée en trois étapes © Saisie de caractéres au clavier, avec rejet des éventuels “parasi- tes", caractéres de contréle en particulier. Affichage pur et simple des carac- téres valides a l'écran. © A lissue de la saisie, détectée lors de la frappe de la touche ESC, analyse du contenu de l'écran pour y reconstituer les différentes donnees et les affecter aux varia- les. Ce mode de saisie peut présenter certains avantages, tant pour le pro- grammeur (pas de gestion complexe d'écran 4 définir et 4 réviser en fone tion des “erreurs et omissions”), que pour Iutilisateur (saisie. sous réserve du respect de certaines régles. en nimporte quel endroit libre de lécran. possibilité de se déplacer en permanence sur tout |'écran pour y modifier des données, sans risque pour les variables...) Principes d@ utilisation Il vous faudra tout d’abord définir les libellés devant apparaitre en regard des donnees a fournir. A chaque va- riable doit correspondre obligatoire- ment un libellé, aussi bref soit-il, mais il peut y avoir en revanche plus de libellés que de variables (pour un titre d'écran, par exemple) Ces libellés seront ensuite affiches sur un écran vierge par tous moyens a votre convenance, tels les simples ordres PRINT utilises dans notre pro- gramme illustration. {| daneeestevastaseerasesssseeesy 24 ' Source Big Mac 3% SAISIE ECRAN APPLE //E-C # : : ABER) : Programme IPE2.S 6 HHH cf 8 g ORG $7000 10 CMP e$5D jCARACTERE "§* ? BT Bea SO 12 CHE ESHA j TRAITEMENT CHRGET STANDARD 13 Bcc SI 14 RIS 15 $1 wMP $8E 16 SO LOA £0 RECHERCHE DES LIBELLES A L’ECRAN 17 STA $25 18 $4 JSR $FBCI jCALCUL ADRESSE BASE DE LA LIGNE Vv LY £0 20 $3 LWA ($28),Y 2 OMP fsa0 ;TESPACE* ? 22 BEG $2 OUI --) PAS DE CHANGEMENT 23 OP sor i? 24 BEQ $2 25 CMP £940 jCARACTERE DEJA EN INVERSE ? 26 Bcc $2 j0U] —) PAS DE CHANGEMENT 27 AND £S3F ;TRANSFORNE NORNAL EN INJERSE 28 STA ($28),Y 29 $2 INY x) CPY = £$28 jFIN DE LIGNE ? 31 BNE S3 32 INC $25 jLIGNE SUIVANTE B LOA $25 34 OP £19 sS1 L’ECRAN N’EST PAS TERMINE k=} BNE 54 36 JSR $81 jOCTET SUIVANT § DANS LE PROGRAMME 7 OP £’S’ 38 BE@ $5 Ed GP £’D’ 40 Bed $5 41 96 JSR $F399 42 MP $DEC? s "SYNTAX ERROR* 43 SS STA $6 ;SAUVEGARDE OCTET COMMANDE 44 JSR $81 jOCTET SUIVANT 45 JSR $F709 RECHERCHE DU TABLEAU DE VARIABLES 46 LOA $98 47 STA $7 jSAWEGARDE DE SON ADRESSE 48 LOA $9C 49 STA $8 be ] LOY £0 3 LDA ($7),Y jERE LETTRE DU NON DU TABLEAU 52 BNI jD01T ETRE EN ASCII POSITIF 33 INY 4 LOA ($7),Y — ;26NE LETTRE 55 BPL Sé 3DOIT ETRE EN ASCII NEGATIF %6 LOY £4 0 UA ($7),Y 58 OP fi TABLEAU A 1 SEULE DIMENSION v BNE Sé jSINON —) ERREUR 60 INY Pom’s n° 18 Concerant chaque variable, il fau- dra en outre en préciser © la longueur (si cette derniére n'est Pas pertinente pour vos traite- ments, fixez-la 4 255 caractéres); © le type: 0 pour des données al- phanumériques, 1 pour des don- nées numériques. Les longueurs seront stockées dans un tableau d’entiers & une seule di- mension (baptisons-le TL%), et les types dans un autre tableau de méme nature (soit TT%, par exem- ple). Quant aux données elles- mémes. elles seront affectées dans un tableau de chaines de caractéres (TV$, par exemple). Ces trois tableaux doivent avoir un nombre d’éléments identique et il est préférable de les dimensionner en conséquence avant toute opération de saisie Une fois les différents tableaux défi- nis, les lonqueurs et types chargés (par l'intermédiaire de DATAs ou par tout autre moyen) et les libellés affi- ches, vous disposez de deux instruc- tions pour réaliser la saisie : © ‘ISTV$.TL%, 11% © :|DTV$,TL%,TT% L'instruction :]S... permet une saisie pure et simple : le tableau de varia- bles est considéré comme “vide” et il faut entrer autant de données qu'il y a d'indices dans ce tableau. Linstruction :]D... en revanche, affi- che d'abord le contenu du tableau avant de passer a la phase de saisie Seuls les éléments 4 modifier nécessi- tent alors une nouvelle frappe. Cette instruction peut d’ailleurs servir dans un but de consultation des données, sans altération de leurs valeurs. Le caractére “]” constitue |'identifica- teur de nos ordres de saisie; il est obligatoire et doit toujours étre pré- cede de “:", meme s'il vient en tout début de ligne ou aprés un THEN. Fonctionnement de la saisie Dés qu'elle rencontre un caractére "J", la routine commence par explo- rer |'écran pour y trouver les libellés et les transformer de NORMAL en INVERSE. Les données étant ensuite affichées en NORMAL. cette diffé rence de mode vidéo permettra de les distinguer des libellés. ll est préférable de ne pas mettre d'espaces a l'intérieur des libellés et de les remplacer. par exemple, par des points. Si vous le souhaitez, vous pouvez in diquer a l'écran la longueur maxi- male autorisée pour une donnée en affichant, a la suite du libellé corres- pondant, un nombre égal de caracte res "souligné” (code clavier #$DF) Ces caractéres seront traités comme des espaces par la routine et reste- ront en mode NORMAL Pom's n° 18 61 62 64 67 68 a 72 SB 74 76 7 78 KOO 81 LRRs S BSSVKRSSSL2SSB 100 101 102 K2 103 104 105 106 107 108 109 110 M1 M2 113 114 K3 M5 6 M7 118 19 121 122 JSR S288 2R235 RESAASESAZEZRSES 3 LOA JSR cc STA LOA STA ($7),Y $iA ($2),Y $19 ($98) ,Y ($98) ,Y $14 Ki (998),Y $19 Ki $98 SAUVEGARDE NOMBRE D’ELENENTS iDANS LA DIMENSION 37-48 POINTE SUR LE 1ER ;ELEMENT DU TABLEAU sTESTE *,* AVANT LE jDEUXIEME TABLEAU sSINON --) ERREUR S TRAITEMENT DES TABLEALX jDE "LONGUEURS" ET “TYPES* jTABLEAU ENTIER —) LES DEUX sLETTRES DOIVENT ETRE EN ASCII NEGATIF sSINON --) ERREUR ;TABLEAU A 1 DIMENSION SEULEMENT jLE NOMBRE D’ ELEMENTS DOIT ETRE jLE MEME QUE POUR LE TABLEAU jDE VARIABLES A SAISIR s$EB-SEC POINTERA SUR LE POIDS FAIBLE 3DE LA VALEUR DU PREMIER ELENENT jDU TABLEAU DES LONGUEURS sTESTE *," AVANT LE TABLEAU DES "TYPES" iMENE TRAITEMENT QUE POUR LES LONGUEURS jSED-SEE POINTERA SUR LE POIDS FAIBLE jDE LA PREMIERE VALEUR iDU TABLEAU DES TYPES 13 14 Aprés inversion des libellés, la main est donnée l'utilisateur pour la sai- sie proprement dite. Le curseur est initialement placé en haut a gauche de l’écran; il est possible de le dépla cer en tout point avec les quatre fle- ches de direction. Au niveau des caractéres entrés, la routine procéde aux contréles sui- vants : — Pas d'affichage autorisé sur les li- bellés: seules les parties d'écran en NORMAL (vierges ou non) sont ad- mises pour la saisie / affichage. — Pas de caractéres de contrdle, ni de ”:”, ":” ou guillemets, les virgules étant pour leur part remplacées par des points (probleme des caractéres séparateurs et des guillemets avec les ordres PRINT). Chaque donnée doit se terminer par un RETURN. La frappe de cette tou- che se traduit a l'écran par l'affichage d'une barre oblique (dans le sens in- verse de "/” - code clavier #$DC) En clavier QWERTY, vous pourriez utiliser la touche correspondant & cette barre oblique directement. en lieu et place de RETURN. Il s'agit la d'un simple séparateur de données : il s'affiche mais ne provo- que aucun autre déplacement du curseur que celui occasionné par les autres touches. Il n’est nullement indispensable de saisir les valeurs exactement en re gard des libellés qui leur sont liés, sauf si vous avez besoin de vous pla- cer sur les éventuels "'soulignés” pour étre sr de ne pas dépasser les longueurs prévues. Ainsi, si vous disposez "quelque part” d'un nombre suffisant de posi- tions libres contigiies a I'écran. vous pouvez saisir toutes les données re quises en continu (a la suite les unes des autres), 4 condition de terminer chacune d’elles par un RETURN et de bien taper autant de RETURN que de données attendues (nombre d'éléments dans le tableau des varia- bles). A noter que, comme 4 I'habi- tude, une donnée “vide” se_traduit par la frappe d’un simple RETURN Par exemple : D1 puis RETURN et RETURN donnera "D1" comme valeur pour le premier élément du tableau et "" pour le second (chaine vide). En résumé, des lors que vous respec- tez l'ordre des données {entrée dans Yordre des indices croissants du ta- bleau) et que vous terminez chacune par un RI , vous pouvez les saisir en n'importe quel endroit auto- risé de l'écran, individuellement, en un seul bloc, ou en sous-ensembles continus. La frappe de la touche ESC marque la fin de la phase de saisie et déclen- che l'analyse de I'écran par la rou- tine, qui comporte les contréles sui- vants 123 124 126 S7 160 161 A4 162 163 164 165 166 167 168 169 170 AB 171 172 173 AT 174 175 176 177 178 179 180 181 AIL 182 183 184 oP BEQ ap LOA TAY STA STA ISR LOA STA JSR BIAZES R 8 BRESZSASESRSSSRAISESAIASSZARISRSALATASRLAISS $78! £$27 $24 ALO $24 Al £998 9 £840 All AAl £$8D Al2 £$0C jREPRISE DU TRAITEMENT DES COMNANDES j0N COMMENCE EN HAUT DE L’ECRAN SAUVEGARDE DE L’OCTET SOUS LE CURSEUR sSAISIE AU CLAVIER jY=POSITION HORIZONTALE jX=POSITION VERTICALE jFLECHE VERS LE HAUT ? jVERIFIER SI L’ON PEUT "REMONTER* 3 VTAB SFLECHE VERS LE BAS ? sVERIFIER SI ON PEUT "DESCENDRE* jFLECHE VERS LA DROITE ? sPEUT~ON ALLER A DROITE ? jFLECHE VERS LA GAUCHE ? jPEUT-ON ALLER A GAUCHE ? yes" ? jOUI —) SORTIE POUR ANALYSE DE L’ECRAN jPAS D’ECRITURE SUR LES LIBELLES EN INVERSE jS] "RETURN" --) AFFICHER "¢* (£$0C) Pom's n° 18 — Vérification de la longueur des données par rapport aux longueurs maximales déclarées dans le tableau adéquat; si une donnée “déborde™, un crochet en FLASH est affiché 4 sa suite (il écrase le RETURN) et la rou- tine reprend une phase de saisie pour correction. A noter que tous les espaces compris entre les caractéres d'une méme donnée comptent dans sa longueur, alors que ceux qui se trouvent 4 l’ex- térieur (entre un RETURN et le pre- mier octet de la valeur suivante. par exemple), sont ignorés. — Pour les données de type numéri- que, les c res autorisés sont : les chiffres, ".", "-", "+" et "/". Aucun espace, ni "souligné”, n'est autorisé a l'intérieur d'une valeur numérique Si on trouve un caractére non conforme, il est écrasé par une "*” en FLASH et la saisie reprend — Jamais de données comptant plus de 255 caractéres; dans le cas contraire, un “]” en FLASH est affi- ché a la fin de la donnée trop longue et la saisie reprend dans les mémes conditions que ci-dessus. — Exactement autant de RETURNs que de variables attendues. ni plus, ni moins. Sinon, reprise de la saisie, accompagnée d'un beep Si tous ces contréles sont satisfaits, la routine procéde directement a l'affec- tation des chaines de caractéres au tableau de variables défini en entrée, a partir de l'élément d’indice 0. Les données sont alors utilisables par toutes instructions Basic ou DOS. Particularites du pré-affichage Lors d'une instruction :]D T$... , la routine affiche le contenu des varia- bles de T$ avant de passer 4 la sai- sie. Pour ce faire, elle cherche & loca- liser des libellés en partant de la fin de l'écran (en bas a droite) et s'ar- réte dés quiclle atteint le début de lécran ou qu'elle trouve autant de li- bellés que de données 4 afficher De ce fait, il convient de placer les autres textes éventuels en haut d'écran et de n’afficher ensuite que des libellés “utiles” Les données sont restituees dans Vordre croissant des indices, en re- gard et la suite des libellés corres- pondants. Le RETURN final est auto- matiquement ajouté a la fin des caractéres. Si vous n'avez pas mis assez de textes a l'écran, vous obtiendrez une SYNTAX ERROR lorsque la routine tentera d’afficher les valeurs. La saisie est identique pour :|S et ]D. Pour cette derniére, toutefois, il peut étre bon d’entrer les nouvelles valeurs “sur” les anciennes, en les écrasant, plutét que de les mettre dans une partie vierye de l'écran, et ce afin de ne pas laisser a l'affichage plus de données qu'il n’en faut Pom's n° 18 227 £3 231 232 233 234 236 237 238 240 241 242 243 244 245 246 BISSIERSAZEIESRSTSZSS 3 ($28),Y AA2 £940 Al3 AAl £$A2 PAI2 £$BA AAl2 £388 AAl2 £SAC fALL £SAE AAlL %7 $1D $8 $i1E $25 ‘$FBC1 £0 ($28) ,Y £940 13 £900 E2 £SFF —2 £400 BO £$0F B01 $18 jAFFICHE LE CARACTERE SAISI iPAS DE CARACTERES DE CONTROLE PAS DE * jPAS DE iPAS DE 5 SRENPLACE LES VIRGULES PAR DES POINTS jANALYSE DE L’ECRAN jRECOPIE DE TOUS LES PARAMETRES iDANS DES ZONES DE TRAVAIL sMENORISE LE TYPE DE LA PREMIERE DONNEE SNONBRE DE DONNEES TROUJEES SUR L’ECRAN sCONTROLERA L’USAGE DES ESPACES jCONTROLERA L’USAGE DES *_* jLES CARACTERES INVERSE NE SONT PAS DES DONNEES s"RETURN” A L’ECRAN ? 3255 CARACTERES DEJA LUS POUR UNE NENE DONNEE ? jTESPACE® ? oem i"? jTYPE ALPHANLMERIQUE --) OK sACCEPTE LE + 15 16 Par ailleurs, si vous souhaitez inciter a une saisie initiale en regard des li- bellés et non en continu, vous pou vez initialiser votre tableau de varia- bles en ne lui affectant que des chaines vides et utiliser une instruc- tion :]D plutét que .JS. Le pré-affi- chage de tous les RETUKNs juste aprés les libellés correspondants constituera une contrainte de posi- tionnement pour I utilisateur. Mode d’emploi ll convient de placer les instructions suivantes en téte de votre pro- gramme Basic d'exploitation * BLOAD IPE2: chargement de la routine de saisie en $9000. © BLOAD INTER: mise en place dans CHRGET ($B1) d'un aiguil- lage sur notre routine IPE2, afin de détecter les "]” d'identification éventuels dans le programme Ap- plesoft. Ce second BLOAD ne doit jamais venir avant celui de IPE2, sous peine de résultats im- prévisibles. . Pour revenir au Basic standard, il suffit de charger par un BLOAD le petit fichier baptisé CHRGET. Telle qu'elle vous est présentée ici, cette routine de saisie d'écran est susceptible de nombreux perfection- nements. On peut songer, par exem ple, & un alignement automatique sur le libellé suivant lors de la frappe d'un RETURN, ou a une adaptation pour carte 80 colonnes, a l'emploi de touches de fonction pour détruire ou insérer des caractéres... Si le sujet vous intéresse, 4 vous de jouer. INTER *BA.BD OOBA- 4C 00 90 CHRGET *BA.BE OOBA- C9 3A BO 0A IPE2 #9000.93D5 9000- C? SO FO 08 CF 3A 90 01 9008- 60 4C BE 00 A 00 BS 25 7010- 20 Cl FB AO 00 B1 28 CF 9018- AO FO OC CP OF FO 08 C9 9020- 40 90 04 29 3F 91 28 CA 9028- CO 28 DO E9 ES 25 AS 25 9030- CP 18 DO DC 20 BI 00 CF 7038- 53 FO 0A C? 44 FO 06 20 9040- 99 F3 4C CY DE BD 06 20 9048- BI 00 20 D9 F7 AS 9B 85 247 E011 248 249 250 251 £010 292 253 E01 254 255 80 273 274 275 276 E2 a7 278 249 281 282 EN! 284 ES 286 E50 287 288 290 £6 2 292 293 294 295 296 297 298 E40 300 301 302 303 304 305 E61 306 307 SRSESRSRSRR SES ISS SSR RSSSISRIESARETRIZSSSRSHSSSRSRLESHRSEAE 5 Fd 388 £86a ($28), $FBDD $7 (se F011 $18 B $18 fH SFF F011 SIF $F9 £2 49 E61 $FB $FB ;RIEN EN DESSOUS DU *-* jERREUR DE TYPE —-) AFFICHE UNE * EN FLASH yBEEP | JREPREND LA SAISTE AU DEBUT jAU DESSUS DE ":* --) ERREUR DE TYPE j0N NE PREND PAS LES "ESPACES" HORS DES DONNEES iPAS D’ESPACE A L’INTERIEUR DES NONBRES j0N NE PREND PAS LES "_" HORS DES DONNEES jPAS DE *_* DANS LES NONBRES jSTOCKE LE CARACTERE DANS LE BUFFER DE DONNEES jPASSAGE AU CARACTERE SUIVANT SUR L’ECRAN jL’ANALYSE DE L’ECRAN EST TERNINEE... j$1B-$1C DOIT TOUJOURS ETRE INFERIEUR jA $19-41A PUISQUE L’ON COMPTE LES jDONNEES A L’ECRAN A PARTIR DE 0 3PLUS DE DONNEES QUE DE VARIABLES --) ERREUR jDONNEE TROP LONGUE --) AFFICHE UN § EN FLASH jET REPREND LA SAISIE ;SAUVEGARDE LA VALEUR DE Y jCONTROLE "LONGUEUR* LUE PAR RAPPORT 5A *LONGUEUR MAXI" POUR LA DONNEE jSIGNALE LE DEPASSENENT ET REPREND LA SAISIE iPASSE A LA LONGUEUR DE LA DONNEE SUIVANTE jPASSE AU TYPE DE LA DONNEE SUIVANTE Pom’s n° 18 9050- 705s- 9060- 9068- 9070- 9078- 9080- 7o8s- 90970- 9098- 90A0- 90a8- 9080- 90B8- 90C0- yoce- 9000- 90D8- 90E0- 90E8- 90FO- 9oFs— y100- 9108- 9110- 9118 9120- 9128- 9130- 7138- 9140- 7148- 9150- 9158- 9160- 9168- 7170- 9178- 7180- 9188- 9190- 91 98- 91A0- ?1Ag- 9180- 91B8- 91CO- 91ca- 91D0- 91D8— F1E0- PLES 91FO- 9iFa- 9200- 9208- y210- 9218- 9220- 9228- 9230- 9236- 9240- 9248- 9250- 9258- 9240- 9268- 9270- 9278- 9280- 9298- 9290- 9298- 92A0~ 92A8- 9280~ 9288- 92C0- 92c8- 9200- 9208- 92E0- 92E8- 92F0- 92Fa- 9300- 9308- 9310- Pom’s n° 18 07 cs as As 02 25 83 As FB as —9 FF E7 F9 69 a1 10 a5 oF A2 7F ca 1c 18 6? 4c 03 bo 1B 25 ce AS AS DO do ee ce 08 ar ce 09 310 311 £62 312 313 314 315 316 317 318 319 320 321 323 £8 324 326 327 328 331 £9 332 335 337 339 £7 341 342 E10 343 345 346 347 348 349 350 351 352 354 £100 355 CO 356 358 (2 359 C1 361 362 363 SD 364 365 366 347 368 369 SDS 370 BCC INC LOA STA STA STA SEC LDA STA DEC INY LDA STA INY STA Loy LOA STA INX INC INC uy LDA STA STA cue STA INC aP LOA OP BEQ MP LOA BNE MP LOA STA STA STA LOA STA SR uy £42 $FC (SFB), Y StF $6 ($10),Y £7 SOF ($10), $F £8 $70 $6F ($10),Y $70 ($1D),Y £0 £0 $200,X {87F (S6F),Y $6 £7 &9 $18 E10 sic $iF £0 £400 $18 £$0F SFE $10 £3 $1D £100 $iE E $iC $A C1 Ell $1B $19 C2 $87 £0 $1B sic $6 £$17 $2 SFBC: £$27 sSTOCKE LE TYPE jSAUVEGARDE LONGUEUR REELLE STOCKE DANS LA ZONE DES TABLEAUX jLONGUEUR = 0 --) PAS DE "CHAINE* A STOCKER iMISE A JOUR DU POINTEUR DE FIN DE LA ZONE jDE STOCKAGE DES CHAINES DE CARACTERES sSTOCKE L’ADRESSE DE LA CHAINE AU NIVEAU DE jL’ INDICE CONCERNE DANS LA ZONE DES TABLEAUX j TRANSFERT DE LA CHAINE DANS LA ZONE DE jSTOCKAGE APRES REMISE EN ASCII POSITIF jMISE A JOUR DU NOMBRE DE DONNEES LUES jRENISE A LA VALEUR INITIALE DES PARANETRES jADRESSE DE L’ELEMENT SUIVANT DU TABLEAU 38”IL EN RESTE A SAISIR jPASSAGE AU CARACTERE SUIVANT SUR L’ECRAN yA CE NIVEAU, LE CONPTEUR DE VALEURS LUES JEST MAJORE DE 1 ET DOIT DONC ETRE EGAL jAU NOMBRE DE DONNEES ATTENDUES jREND LA MAIN AU BASIC jREPRISE POUR AFFICHAGE ET SAISIE D’UN TABLEAU jRECHERCHE DES LIBELLES A PARTIR jDU BAS DE L’ECRAN 18 9318- E6 25 84 24 AY OO BS 18 9320- 85 1C AS 07 85 1D AS 08 9328- 85 1E£ AQ 00 A2 00 BI 1D 9330- 85 04 FO 18 C@ Bl 1D 85 9338- CE C8 B1 1D BS CF AO 00 9340- 81 CE 09 80 9D 00 02 ES 9348- E4 06 FO 03 CB 00 Fl AP ¥350- DC ¥O 00 02 ES 06 AZ 00 9358- AS 25 20 Cl FB AG 24 BI 93460- 28 CP 40 90 1E BD 00 02 9348- 91 28 ES E4 04 FO 2A CB 9370- CO 28 DO Fi ES 25 AS 25 9379- CP 18 FO 14 20 C1 FB AO 9380- 00 FO E2 C8 CO 28 00 07 9388- E6 25 AD 25 CF 18 DU O3 9390- 4C 3F 90 AD 00 84 24 FO 9398- Cl Eé 18 DO 02 Eé IC AS 93a0- 1C CS 1A DO O09 AS 18 CS 92A8- 19 DO 03 4C EP 90 CB CO 9380- 28 D0 0D Ed 25 AS 25 CP 9388- 18 FO 0S 20 Ci FB AO 00 y3C0- B1 28 C7 40 BO EB 84 24 93C8- AS 1D 69 03 85 1D 90 02 9300- E46 1E 4C 2A 93 Un bug du Filer de ProDOS 1.0 Si l'on formate (Volume Commands, F) une disquette dont le nom comporte des minuscules, la disquette ne sera pas formatée correctement. ra beau CAT ne fonctionne pas peat ramandes di le ‘Ss, Be allocation, R)ename a volume..., entrainent un "VOLUME NOT FOUND” tandis que Lyist seine: indique l'existence de ce Conclusion. puisque le Filer ne met pas automatiquement le nom de la disquette en majuscules, faites-le vous-méme ! 371 SD4 372 373 374 375 376 377 378 379 413 414 $D21 415 416 417 418 419 Lox (810),Y $6 p80 ($10),Y sce ($10),Y scr £0 (SCE),Y £980 $200,X 46 $080 jLAISSE LES ESPACES ET LES *_" jDRAPEAU POUR SAVOIR SI LON EST DANS UN MEME jLIBELLE OU ST L’ON EN COMMENCE LN NOUVEAU QUAND ON RETROUVE UN ESPACE OU UN *_* APRES sANALYSE D’UN LIBELLE EN INVERSE, IL Y AURA jUNE DONNEE A METTRE EN REGARD DE CE LIBELLE j0N DOIT LOCALISER AUTANT DE LIBELLES QUE jDE DONNEES A AFFICHER jPOURSUITE DE L’ANALYSE DE L’ECRAN sDEPART DE L’AFFICHAGE DES DONNEES jRECUPERE LA LONGUEUR DE LA CHAINE jLONGUEUR = 0 --) PAS DE CHAINE A AFFICHER jRECUPERE L’ADRESSE DE LA CHAINE j TRANSFERT DE LA CHAINE DANS LE BUFFER sAPRES RENISE EN ASCII] NEGATIF Pom's n° 18 433 434 SD80 435 434 437 S08 438 439 SD15 440 441 S013 442 443 444 SD12 445 446 447 448 449 450 451 452 453 44 455 436 457 458 459 S010 460 461 462 463 464 465 444 SD16 467 SD14 468 469 470 S011 471 472 473 S017 474 475 476 477 478 479 480 SDI8 481 486 487 488 489 SDI? 490 491 492 493, 494 Pom’s n° 18 TINY BEXESESERSESRISSARZERSESASRIGTARESAS #s0¢ $200,X $6 £0 $FBCI $24 ($28),Y £$40 sp10 $200,X ($28),Y 86 £0 $24 SD15 $18 $017 siC $iC sia $018 1B $19 9018 $7 £828 $019 $25 $25 £918 $016 ‘$FBC1 £0 ($28),Y £340 $018 $24 $10 £3 jPLACE UN "PSEUDO RETURN" EN FIN DE DONNEE jPROTEGE LES DONNEES EN INVERSE jRECOPIE LA CHAINE SUR L’ECRAN jCHAINE TERMINEE ? sPASSAGE A POSITION SUIVANTE SUR L’ECRAN j0N NE DEVRAIT JANAIS TOUCHER LA FIN DE L’ECRAN sSUITE DE L’AFFICHAGE jSAUTE LES “INVERSE* AVANT DE COMMENCER yA AFFICHER LA CHAINE sFIN DE L’ECRAN SANS FIN D’AFFICHAGE --) ERREUR jMISE A JOUR DU NOMBRE DE CHAINES AFFICHEES sTOUTES LES CHAINES NE SONT PAS ENCORE AFFICHEES j1DEN jSINON --) REPREND UNE SAISIE 30N VEUT PASSER A LA POSITION SUIVANTE A L’ECRAN jJANAIS LE BAS DE L’ECRAN NE DOIT ETRE ATTEINT jIL FAUT RELOCALISER LE LIBELLE SUIVANT jPASSE A L’INDICE SUIVANT DANS LE TABLEAU 19 43 STA $1D 496 BCC S020 497 INC $1E 498 $020 wP S021 REPRISE DE LA PROCEDURE D‘AFFICHAGE "DON.1. PRINT : PRINT "DON.2.:" TEST.IPE2 SPC( 15)*DON.3.:" 1 HIMEM: 9 * 4096 - 1 45 FOR I = 4 TO 9: PRINT : HTAB 10: PRIN S DS = CHRS (4): PRINT D$*BLOAD IPE2*: P T *DON.*1".:*° LEFTS (POS$,LIZC(I)): RINT D$"*BLOAD INTER NEXT : RETURN 10 TEXT : HOME SO HOME :2% = “ECRAN 2°: HTAB 20 - LEN 15 Pos = ° (Z$) / 2: PRINT Z$: FOR I = 0 TO 5 : PRINT : PRINT "DONNEE.*I*.:* LEF aa TS (POS,L2%(1)): NEXT : RETURN 20 DIM D1$¢9),L1%¢ 9), T1%( 979: FOR IT = 0 T 60 HOME : PRINT "ECRAN 2 MODIFIE": O 9: READ Li%(1),TIX%C1): NEXT FOR I = 0 TO S: PRINT +: HTAB 10: P 22 DATA 10,0,5,1,20,0,2,1,2,1,5,0,10,0, RINT “DONNEE.*I*.:* LEFT (PO$,L2% 4,1,6,1,30,0 €1)): NEXT : RETURN 25 DIM 02$(5),L2%4(5) ,T24(5): FOR I = 0 T 100 GOSUB 30:§SD1¢,L1%,T1%: GOSUB 30:5DD O 5S: READ L2%(1),T2%¢1): NEXT : DA 1%,L1%,T1%: GOSUB 40:$0D1$,L1%,T1% TA 10,0,6,1,6,1,20,0,1,1,6,0 : GOSUB 50:8SD2$,L2%,T2%: GOSUB 60 27 GOTO 100 2§DD2$ ,L2%,T2% 30 HOME :2$ = "ECRAN NO 1": HTAB 20 - L 110 HOME =: FOR I = 0 TO 9: PRINT DIS<I); EN (2%) 7 2: PRINT Z$: PRINT NEXT : PRINT : FOR I = 0 TO S: PR 33 FOR I = 0 TO 9: PRINT : PRINT "DONNEE INT D2¢¢I): NEXT : GET 2¢ "IT" .C*TIXZCID*) 22" LEFTS (POS,LIX¢ 120 FOR I = 0 TO 9:Di$<I> = **: NEXT : F I>): NEXT OR I = 0 TO 5:D2$¢(1) = "*: NEXT 35 RETURN 130 GOSUB 30:SDD1$,L1%,T1%: GOSUB 50:8DD 40 HOME :2$ = “ECRAN 1 MODIFIE": HTAB 20 23,L2%,T2%: HOME : FOR I = 0 TO 9: — LEN (2%) 7 2: PRINT 2%: PRINT PRINT D1$(I): NEXT : PRINT : FOR : PRINT : PRINT "DON.O.:" SPCC 15) I = 0 TO S: PRINT 02$¢1): NEXT Le porte-parole Olivier Hee Ediciel (Matra & Hachette) nous pro- pose un synthétiseur de parole qui parle frangais, sous forme d'une carte {a brancher dans un slot, le 4 de pré- férence) et d'une disquette. La carte Elle comporte —_Un chip synthétiseur de parole MEA 8000 permettant la synthése de parole et la génération de sons musi- caux. — Un amplificateur basse fréquence pour amplifier le signal vers un haut- parleur. — Des emplacements libres pour re- cevoir des RAMs ou des PROMs, et les décodeurs pour y acceder. — Une sortie vers le haut-parleur de VApple, que l'on doit alors débran- cher de la carte mere (ce n'est pas trés commode sur un Il+ !) Inconvénients ; le haut-parleur est déconnecté pour les usages classi- ques. mais fait du bruit 4 cause de parasites électriques quand les drives tourent ! On aurait aime une possi- bilité de ‘switcher’ sans avoir 4 ouvrir le capot et rebrancher les fils — Une sortie vers un_haut-parleur externe, de type prise de chaine Fi, que l'on peut relier 4 un amplifi- cateur. J'aurais préfére une petite prise ‘jack’ pour relier 8 un magnéto- phone, mais c'est personnel (mon Apple est 4 2 metres de ma chaine, a vol d’oiseau). Le logiciel de synthése de texte Premiere face de la disquette Malgré de nombreux défauts ergono- miques (par exemple, pas d’éditeur de lignes des phrases entrées), ce programme est un magnifique bébé né de l'union du hardware et du software Il permet de créer des fichiers de messages parlés, que I’on peut inte- grer A des programmes Basic ou as- sembleur, voire au célébre EDI- LOGO. Les deux grandes possibilités sont — Lédition en frangais: on rentre une phrase (avec des codes spéciaux pour les accents...), le programme la traduit en phonémes et peut la pro- noncer, Et cela marche ! En francais intelligi ble et agréable. On peut méme met- tre un point d'interrogation. et |'into- nation changera. De plus, on peut indiquer les groupes verbaux et no- minaux avec des marqueurs spé- 20 ciaux, de fagon a se rapprocher d'une élocution naturelle. Toutefois, ce programme n'a pas la science infuse et commet des erreurs. Que pensez-vous des phrases "Les poules du couvent couvent” et “Nous portions nos portions” ?. C'est pourquoi on peut aussi édi- ter en phoneétque, en indiquant les phonémes. Pour des raisons scientifi- ques, la solution employée ici pour reconstituer la parole est celle rete- nue par le CNET, qui part des cou- ples de phonemes successifs, C'est tellement bon que je I'ai fait parler en anglais, en allemand et . en japonais. Son accent francais est tout simplement délicieux ("Maile teil'lor iz ritch") Mise au point graphique Deuxiéme face de la disquette Ce programme permet de créer des notes de musiques et des effets spé- ciaux sonores en faisant varier l'am- plitude du signal, la fréquence et la largeur des bandes et en visualisant le tout. Il peut créer ses propres fi- chiers de bruits ou bien modifier des messages créés par le synthétiseur de parole a Pom's n° 18 sii aac CX MacBase ¢ Logiciel Professionnel intégré sur Macintosh Puissant et simple comme... Macintosh CX MacBase est un logiciel intégré d'un genre tout a fait nouveau. Vous passez d'une application a une autre, d'un document a un autre avec une surprenante facilité ; par exemple, pour réaliser automatiquement un Feenig a partird’un ichier, éditer du courrier personnalisé, créer des relations ou des échanges entre fichiers. CX MacBase regroupe graphiques, gestion de fichiers, calculs, traitement de textes, édition automatisée de lettres, d’états et détiquettes... Tout cela, en un seul programme puissant et simple comme... Macintosh. Branchez CX MacBase le matin, il vous accompagnera jusqu’au soir ! ‘Apive Compute inc et tencié de a marque Macintosh Cx'Macitase et une marque deposte de Conble X Ensemble et une marque deposte de Contrdle X Il change tout sans tout bouleverser Chaque jour, vous créez, échangez, transmettez des documents. Chaque jour, CX MacBase travaille directement sur les documents professionnels qu'il vous a permis de créer et diillustrer : imprimés, formulaires, rapports d’activités, devis, mémos, etc... Et vous retrouvez sur Macintosh votre cadre naturel de travail. Vous savez tout de suite calculer, classer, retrouver, sélectionner, trier, imprimer, mixer a volonté. HE Controle X Les logiciels a tout imaginer Tour Maine - Montparnasse - 33, avenue du Maine, 75755 Paris Cedex 15 - Tél. : (1) $3898.87 Donnez du tonus a vos documents Communiquez avec votre entourage et valorisez vos perfor- mances profession- nelles en envoyant de superbes états récapitulatifs extraits de vos fichiers ; toutes sortes de docu- CN ments ot cohabi- Ss tent votre logo, des dessins, > tableaux, graphiques, textes, encadrés, etc... CX MacBase est a Vaise dans tous les milieux profes- sionnels et vous permetde développer vos propres applications. CX MacBase répond vraiment a toutes les promesses de Macintosh ! Renseignez-vous vite auprés d'un revendeur agréé ou adressez-nous votre carte de visite pour recevoir une documentation. aa VERSION SOFT, LES FRUITS L’e LOUTIL INDISPENSABLE DU DEVELOPPEUR. Premier assembleur éditeur pleine page, pour APPLE Ile et APPLE Ic. Si vous avez la programmation dans la peau, initiés ou débutants, Procode est le logiciel qu’il vous faut. Il vous permet de développer en un temps record grace a ses fonctions d’éditeur pleine page 80 colonnes. Etudié pour ProDOS 64 k ou 128 k, Procode peut assembler sans accés disque jusqu’a 3 sources en mémoire. Normal, on travaille entre Pros! 142 — SOFT & MICRO — Mai 85 ition frangaise LE PLAISIR DE LA GESTION. Gestionnaire de talent pour le plaisir de rentrer dans ses comptes. \ Budget Familial vous en donne pour votre argent! Il vous permet d’enre- — gistrer tous les mouve- ments de votre compte er bancaire et d’avoir l’ceil sur vos dépenses. aN be Avec lui, plus de problémes de gestion, vous étes sdrd’y trouver votre compte. Méme en ignorant tout de la estion, vous pouvez trés vite devenir un super gestionnaire. Avec le plaisir en plus... LES LOGICIELS VERSION SOFT UTILISENT LE SYSTEME D'EXPLOITATION PRODOS LES MENUS DEROULANTS PERMETTENT D'ACCEDER DIRECTEMENT AUX DIFFERENTES FONCTIONS. D'UNE PASSION de logiciels | EPISTOLE UECRITURE SOURIS. Best-seller incontesté du traitement de texte francais. Partagez le plaisir d’écrire avec Epistole. Modeéle de simplicité et de puissance, ce logiciel est outil idéal pour tous Vos traitements de texte frangais. En un clin d’ceil, Epistole rédige toutes vos lettres, vos rapports et vos mailings — avec le souci en moins. Vous voulez effacer un mot, changer une phrase, déplacer un paragraphe? Rien de plus simple, l’écriture | souris vous laisse les mains libres! . pistole vous offre l’écriture facile. A vous Pimagination! _ aS \ oe eo VERSION CALC LE CALCUL SOURIS. Premier tableur graphique multi-fonctions utilisant la souris. Voici enfin le logiciel adapté a toute votre gestion quotidienne. II suffit d’une simple pression du doigt avec la souris pour comprendre que toutes vos opérations de prévisions, os \ de synthéses ou d’analyses, 32 deviennent alors un jeu d’enfant. Vous souhaitez une représen- h tation graphique? Facile! Ouvrez Re une fenétre, cliquez et faites le plein oS images. De mémoire de logiciel, on n’avait encore jamais vu une telle facilité alliant puissance et rapidité. v o 19, RUE GANNERON 75018 PARIS DEMONSTRATION ET VENTE CHEZ VOTRE CONCESSIONNAIRE AGREE APPLE. Mai 85 — SOFT & MICRO — 143 Gestion de fenétres texte Georges Zwingelstein La mode étant au Macintosh, sa souris et ses fenétres, je n'ai pu m’empécher de succomber a la ten- tation de donner une de ces particu- larités 4 'Apple Il: les fenétres. J'ai choisi de gérer les fenétres en écran texte plutét qu’en haute résolution, car elles ont l'avantage d’occuper moins de place mémoire, d’avoir un temps de réponse acceptable. de ne pas nécessiter une gestion de curseur particuliére, et surtout parce qu’elles servent. le plus souvent. a afficher des menus sur le Macintosh. Ce programme permet a l'aide de Tampersand (&) de créer. d’ouvrir, de fermer et d’échanger a volonté des fenétres, pouvant se superposer les unes aux autres. sans perte d’in- formations. Les commandes Les principales commandes concer- nent: - la création - Fouverture - la fermeture - léchange. La création La syntaxe est la suivante : & C_NF.MD,MG,MH,MB,CH (C pour Créer) avec les conventions suivantes © NF représente le numéro de la fe- nétre (compris entre 1 et 127). MD definit la marge droite. MG définit la marge gauche MH délimite la marge haut. MB délimite la marge bas. CH est le code écran (optionnel) du caractére délimitant les bords de la fenétre, les marges étant données par rapport a ceux-ci Pour obtenir. par exemple. une fené- tre remplissant tout I’écran, il suffit de donner l'ordre & C1.1.40,1.24 (en 40 colonnes) & C1,1,80,1,24 (en 80 colonnes) Ce logiciel fonctionne également en 80 colonnes sur Apple //e. Quelques remarques sont néanmoins nécessai- res sur une utilisation en 80 colon- nes, les commandes d’ouverture et de fermeture de fenétre utilisant les adresses | standard . pour la protéger ($20-$23 ou 32 a 35 en décimal) - les colonnes étant numérotées de 1 4 80, on ne peut protéger une fene- tre qu’entre une colonne impaire (a gauche) et une colonne paire (a droite) - la marge gauche est donc arrondie au premier nombre impair inférieur - la marge droite est, de la méme facon, arrondie au premier nombre pair supérieur Par exemple, pour une fenétre sur les deux colonnes 65 et 66, les commandes suivantes sont équiva- lentes : &C1,65,65.. L’ouverture & O NF (O comme Ouvrir) ou NF représente le numéro de la fe- nétre que l'on désire ouvrir. C'est tout. La fermeture La commande de fermerture est en- core plus simple, puisqu’on ne peut fermer que la fenétre se trouvant au- dessus de toutes les autres & F (F comme Fermer) L’échange Enfin, la commande permettant de faire passer une fenétre au-dessus de toutes les autres est légérement plus compliquée, le numéro NN de la fe- nétre & remonter ne pouvant étre connu de !’ordinateur : & E NF (E comme Echanger) Attention : afin d’améliorer notable- ment la rapidité du transfert, cette commande crée dans le sens décrois- sant, 4 partir de lTadresse $2FF (c'est-4-dire sur un morceau du buf- fer d’entrée), une table des adresses des fenétres concernées par le trans- fert; il y a donc risque de recouvre ment dune commande préalable- ment entrée au clavier, si celle-ci fait sensiblement plus de 255 — 2 « (nombre d'adresses) caractéres. Dois-je vous rappeler, au passage, la commande qu'il ne faut pas oublier sous peine de perdre votre sang froid ? L’initialisation. II s'agit de & I (I comme ???) Cette commande est automatique- ment réalisée lorsqu’on lance le pro- gramme: elle identifie le type de lApple, ainsi que l'activité d'une éventuelle carte 80 colonnes sur Apple //e, crée une pseudo fenétre de numéro 0 juste sous le début du programme. puis efface les variables (CLEAR) et enfin positionne HIMEM sous la premiere fenétre. Le positionnement &P F.MG,MH (P comme Position- ner) permet de déplacer une fenétre; ce qui autorisera une mise en place plus facile des différentes fenétres utilisées dans un programme. NF est comme 4 I'habitude le numéro de la fenétre, MG et MH les nouvelles marges gau- che et haut de la future position de cette méme feneétre. 24 Attention: comme pour |’échange, une table est créée dans le buffer dentrée. J'ai d’autre part activé, pour vous soulager, la touche de tabulation, celle de l'Applesoft ne fonctionnant pas correctement en 80 colonnes, et Jai également repris, en la modifant un peu, la routine de menu proposée par Denis Sureau dans l'article “La programmation facilitée” du Pom’s 5. Ces commandes travaillent a |'inté- tieur de la fenétre, quelle que soit la position de celle-ci. Par exemple, pour positionner le curseur sur la premiere ligne et la premiere colonne de la fenétre, on utilisera - & VTAB 1:& HTAB 1 Ces commandes ne seront pas tou- jours nécessaires, le programme se chargeant de mémoriser et de rappe- ler la position du curseur, lorsque celui-ci change de fenétre Pour appeler la routine de menu, la commande sera : & LET NV.VT,LN,NI(IL) avec les conventions suivantes : © NV = nom d'une variable © VT = tabulation verticale dans la fenétre @ LN = longueur de la barre en in- verse @ NI = nombre d’items ¢ IL = interligne (optionnelle, l'inter- ligne initiale étant de 1). La routine vérifie d'abord que I’en- semble du menu rentre 4 'intérieur de la fenétre, utilise non plus des chiffres mais des lettres a partir de “A” pour la sélection, ce qui autorise un nombre d'items compris entre 1 et 26 et tient compte des fleches ver- ticales de l’'Apple //e. De plus. la barre de sélection n’inverse que les caractéres inversables. J'ai enfin transformé un sous-pro- gramme qui me permettait de dépla- cer HIMEM pour créer une fenétre sans perdre les variables chaines, en une commande - & HIMEM : NNNN ou NNNN représente la nouvelle va- leur non pas de HIMEM, mais du début de la zone libre entre les fené- tres et le programme, vous permet- tant d’y charger vos propres routines (le début du programme se trouve en $8A00 ou 35328 en decimal). Déesirant, de plus, pouvoir récupérer la place d'une fenétre devenue inu- tile, il m’a été nécessaire de rajouter la commande : &D NF (D comme Détruire) avec laquelle on peut détruire la fe- nétre de numéro NF 4 condition que celle-ci soit fermée, ce qui est évident si elle est devenue inutile. Enfin, comme il est beaucoup plus agréable, dans un programme Basic, de n'avoir qu’a charger une fenétre préalablement créée et sauvée sur Pom's n° 18 Symptomes. OU NON OUL NON 1. Je veux connaitre PRODOS sans étre un pro 5. Pianoter des nuits entiéres, c'est planant. Mais du DOS O planer tout seul, c'est frustrant 2. Ami des bétes, je cherche un chat 4 puces pour colorier ma souris en mauve 3. Devenir a l'aise comme Blaise en Pa oo ° Je veux relier mon lave-vaisselle a mon Apple Il. [17] -quelpied! OO 7 Appeler un $.0.S. informatique quand ~ la technique coince, ca dépanne O00 4. Mon baud a7 bits cherche un 8 pour completer 4 sess son protocole X-On X-Off en vue d'une liaison 8. Je veux apprendre a mieux gérer mon bureau durable OW en le jetant par les fenétres de Macintosh JI. ct MOINS : vous étes en pleine 4.8 7 OUL: vous étes cont: on, prenez des mesures serez bien entoure au Club Apple wis 8.2 10 OUL bravo, venez d'urgence cultiver assion au Club Apple Remeéde : REJOIGNEZ LE CLUB APPLE Plein, plein d'avantages vous y attendent une messagerie électronique gratuite ; des stages d’initiation et de perfectionnement animés - un numéro de téléphone pour consulter les ingénieurs pat les “gourous” du Club; Apple 7 jours sur 7 - des voyages organisés en Californie ; \ \ du Club une librairie spéciale Club : in ae ay e journal dur Clu un Apple Check pour bénéficier de conditions de LEicho des Apple; ; crédit préférentielles ; - des conférences, réunions d'information, projections - des rencontres organisées avec d'autres privées et rencontres avec des “pros” ; Applemaniaques. BULLETIN-REPONSE Je desire receoit, sans engagement de ma part, une documentation compléte sur le Cl Apple et votre formulaire dnscription, NOM ADRFSSF — CODE POSTAL Pom's n° 18 Applemania 25 disquette, on disposera des quatre commandes suivantes : &SAVE “NOM".F1 pour sauver la fenétre numéro Fl a la suite de celles précédemment sau- vées dans un fichier d'un type nou- veau. Celui-ci apparait comme hbi- naire dans le catalogue. &LOAD "NOM" F1.N1 pour charger la N1 iéme fenétre du fichier en lui donnant le numéro F1. &STORE "NOM",F1,N1 pour sauver les marges et le contenu de la fenétre F1 A la place de la N1 iéme fenétre du fichier (il faut que les dimensions soient identiques) &RECALL "NOM”.N1,F1 pour effectuer la réciproque de &STORE sans rappeler les marges; "NOM" représente une chaine de caractéres contenant le nom du fi- chier, dans lequel on ne peut sauve- garder plus de 127 fenétres (ce qui est largement suffisant dans la plu- part des cas, surtout qu'il n'est pas possible d’avoir un catalogue des fe- nétres), accompagné si nécessaire des numéros de drive et de slot sui- vant la syntaxe du DOS. Pour SAVE et LOAD © si Nl mest pas précisé, il est pris égal a F1 © si ni Fl, ni N1 sont donnés, alors le programme charge toutes les fe- nétres en leur donnant un numéro croissant (sauve toutes les fenétres Par numéro croissant 4 la suite du fichier) Pour STORE et RECALL : © les valeurs par défaut de F1 et N1 sont N1 = Fl si N1 n'est pas donné, et Nl = Fl = 1 si Fl et Ni sont inexistants. Remarques Chaque fois qu'une fenétre est creee ou chargée. la routine FRE(() est ap- pelée. Les commandes de gestion de fichiers de fenétres ne vérifient pas la fermeture de la fenétre. Il sera donc possible, par exemple, de fusionner des fenétres ou de récupérer un mor- ceau d'une fenétre en ouvrant la nouvelle par dessus puis en la sau- vant avant de la fermer. Il est possible de faire ressortir les fi- chiers de fenétres en POKant dans la table des caractéres des types de fi- chiers. le code voulu 4 l'affichage du catalogue, par exemple POKE 45998, 198 pour leur ddnner le type “F™. Tous les paramétres peuvent étre donnés sous forme d'expression. le programme utilise les routines d'éva- luation de nombre ou chaine de ca- ractéres de I’ Applesoft. Les messages d’erreur Les messages d’erreur utilisés ont ete détournés de leurs significations origi- nelles. — OUT OF MEMORY indique que la place nécessaire a la création d'une fenétre est insuffisante ou que le dé- placement de HIMEM entrainerait un recouvrement soit des variables, soit du programme de gestion des fené- tres. — UNDEF'D STATEMENT signale une opération sur une fenétre inexis- tante. — REDIM’D ARRAY souligne le fait que l'on veut créer ou charger une fenétre dont le numéro a déja ete at- tribué. — OVERFLOW indique une opéra- tion entrainant un dépassement de capacité (ouvrir une fenétre déja ou- verte, en fermer une quand il n’y en a_plus 4 fermer, ou RECALL ou STORE sur des fenétres qui n'ont pas les mémes dimensions) — ILLEGAL QUANTITY sert pour toutes les valeurs interdites : mauvai- ses marges, mauvais numéro de fe- nétre, valeurs impossibles d'un ou des paramétres du menu, destruction d'une fenétre ouverte... Enfin, deux messages du DOS utili- sés par le programme ; — OUT OF DATA signale que le fi- chier a moins de N fenétres, si l'on veut accéder 4 la N ieme fenétre — DISK FULL indique soit une dis- quette pleine, soit un fichier conte- nant 127 fenétres, lorsque l'on veut sauver une fenétre. La structure du programme Pour les utilisateurs de l'assembleur et les autres, voici quelques informa- tions sur la structure du programme. Le programme se charge en $89EE, commence par brancher l'ampersand ($89EE a $89FF), puis saute 4 la routine d'initialisation. Celle-ci, crée juste sous l'adresse contenue en $8A00 — $8A01 (le contenu initial est $8A00), une pre- miére fenétre de numéro 0 corres- pondant a tout l’écran et ne possé- dant pas de buffer. HIMEM pointe alors sur cette fenétre. Lorsqu’une fenétre est créée ou chargée, les chaines ainsi que HIMEM sont déplacées vers le bas grace @ une partie de &HIMEM, pour laisser la place a la nouvelle fe- nétre, qui y est alors copiée. Lorsque le programme cherche une fenétre, il part de celle pointée par HIMEM et remonte jusqu’a la fenétre de numéro 0. Vous pouvez vous libérer de la place pour vos propres routines: soit de maniére temporaire avec &HIMEM (&I replace la fenétre 0 juste sous $8A00), soit de maniére définitive en modifiant l'adresse $8A00 — $8A01 et en réinitialisant. L'interpréteur se termine en $8AOF par un saut a la routine d'erreur de syntaxe du Basic, que vous pouvez donc détourner. Une fenétre est mémorisée sous forme de 2 parties: les données la caractérisant et le buffer qui contient ce qui sera affiché a I’écran. — Les données comprennent : @ le numéro de la fenétre @ le numéro de la fenétre ouverte suivante (nul si c'est la derniére fe- nétre ouverte, c'est-a-dire celle qui est au-dessus des autres). ® les 2 octets de mémorisation des tabulations verticales puis horizon- tales (tabulations dans la fenétre). @ les 4 marges de la fenétre (dans le format qui permet une recopie di- recte dans les mémoires $20-$23), La gestion des fichiers sur disquette utilise quelques routines du DOS pour l'ouverture et la fermeture des Jacques Supernant routine de hasard. moge Trace. doctets. MAX. boucle avec ordre (bon de commande page 78). Max :Le moniteur étendu Ce moniteur auterise un contréle de lexécution des routines en langage machine. * Un mode Trace et Pas 4 Pas trées évoluds et sé@lectifs sont compiétés par un acces direct aux registres du GSO2 (ou BSCOL) |/ est ainsi possible de les initialise- @ 507 g-é ou dlaide de le * Lae gestion des fenétres d'écran simplifie le * Une routine permet ja recherche de suites * Un mini-assembleur tres souple fait partie ge * Une ligne de commande peut devenir une UMP. Les fichiers source sont sur la disquette. Disquette et documentation : 150,00 F TTC franco Appie t+, //e, //c Pom’s n° 18 fichiers puis le File Manager pour gérer le contenu qui est organisé de la maniére suivante : Le premier octet contient le nombre de fenétres dans le fichier. Puis on trouve les fenétres enregistrées de maniére séquentielle (de méme que pour l'organisation en mémoire, un enregistrement contient deux zones la zone des données qui ne comprend que les 4 marges, puis la zone du buffer qui contient le contenu de la fenétre). Je termine enfin, en vous souhaitant plein de petites fenétres ! . N.D.L.R. : Le listing du programme Basic a 6té quelque peu modifié pour les lecteurs n’ayant pas la disquette d’accompagnement 4 leur disposition. La version originale (sur la disquette) charge les fenétres FGEN, FPRE et FPOM'S 14. Programme ESSAI 10 TEXT : HOME 20 PRINT CHRS (4)"BRUN WINDOW" 30 NN = 9:COL = 40: REM METTRE 80 POUR ES SAI EN 80 COLONNES, ET PRINT CHRS( 4)"PR£3" AVANT LA LIGNE 20 100 & \VTAB 10; & HTAB S: PRINT “EXEMPL E D’UTILISATION DES FENETRES* 110 & VUTAB 13: & HTAB 7: PRINT “PATIEN CE, JE CREE DES FENETRES" 200 FOR I = 1 TO NN 210 MG = COL * RND (fi) + 1:MD = COL *® R ND (1) + 1: IF MD — MG ¢ 12 THEN 2 10 220 MH = 24 * RND (1) + 1:MB = 24 * RND <1) + 1: IF MB — MH < 4 THEN 220 230 & CIyMG,MD,MH,MB,256 * RND (1) 240 NEXT I 245 SPEED= 100 250 & C127,1,COL,20,24,32: & 0127: GOSUB 1000 Source Big MAC Programme WINDOW.S 17 IIE 2* * ae PROGRAMME DE GESTION DE * 4a* FENETRES TEXTES * S# * é* PAR G. 2WINGELSTEIN * 2 ® * B73 eer eee ara ae ese ee * 10 LISTING KBD ;DEMANDE AFFICHAGE LI STING 11 ele} LISTING 12 ELSE 13 LST OFF 14 FIN 15 SAVEOBJ KBD ;DEMANDE SAUVEGARDE D U CODE OBJET 16 bo SAVEOBJ 17 OSK WINDOW 18 FIN 19 EXP OFF jIMPRIME S EULEMENT LE CODE MACRO 20 ™ ON 33 BYTES P AR LIGNES 21 22 * SOUS-PROGRAMME DEPENDANT DE LA CA RTE 80 COL. : 23 * VTAB 24 * HTAB 25 * (GETPARAM, GETNEWM, CHKMARGE) 26 * SAVECURS 27 * SCREENIT 28 * INVERT 29? * CALCBAS 30 * APPLEID 31 32 ORG S87EE 33 34 ESSAIECH = 1 jASSEMBLAG Pom’s n° 18 260 & VTAB 3: & HTAB 3: PRINT "OUVERTU RE DES FENETRES*;: GOSUB 1000 300 FOR I = 1 TO NN: & OI 310 & VTAB 3: & HTAB 3: PRINT *FENETRE "313: GOSUB 1000 320 NEXT I 330 & E127: GOSUB 1000: & HTAB 3: PRINT "PUIS ECHANGE DES FENETRES";: GOS UB 1000 400 FOR I = 1 TO NN: & EI: GOSUB 1000: N ExT I 410 & £127: GOSUB 1000: & HTAB 3: PRINT "ENFIN FERMETURE DES FENETRES";: GOSUB 1000: & F: GOSUB 1000 S00 FOR I = 1 TO NN: & F: GOSUB 1000: NE xT I 999 END 1000 FOR J = 1 TO 1000: NEXT J: RETURN — MODIF. ECHANGE. 35 ESSAIMOV = 1 sASSEMBLAG — MODIF. DEPLACE 36 ESsAI80 = 0 jASSEMBLAG E MODIF. SCREENIT 37 ; POUR 80 COLONNES 38 PAG 39 * 40 * COMMANDES MACROS Hi 41 po oo Ie 42 i 43 INCR Mac 44 INC S1 45 BNE NI 46 INC Si+1 47 NI «KK i 48 49 DECR Mac 50 Lox $1 51 BNE ND s2 DEC S141 53 ND DEC $1 34 «<< 55 56 CHPR Mac 57 LDA S§1 se CMP §2 59 LDA Sitt 60 SBC S2+1 61 peag 62 63 TR MAC 64 LDA 51 65 STA $2 66 «KC 6? 68 TROB Mac 6y >>> TR.81382 70 >>> TR.S1415;82+1 1 KK 72 73 TRAX Mac 74 LDA 81 75 76 78 7? 80 a1 82 83 84 85 86 87 8s 90 vi 93 94 9S 9S 97 978 99 100 101 102 103 104 105 106 107 108 109 110 it 112 113 114 115 116 117 118 19 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 LDX Siti STA 52 STX §2+1 aee AD Mac LDA $81 ADC 82 STA 53 coed ADD Mac cLe >>> AD.$1582;83 >>> AD.814+1582+1;83+1 CE sB Mac LDA 51 SBC $2 STA 83 5+ 44 SUB Mac SEC >>> $B.$1;82;83 >>> “SB.§141;52+1;83+1 oa BUMP Mac apc §1 STA $1 BCC BPD INC $141 BPD << FIN PAG * * CONSTANTES * * VALEUR DES TOKENS = $76 = $A2 = $03 = 8A7 = $08 * tA = $B6 = $B7 * * VARIABLES * YSAVI = siF 3 SAUVEGARD E DU REGISTRE Y WNOLFT = $20 sTABLE FEN ETRE DU MONITEUR WNDWOTH = = $21 WNOTOP = $22 WNDBTM = $23 CH = $24 cy = $25 BASL = $28 PROMPT = $33 AIL = $3C A2L = $3E A3L - $40 ASL = $42 LINNUM = $50 TEMPPT = $52 TEMPST = $55 ;POINTE VE 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 1797 180 181 182 183 184 185 186 187 188 189 190 RS TEMP STRING DESCR. INDEX = $5E VARTAB = $69? ARYTAB = $6B STREND = $6D FRETOP = $6F FRESPC = $71 MEMSIZ = $73 j;HIMEM DU BASIC CURLIN oe $75 sNUMERO LI GNE EN COURS 3 (CURLIN¢1 = $FF SI MODE DIRECT) FORPNT = $85 sPOINTEUR SUR UNE VARIABLE DSCLEN = $8F ; LONGUEUR DU DESCRIPTEUR DE LA VAR. ARYPNT = $74 IN $0200 AMPER = — $03F5 OLOCH = $0478 OURCH = $057B OURCY = $05FB KBD = sco00 RDALTCAR = — $COIE ;LIT switc H ALTERNATE CHARACTER SET (APPLE I 1E) KBDSTRB = $CO10 CHRGET = $B1 j;RECUPERE UN CODE D’UNE LIGNE BASIC CHRGOT = $87 31DEM SANS INCR. TXTPTR MEMERR = $D410 3OUT OF ME MORY ERROR ERROR 7 $0412 jAFFICHE E RREUR POINTE PAR X RESTART = $043C sDEPART A CHAUD DU BASIC CLEARC = $D66C 3 COMMANDE CLEAR NEWSTT = $0702 jRETOURNE AU BASIC UNDERR = $097C 3;UNDEF. ST ATEMENT ERROR PRINT = $DADS 3 COMMANDE PRINT FRMNUM = $DD67 sRECUPERE UN NOMBRE FRMEVL = $007B sEVALUE LA FORMULE POINTEE PAR TXTPTR SYNERR = $DEC? 3SYNTAX ER ROR CHKCOM = DEBE sVERIFIE L A PRESENCE D’UNE VIRGULE PTRGET = $OFE3 yTROUVE L* ADRESSE DE LA VARIABLE POINTEE PAR XTPTR TQERR = SEL99 jILLEGAL @ UANTITY ERROR GIVAYF = SE2F2 3 TRANSFORM E A,Y EN FLOTTANT DANS FAC GARBAG = $E484 jEFFECTUE UN FRE(O) 3 ET LONGUEUR DANS ACCU FRESTR = SESFD sCHECK STR ING AND GET POINTER TO 3 STRING IN INDEX AND LENGTH IN ACC U GETBYTC = SE6FS s;SAUTE 1 C ARACTERE ET GETBYT GETBYT = SEGFS jRECUPERE UN NOMBRE (256 GETADR - sE752 j CONVERTI —N ENTIER DANS LINNUM OVERFLOW = sEsDS ; OVERFLOW Pom’s n° 18 ERROR 240 DA INIT-1,CREE-1, OUVRE-1 191 SETFOR = $EB27 3 TRANSFERT »FERME-1 , ECHANGE-1 , DETRUIS-1 FAC DANS VARIABLE TROUVE PAR PTRG 241 DA DEPLACE-1 eT 242 PAG 192 SETTXT rl $FB39 243 PUT WINDOWL ;GESTION F 193 PRNTAX = = F941 ;ENVOIE A, ENETRES Xx _EN HEXA 244 PAG 194 BASCALC = $FBCi ;CALCUL AD 245 PUT WINDOW2 }GESTION F RS LIGNE TEXTE ICHIERS FENETRES 195 COUT = SFDED 246 ERR */%9600 jFIN PROGR 196 MOVE = $FE2C 3DEPLACE ¢ AMME EN DESSOUS $9600? AIL) A (A2L) EN (A4L> 247 FINPRMG = * 197 PAG 198 * 199 * INITIALISE POINTEUR DE L’AMPERSAN o 200 DEPART LDA £$4c ;CODE DE J HCT.OBJ MP 17 eee ae ae eae ae 201 STA AMPER 2* * 202 LDA £<DEBUT 3* HARDCOPY POM’S * 203 STA AMPER+ 4a* * 204 LDA £>DEBUT 5 eexwnxx prerrererterceeteet Ts 205 STA AMPER+2 é 206 JMP INIT 7 CR> = $8D 207 8 208 DEBUTPRM = * mew) = $25 209 FRSTWND DA DEBUTPRM ; ADRESSE D 10 BASL = $28 EBUT PLACE LIBRE POUR FENETRES il 210 12 BASCALC = $FBC1 QL 1 99 II I IE IEE IE ENE IE I IE 13 COUT = $FDED 212 * INTEPRETEUR DE L’AMPERSAND * 14 PSR Merririterrrrerirreretterertr rer ty 1s ORG $0300 214 16 215 * 17 LDA £¢00 216 * RECHERCHE CODE DE LA COMMANDE 18 STA cu 217 DEBUT PHA 19 HO304 Loy £$00 218 JSR CHRGET sAJUSTE TX 20 JSR BASCALC TPTR 21 HO309 LDA BASL),Y 219 PLA 22 CMP £$40 220 LOX £TBCMDADR-TBCMD 23 BCS HO31C 3} FLASHING 221 NEXTCMD CMP TBCMD-1,x ET NORMAL 222 BEQ CMDFOUND 24 CMP £$20 223 DEX 25 BCS HO319 ;SPECIAL C 224 BNE NEXTCMD HARACTERS INVERSE 225 UMP SYNERR 26 CLC ;UPPERCASE LETTERS IN 226 * VERSE 227 CMDFOUND DEX 27 ADC £$C0 228 TxA 28 JMP HO3IC 229 ASL 29 * PROBLEME AVEC UPPERSCASE LETTERS 230 TAX CODE $80-$9F (CODE CONTROLE) 231 LDA TBCMDADR+1 ,x 30 * 232 PHA 31 HO319 cic 233 LDA TBCMDADR,X 32 ADC £480 234 PHA 33 HO3IC JSR COUT 235 RTS ;RETOUR PAR LA COMMAN 34 INY DE 35 cPY £40 236 36 BNE 0309 237 TBCMD DFB UTAB: ,HTAB: ,LET: ,LOAD 37 LDA £CR> :, SAVE: , STORE: ,RECALL: ,HIMEM: 38 JSR COUT 238 DEB 43776" ".70" 57F 7 7B" = 39 INC CV D’,/P* 40 LOA cu 239 TBCMDADR DA = UTAB-1 ,HTAB-1 ,MENU-1, 41 CMP £24 LOAD-1 , SAVE-1, STORE-1 , RECALL~1 ,HIM 42 BNE 0304 EM-1 43 RTS 0328- FD Eé 25 AS 25 C9 18 DO 89FB- AY BA BD F7 03 4C 59 BA HCT.OBJ 0330- 03 60 BA00- 00 8A 48 20 B1 00 48 AZ #300.331 SA08- OF DO 20 BA FO 06 CA DO 8AL0- F8 4C CY DE CA 8A 0A FA 0300- AY 00 85 25 AD 00 20 C1 WINDOW SAIS- BD 31 BA 48 BD 30 BA 48 0308- FB 81 26 C? 40 BO OD Ce *67EE.8A21 BA20- 60 AZ 0310- 20 BO 06 18 6¥ CO 4C IC 0318- 03 18 69 80 20 ED FD cs BIEE- AP 4C 0320- CO 28 DO ES AY BD 20 ED Pom’s n° 18 89FO- 8D FS 03 AY 02 BD Fé 03 ce 29 cice de style avec quatre petits pro- @ 210-230: boucle a la ligne 100 grammes d’animation _ graphique 299 fois sur 300, sinon efface et aléatoire. Trois sont en Basic el nous recommence une fois sur 1200, permettent de bien saisir le déroule- sinon boucle en 60 avec de nou- ment de I'animation. Le quatriéme - veaux points le plus beau - suit la méme démar- 240: mode texte et fin che, mais en assembleur, démontrant . . en chemin comment réutiliser quel- | QUATRE choisit une ligne dans le ques routines mathématiques et gra- quart supérieur gauche de l'écran (60-65) et la reproduit “en miroir” pines = I ROM ngpiett sur les 3 autres quarts (ligne 100). Le principe commun (sauf CARRE) CARRE utilise une seule variable X consiste 4 faire "rebondir” une ligne q et trace 4 chaque itération 4 lignes. sur les limites d'un rectangle. ¢' 4 soit une ligne @ une distance X de Un segment de droite se caractérise chaque bord d'un carré. Par ses extrémités, c’est-a-dire par les HUIT est en assembleur. Certes! coordonnées de 2 points, soit XO, YO Mais il procede du méme esprit et a et X1, Y1 exactement la méme structure De Chaque boucle leur ajoute un dépla- _plus, par rapport 8 QUATRE, il cons- cement horizontal et vertical, positif truit dans chaque quart d'écran une ou négatif (AX, AY et BX, BY), dé- image supplémentaire par retourne- calant une ligne de longueur variable ment sur une diagonale et, a des fins sur l’écran. de symétrie totale, considére I'écran Le “rebond” survient quand une ex- comme étant carré avant de I’étirer trémité de la ligne atteint la limite du aux dimensions de 280 * 192 qui rectangle alloué, ceci électivement sont celles de la page graphique de pour le sens de déplacement rendant ce cher Apple. (Notons que le rap- le point “hors-limites” (d’ot modifi port 280/192 peut se réduire A cation de rotation). 35/24, valeurs apparaissant dans le En commun également le tirage au programme.) sort par RND(1) des extrémités de la Graphiques aléatoires Thierry Han de vous propose un intéressant exer- qu'une touche ait été frappée droite, des déplacements et de HCO- Le programme commence done par LOR (0a 4). fabriquer le nombre flottant stocké dans F sur cinq octets valant 35/24; Suivons pas a pas le programme vous le verrez réutilisé pour ajuster LIGNES : les abscisses. © 50: haute résolution page 2 Vous trouverez ci-apres une breve © 60-65 : tirage des coordonnées de description des principales adresses 2 points et routines utilisées ; e@ 70-75: tirage de leurs déplace- ments @ PAGE] ou $C054 sélectionne la © 80. stockage de leur valeur abso- page 1 (texte ou graphique) g& lue; servira a tester le dépasse- e@ TEXTE ou $C051 sélectionne le ment mode texte (page 1 ou 2) ®@ 85: on démarre en blanc ® CLAV ou $CO000, si une touche a © 100: tracage de la ligne définie en été frappée, est >= $80 et 60-65 contient le code de la touche frap- © 110; ajout des déplacements (po- sitifs ou _négatifs) © 120-150: si un point doit se re- pee STRB ou $C010 rend $CO00 < $80 trouver hors-limite a l'itération sui- ®@ HGR2 en $F3D8 identique au vante, alors inversion du déplace- Basic et de méme pour RND ment et nouvelle couleur ($EFAE) © 200; teste le clavier: une ouch ©@ HCOLOR en $F6FO. appelé avec a été frappée si PEEK(-16384) > le code (0..7) de la couleur dans 127 ($C000 >= $80) X, ajuste l'octet $E4 utilisé par Si oui: lit le caractére frappé HPLOT et HLINE, Le point d’en- remet le clavier en attente (adresse trée habituel, en $F6EC, vérifie -16368 = $C010) que X< 8 si "E" (CHR$(197)) : efface et re- © HPLOT en $F457 trace un point: commence Tabscisse (0..279) est codée dans si ESC (CHR$(155)) : fin 2 octets, on charge l'octet haut si quelconque sauf SPACE: nou- dans Y, l'octet bas dans X et I’or- veaux points donnée dans A avant d’appeler si SPACE (CHR$(160)): attend HPLOT qe 30 e HLINE en $F53A comme en BASIC, octet haut de l'abscisse dans X, bas dans A et ordonnée dans Y Un nombre réel est représenté par Applesoft sur 5 octets (forme compactée) ou, en page 0 pour étre “mouliné”, étendu sur 6 dans FAC ($9D-A2) ou ARG ($A5-AA). @ YTOFAC alias SGNFLT ou $£301 convertit un entier de 0..255 chargé en Y en réel dans FAC © INTTOFAC en $E2F2 convertit un entier (-32768..+32767) chargé en A (partie basse) et Y (partie haute) en réel dans FAC FACTOINT en $E10C aurait pu faire l'inverse. Eh bien non! Il tronque, si possible, FAC en entier laissé dans 2 octets de FAC ; $A0 et $Al FACTOMEM en $EB2B compacte le réel dans FAC (6 octets) et le transfére a l'adresse pointée par Y (partie haute) et X (partie basse) FACTOARG en $£B63 transfére FAC dans ARG @ FMULTM en $E97F transfére un réel en mémoire pointé par Y (adresse haute) et A (adresse basse) dans ARG et appelle FMULT1 FMULT1 en $E982 multiplie FAC par ARG et laisse le résultat dans PAC - cette routine “prise en mar- che” demande |'exécution préala- ble du sous-programme GETSGN (a la fin de HUIT) FDIV en $EA69 divise ARG par FAC et laisse le résultat dans FAC - nécessite GETSGN (méme re- marque que pour FMULT1) @ INTL et INTH sont les deux octets de FAC ot FACTOINT laisse son résultat Nous savons charger un nombre dans FAC, multiplier, diviser, tron- quer, appeler RND et les routines graphiques. HUIT calcule 35/24, choisit ses points, ses vitesses de dé- placement (1 a 4) et ses couleurs de fagon identique aux programmes Basic, lit le clavier et boucle de fagon analogue, a Pom’s n° 18 Programme QUATRE 120 HPLOT 0,X TO 191,X1 HPLOT 0,X + 1 To sXe 1 10 REM QUATRE 130 HPLOT 0,190 - X TO 191,190 - X: HPLO mo eRe T-0,191 -X TO 191,191 - x = 1 * 1¥o = RAD iy @ 200 IF PEEK ¢ - 16384) < 128 THEN 70 5X1 = WD {> w1SsivE om Be cia woo | 210K PEEK < --18984)4 POKE — 16240,0 70 AY = RND <1) * 2+ 1:AX = RND (1) # 197 OTe 903 ON X = 195 6 a4 9 ON X ¢ >» 160 GOTO 70 sO a WN 1d we oe cee Re cox oe | 220 16384,128: POKE - 16368,0: ae | 80 GX = ABS (AX):GY = ABS (AY):RX = AB| 230 S (BX) :RY = ABS (BY) 85 HCOLOR= 3 100 HPLOT X0,YO TO X1,Y1: HPLOT 279 - xO sYO TO 279 - X1,Y1: HPLOT X0,191 - Programme LIGNES YO TO X1,191 - Yi: HPLOT 279 - xo s191 - YO TO 279 - X1,191 - YI 26 REL STONES PRAMS, FES GEEUO S VO. i# AYARL SUKY 8) oo kom. GRO! CIN ow BpsWVo ~ IO Cia: we ae ? seen ee Ree 87 eNO | 65 Xt m=, Rw G1) | 2ze;vi = IRND C4d’ % fe eee) Be acc aee” io eee 70 AY . RND (1) * 2 + 1:AX = RND (1) * 5: HSE: TEA Sa Peocake Se ki | 8 BY =, BNO CD #24 1X = AND CLD ae | iso; IF a Set one? be ay ot Byes 80 QX = ABS (AX) :QGY = ABS (AY):RX = AB 200 IF PEEK ¢ - 16384) > 127 THEN X = es ncolens a ee Ee PEEK ( - 16384): POKE - 16368,0: ON X = 197 GOTO SO: ON X = 155 GoT | 190 HPLOT x0,v0 TO X1,yY1 © 240: ONX < >» 160 GOTO 60; WaIT | 110 x0 mone a ni = Yi + can ge: WRT ERATE cottele™ | aco ae USS alt an BY 5 ay — we sno 220 IF RNO (0) * 1200 < 1 THEN 50 son ee ee ee A. BS 230 GOTO 60 130 IF YO < Q@Y OR YO > 191 - Q@Y THEN AY 240 TEXT : END = - AY: HCOLOR= RND (1) * 4 140 IF X1 ¢ RX OR X1 > 279 - RX THEN BX = = 8X: HCOLOR= RND (i) * 4 Programme CARRE 150 IF Y1 < RY OR Y1 > 191 - RY THEN BY = = BY: HCOLOR= RND (1) * 4 . 10 REM CARRE 200 IF PEEK ¢ - 16384) > 127 THEN X = 50 HGR2 PEEK ( - 16384): POKE - 16368,0: B 60 HCOLOR= 3: GOTO 80 ON X = 197 GOTO SO: ON X = 155 GOT 70 HCOLOR= RND (1) * 4 O 240: ON X <¢ > 160 GOTO 60: WAIT 80 X = INT ¢ RND (1) * 46) * 2 ~ 16384,128: POKE - 16368,0 | 100 HPLOT X,0 TO X,191: HPLOT X + 1,0 TO 210 IF RND (1) # 300 > 1 THEN 100 X + 1,191 220 IF RND (0) * 1200 < 1 THEN SO 110 HPLOT 190 - X,0 TO 190 - x,191: HPLO| 230 GoTo so T 191 = X,0 TO 191 - X,191 240 TEXT : END ' Source Big Mac 18 YTOFAC EGU e301 +YREG = 19 FACTOINT EQU $E10C INTCFA Programme HUIT.S Sis INTE i 20 RND EQU sEFAE ;RNDCFA TTT Te Tr Ti Tir r tT Terr rrr re rr rrrry c>) => FAC 2 *GRAPHISMES ALEATOIRES 21 FACTOARG EQU $EB63 FAC => 3 *PAR THIERRY HAN ARG 4 *DATE: 21/7784 22 FMULTM EQU SE97F jMEM <Y¥ S ARKH RRNH RRR RRR RAR RARER ERR RRR yA) => ARG; ARG*FAC => FAC Ca 23 FMULT1 EQU SE982 sARG#FA 7 PAGE! QU $co54 C => FAC (NECESSITE GETSGN) 8 TEXTE EGU $CO5I 24 FDIV EQU SEAG? sARG/FA 9 CLAV EQU $cooo C => FAC (NECESSITE GETSGN) 10 STRB €Qu $coio0 25 INTTOFAC EQU SE2F2 3Y/A => 41; FAC 12 HGR2 EQU $F3D8 26 ; 13 HCOLOR EQU $FéFO 27 INTL EQU sAl 14 HPLOT EQU $F457 28 INTH EQU SAD 15 HLINE EQU $F534 29 ; 16 ; 30 ORG sF00 jZONE D 17 FACTOMEM EQU $E828 ;FAC => E STOCKAGE MEM CY ,X) 31 xo DFS 1 CC Pom's n° 18 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 a7 48 49 50 Si s2 53 54 ss 56 57 ss Ss? 60 61 62 63 64 65 66 67 68 6? 70 rat 72 73 74 75 76 77 738 79 80 81 82 83 84 85 B6 87 88 a9 90 vl 92 93 4 9S 96 97 93 99 100 101 102 yo DFS x1 OFS v1 DFS xxo, OFS yYYo DFS XX1 DFS YY DFS AX OFS AY DFS Bx DFS BY DFS Qx DFS YREG DFS XREG OFS F DFS NTE 35/24 (1 ee eer oer our arene arerres ; ORG $803 3F=35/24 LDY #35 JSR YTOFAC JSR FACTOARG LDY #24 JSR YTOFAC JSR GETSGN JSR FDIV LOX 4F LOY /F JSR FACTOMEM ;OEBUT DU PROGRAMME INIT =3 LOX #3 JSR HCOLOR JSR HGR2 i sCHOIX DES COORDONNEES (0-91) 3 TIRAGE JSR RNDP2Z STX xO JSR RND92 STX YO JSR RND?2 STX X1 JSR RND?2 STX Y1 CHOIX DES VITESSES (1-4) JSR RNDZ STX AX JSR RND3 STX AY JSR RNOS STX BX JSR RND3 STX BY VALEURS ABSOLUES LOX #0 cic LDA AX ,x BPL ABS.NEXT EOR #$FF ION SIGNE ADC #1 ABS.NEXT STA QXx,x INX CPX 44 BNE ABS ABS ;CONSTA ;HCOLOR sINVERS 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 1496 147 1498 149 150 151 152 153 154 155 156 157 158 1s? 160 161 162 163 164 165 166 167 j;PLOTS DES 8 SEGMENTS TRACES COINS JSR RETOURNE JSR TRACES TQUES JSR TRACES JSR RETOURNE EN PLACE 3 yDEPLACEMENT DES POINTS i LOX #0 LDA X0,% cL ADC AX,X DEPL ON STA X0,X INX CPx 44 BNE DEPL TEST DE DEPASSEMENT LOX #0 LOA #975 SEC SBC QX,x CMP x0 ,x BCC INVERSE TEST LDA x0,x CMP QX,x BCS T.NEXT LOA #0 SEC SBC AX,X E SIGNE STA AX,X STX XREG JSR NEWCOL LDX XREG T.NEXT INX CPX #4 BNE TEST INVERSE EST CLAVIER i LOA CLAV BPL DO BIT STRB CMP #°E" BNE ESCAPE JMP INIT CMP #$98 RET.1 ESCAPE 2 BEQ FIN CMP #%A0 BNE NEWDIR WAIT LDA CLAY BPL WAIT LDA STRB ;QUATRE ;SYMETR ;PLOTS ;REMISE sADDITI 3X0>95- 7X0>AX ; INVERS sRIEN ;EFFACE ; = Esc ;ESPACE sAUTRE jATTENT 331 RND(1>*512=0, NOUVEAUX POINTS iota) LDY #1 JSR YTOFAC JSR RND 32 Pom's n° 18 168 169 170 171 172 173 174 178 176 177 178 179 180 181 182 183 184 185 186 187 198 1897 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 2097 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 2297 230 231 232 233 JSR FACTOARG LDA #2 LOY #0 JSR INTTOFAC JSR FMULT JSR FACTOINT LDA INTL BEQ NEWDIR UVEAU JMP TRACES OUCLE i 3SI RND(O)*2048¢1, EFFACE NEWOIR LOY #0 JSR YTOFAC JSR RND JSR FACTOARG LDA #8 LDY #0 JSR INTTOFAC JSR FMULT JSR FACTOINT LDA INTL BEG RET.I IT <(EFFACE> JSR NEWCOL QUVELLE COULEUR JMP TIRAGE UX POINTS FIN BIT BIT RTS TEXTE PAGEL TRACES AUCHE LDA x0 STA Xx0 LDA YO STA YYO LDA X1 STA XX1 LDA YI STA YY1 JSR TRACE SEC ROITE LDA #171 sBc x0 STA Xx0 LOA YO STA YYO LDA #191 sBc x1 STA XxX1 LDA YI STA YYt JSR TRACE SEC UCHE LOA xO STA xXxOoO LDA #191 sec YO STA YYO LDA X1 STA Xx! LOA #191 SBC Y1 Pom’s n° 18 3512 3=0, NO 700, B 32048 3=0, IN 3020, N ;NOUVEA ;HAUT-G ;BAS-GA 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 264 267 268 267 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 2897 290 291 292 293 294 295 296 297 298 299 300 301 302 303 STA JSR YY1 TRACE sec ;BAS-OR OITE LDA #191 SBC xo STA XxO0 Loa #191 spc Yo STA YYO LDA #191 SBC x1 STA XXx1 #191 sec Yi STA YY LDY xxa JSR MULTF :4F LOA YYO iv LOX INTL }X-LSB LOY INTH }X-MSB JSR HPLOT LDY xx1 JSR MULTF LOA INTL jX-LSB LDX INTH ;X-MSB LDY YY1 sv JMP HLINE 4F RETOURNE LDA x0 ION X-Y LOX YO STA YO STX xO LDA X1 LOx Yt STA YI STX XI RTS ;INVERS i 3Y=INTCRNOC 1) #92) RND92 LDY #92 BNE RAND sY=INTCRND(1) #3) 41 RND3 LDY #3 JSR RAND INX RTS 3 Y=INTCRND¢ 1) #7) RAND STY YREG LOY #1 JSR YTOFAC JSR RND sRNDC1) JSR LDY JSR JSR FACTOARG YREG YTOFAC FMULT sRNDC 1) ay JSR LDXx RTS FACTOINT INTL sFAC=INT(Y #357249) JSR YTOFAC LDA #F Lov /F $ MULTF 335724 304 JSR FMULTM 312 STA SAB 305 JMP FACTOINT 313 LDA €9D 306 ; 314 RTS 307 FMULT JSR GETSGN sNECESS 315 3 AIRE POUR FMULT1 314 NEWCOL LDY #4 308 JMP FMULTI 317 JSR RAND 309 ; 318 JMP HCOLOR 310 GETSGN LOR AA B19 3; Bil EOR $A2 320 END HUIT O8AB- 19 0A AE 11 OF EB EO 04 0968- 8D 06 OF AP BF ED 03 OF 0880- DO D4 AD 00 CO 10 14 2c 0970- 8D 07 OF 20 97 OF 38 AF #803.A2Z0 osB8- 10 CO CP CS DO 03 4c 1D 0978- BF ED 00 UF BD 04 OF AF 0803- Ad 23 20 01 £3 O8CO- 06 CP 9B FO 4F CF AO DO O980- BF ED 01 OF 8D 05 OF Ag 0908- 20 43 EB AO 18 20 01 ES osce- 28 AD 00 CO 10 FB AD 10 0988- BF ED 02 OF 8D 06 OF AP 0810- 20 10 0A 20 69 EA AZ 12 oep0- CO AD O1 20 01 E3 20 AE 0990- BF ED 03 OF 8D 07 OF

Showing the first 100000 of 275767 characters.

mp.ls